Программирование ARM AT91SAM7X: бутлоадер SAM-BA от компании Atmel Thu, March 28 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

AT91SAM7X: бутлоадер SAM-BA от компании Atmel Печать
Добавил(а) microsin   

Во все чипы AT91SAM7X128, AT91SAM7X256, AT91SAM7X512 на заводе встроен бутлоадер SAM-BA, прошитый в нестираемое ПЗУ (ROM). Этот бутлоадер активируется, когда FLASH-память чипа стерта. Бутлоадер SAM-BA может записать программу пользователя (а также имеет много возможностей по манипулированию памятью чипа) через различные интерфейсы чипа (подробности см. в даташите на микроконтроллер). При работе с макетной платой AT91SAM7X наибольший интерес представляет работа бутлоадера через интерфейс USB, так как такое подключение использовать проще всего.

Здесь коротко рассмотрена процедура быстрого старта использования бутлоадера SAM-BA с макетной платой AT91SAM7X. Итак, процесс использования бутлоадера по шагам (на операционной системе Windows XP).

AT91SAM7X-kit-small-IMG_8396.jpg

1. Сначала нужно установить (если он не был ранее установлен) драйвер SAM-BA. Драйвер можно найти на страничке Evaluation Kit for SAM7X сайта Atmel, см. SAM-BA 2.10 for Windows (XP, Vista, Seven editions) или что-то подобное, можно скачать с сайта Atmel, или см. Ссылки [1]. После установки (для этого нужно запустить sam-ba_2.10.exe) появится папка C:\Program Files\ATMEL Corporation\SAM-BA v2.10, и возможно понадобится перезагрузка. Интересующие нас драйвера находятся в папке "C:\Program Files\ATMEL Corporation\SAM-BA v2.10\drv". Этот путь нужно скормить мастеру установки нового оборудования, когда первый раз подключена плата AT91SAM7X по USB, если мастер сам по какой-то причине автоматически не найдет нужный драйвер.

2. Подключаем чистую плату (у которой стерта программа в чипе) через USB, при этом перемычка J2 USB/EXT должна стоять в положении 1-2 (питание платы через USB), внешнее питание с джека J1 должно быть отключено.

AT91SAM7X-power-selection.PNG

Напомню, что память чипа можно стереть с помощью перемычки J4 ERASE (для этого перемычку нужно установить на 10 секунд при подключенном питании).

AT91SAM7X-erase-switch.PNG

Если макетная плата была подключена к компьютеру по USB первый раз, то обнаружится новое устройство с VID 0x03EB и PID 0x6124, и система запросит драйвер.

AT91SAM7X-bootloader-Atmel01.PNG AT91SAM7X-bootloader-Atmel02.PNG AT91SAM7X-bootloader-Atmel03.PNG

После установки драйвера в списке Диспетчера Устройств появится новое устройство atm6124.Sys ATMEL AT91xxxxx Test Board (см. скриншот).

AT91SAM7X-bootloader-Atmel04.PNG

3. Для программирования памяти через бутлоадер Atmel понадобится программа AT91-ISP.exe (v1.12 prev release или более свежая), можно скачать с сайта Atmel, или см. Ссылки [1]. Запустите установщик Install_AT91-ISP_v1.12.exe, и после нехитрой процедуры установки у Вас появится необходимый для программирования набор утилит.

AT91SAM7X-bootloader-Atmel05.PNG

[Утилита SAM-PROG]

Самый простой интерфейс программирования предоставляет программа SAM-PROG v2.4. Кнопкой Browse нужно выбрать двоичный файл прошиваемого firmware, а кнопкой Write Flash файл можно записать в память чипа. После окончания записи и переподключения питания сразу начнет работать записанная программа.

AT91SAM7X-bootloader-Atmel06.PNG

[Утилита SAM-BA]

Намного больше возможностей по манипуляции с памятью чипа предоставляет программа SAM-BA v2.8. Кроме того, сейчас Atmel совсем забросила поддержку SAM-Prog, и в дистрибутиве SAM-BA программа SAM-PROG больше не поставляется.

После запуска программы SAM-BA нужно выбрать тип подключения \usb\ARM0, указать тип платы AT91SAM7X512-EK (на макетной плате AT91SAM7X обычно установлен чип AT91SAM7X512) и нажать кнопку Connect.

AT91SAM7X-bootloader-Atmel07.PNG

