Во все чипы AT91SAM7X128, AT91SAM7X256, AT91SAM7X512 на заводе встроен бутлоадер SAM-BA, прошитый в нестираемое ПЗУ (ROM). Этот бутлоадер активируется, когда FLASH-память чипа стерта. Бутлоадер SAM-BA может записать программу пользователя (а также имеет много возможностей по манипулированию памятью чипа) через различные интерфейсы чипа (подробности см. в даташите на микроконтроллер). При работе с макетной платой AT91SAM7X наибольший интерес представляет работа бутлоадера через интерфейс USB, так как такое подключение использовать проще всего.
Здесь коротко рассмотрена процедура быстрого старта использования бутлоадера SAM-BA с макетной платой AT91SAM7X. Итак, процесс использования бутлоадера по шагам (на операционной системе Windows XP).
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 должно быть отключено.
Напомню, что память чипа можно стереть с помощью перемычки J4 ERASE (для этого перемычку нужно установить на 10 секунд при подключенном питании).
Если макетная плата была подключена к компьютеру по USB первый раз, то обнаружится новое устройство с VID 0x03EB и PID 0x6124, и система запросит драйвер.
После установки драйвера в списке Диспетчера Устройств появится новое устройство atm6124.Sys ATMEL AT91xxxxx Test Board (см. скриншот).
3. Для программирования памяти через бутлоадер Atmel понадобится программа AT91-ISP.exe (v1.12 prev release или более свежая), можно скачать с сайта Atmel, или см. Ссылки [1]. Запустите установщик Install_AT91-ISP_v1.12.exe, и после нехитрой процедуры установки у Вас появится необходимый для программирования набор утилит.
[Утилита SAM-PROG]
Самый простой интерфейс программирования предоставляет программа SAM-PROG v2.4. Кнопкой Browse нужно выбрать двоичный файл прошиваемого firmware, а кнопкой Write Flash файл можно записать в память чипа. После окончания записи и переподключения питания сразу начнет работать записанная программа.
[Утилита SAM-BA]
Намного больше возможностей по манипуляции с памятью чипа предоставляет программа SAM-BA v2.8. Кроме того, сейчас Atmel совсем забросила поддержку SAM-Prog, и в дистрибутиве SAM-BA программа SAM-PROG больше не поставляется.
После запуска программы SAM-BA нужно выбрать тип подключения \usb\ARM0, указать тип платы AT91SAM7X512-EK (на макетной плате AT91SAM7X обычно установлен чип AT91SAM7X512) и нажать кнопку Connect.
Примечание: к плате можно подключиться не только через 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).
[Автоматизация операций 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. |
Комментарии
microsin: да, именно так, все верно.
RSS лента комментариев этой записи