Примечание: к плате можно подключиться не только через USB, но и через JTAG (например, если у Вас в наличии адаптер J-Link), в этом случае нужно выбрать соединение \jlink\ARM0. Также можно подключиться через обычный COM-порт, для этого выберите его имя, например COM1.

Коротко о возможностях программы SAM-BA:

- можно писать/читать память FLASH чипа (Flash -> Download / Upload File).
- можно писать/читать память SRAM чипа (SRAM -> Download / Upload File).
- сравнить файл с содержимым памяти.
- можно запускать набор предопределенных действий - установить загрузку с FLASH (GPNVM2), установить загрузку с ROM (GPNVM2), запретить/разрешить детектор пропадания питания (GPNVM0), запретить/разрешить сброс чипа при срабатывании детектора пропадания питания (GPNVM1), разрешить доступ к FLASH, разрешить применение бита защиты, стереть всю память (GPNVM0..GPNVM2 здесь означают имена соответствующих энергонезависимых фьюзов, все операции делаются через Flash -> Scripts -> выбрать тип действия из выпадающего списка -> Execute).
- можно просмотреть в виде дампа содержимое памяти по указанному адресу (AT91SAM7X256 Memory Display -> Start Address/Size in byte(s) -> Refresh).
- можно выполнить набор некоторых действий и записать их в виде скрипта, который потом можно запустить (меню Script File).

AT91SAM7X-bootloader-Atmel08.PNG

[Автоматизация операций SAM-BA с помощью TCL-скриптов]

Очень удобно повторяющиеся операции программировать с помощью TCL-скриптов. Это позволит упростить рутинные действия по перепрошивке большого количества устройств. Скрипты выполняются из командной строки SAM-BA, при этом GUI-интерфейс не запускается. Пример TCL-скрипта:

FLASH::EraseAll
send_file {Flash} "bin/myfirmware.bin" 0x100000 0

В этом скрипте задано полностью очистить память чипа, и затем записать в память FLASH содержимое двоичного файла myfirmware.bin начиная с адреса 0x100000 ().

Сам скрипт на выполнение запускается следующей командной строкой (можно прописать в BAT-файле):

"%ProgramFiles(x86)%\Atmel\sam-ba_2.13\sam-ba.exe" \jlink\ARM0 at91sam7x256-ek program.tcl

В этой командной строке указано подключиться к прошиваемой плате через интерфейс JTAG (\jlink\ARM0), выбрать тип платы at91sam7x256-ek, и запустить на выполнение TCL-скрипт program.tcl. В случае успешного программирования утилита sam-ba.exe не выдаст никаких сообщений, просто завершит свою работу.

TCL-команды можно подсмотреть в готовых скриптах (см. в каталоге установки SAM-BA файлы с расширением *.tcl), но проще всего команды взять из лога программы SAM-BA. Вот пример такого лога (команды TCL выделены жирным шрифтом).

SAM-BA console display active (Tcl8.5.9 / Tk8.5.9)
(sam-ba_2.13) 1 % 
(sam-ba_2.13) 1 % 
FLASH::EraseAll
-I- GENERIC::EraseAll
(sam-ba_2.13) 1 % 
send_file {Flash} "C:/temp/firmware.bin" 0x100000 0
-I- Send File C:/temp/firmware.bin at address 0x100000
 first_sector 0 last_sector 12 
-I-     Writing: 0xD400 bytes at 0x0 (buffer addr : 0x202A24)
-I-     0xD400 bytes written by applet
-I-     Writing: 0xD400 bytes at 0xD400 (buffer addr : 0x202A24)
-I-     0xD400 bytes written by applet
-I-     Writing: 0xD400 bytes at 0x1A800 (buffer addr : 0x202A24)
-I-     0xD400 bytes written by applet
-I-     Writing: 0xB402 bytes at 0x27C00 (buffer addr : 0x202A24)
-I-     0xB402 bytes written by applet
Do not lock 
(sam-ba_2.13) 1 %

[Ссылки]

1. SAM-BA 2.10 for Windows (XP, Vista, Seven editions), AT91-ISP.exe (v1.12 prev release).
2. Макетная плата AT91SAM7X.
3. SAM-BA boot agent.

 

Комментарии  

 
0 #1 Николай 30.07.2011 22:03
То есть все операции по перепрошивке можно делать, если платка подключена к компьютеру через USB, так?

microsin: да, именно так, все верно.
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Top of Page