SAM-BA boot agent предназначен для загрузки программного обеспечения через стандартные интерфейсы (USB, CAN, RS-232). Такая возможность очень удобна для обновления программного обеспечения (firmware) в готовом устройстве.
[Документация]
1. SAM Boot Assistant (SAM-BA) User Guide site:atmel.com. 2. Extending SAM-BA Programming Capabilities site:atmel.com. 3. AT91 In-system Programmer (ISP) site:atmel.com.
[Установка]
1. Скачайте AT91-ISP.exe [1]. Я ставил AT91-ISP.exe v1.12 current release. Установка по умолчанию происходит в папку c:\Program Files\ATMEL Corporation\AT91-ISP v1.12. При загрузке установится драйвер (Касперский предупредил об этом). Если потребуется перезагрузка, то перезагрузите систему. 2. Подключите макетную плату AT91SAM7X [2] (или макетные платы Atmel AT91SAM7X-EK или Olimex SAM7-EX256) через USB. Новое устройство обнаружится, установится драйвер. Устройство появляется в диспетчере устройств как Universal Serial Bus controllers\atm6124.Sys ATMEL AT91xxxxx Test Board:
3. Запустите программу SAM-BA v2.8 (ярлычок на рабочем столе), выберите соединение "\usb\ARM0" и тип платы "AT91SAM7X256-EK", и нажмите кнопку Connect:
[Проверка работы]
Все готово, теперь остается попробовать, как работает. Испытывать будем на скомпилированном в двоичный файл проекте из примеров IAR - getting-started-project (полный путь до файла проекта c: \ Program Files \ IAR Systems \ Embedded Workbench 5.0 Evaluation \ ARM \ examples \ Atmel \ at91sam7x-ek \ getting-started-project \ getting-started-project.eww, прошивка после появится здесь - c:\Program Files\IAR Systems\Embedded Workbench 5.0 Evaluation\ARM\examples\Atmel\at91sam7x-ek\getting-started-project\ewp\at91sam7x256_flash\Exe\at91sam7x256_flash.bin). Подключите макетную плату через USB (если это макетная плата AT91SAM7X, то перемычка J2 должна стоять в положении 1-2 USB PWR). Запустите программу SAM-PROG v2.4, выберите по кнопке Browse файл at91sam7x256_flash.bin, и нажмите кнопку Write.
Чтобы процесс записи индицировался, можно выбрать "PIO indicator for successful programming" - для нашей платы PIOB 21 будет соответствовать светодиоду на макетной плате.
После записи проверьте работу прошивки. Для этого нужно соединить прямым COM-портовым кабелем DB9-мама/DB9-папа (в "прямом" кабеле на обеих концах соединены ножки с одинаковыми номерами - контакт 1 на "маме" соединен с контактом 1 на папе и т. д.). Потом запустите любую консольную программу, работающую с COM-портом, настройте её на параметры порта 115200 бит/сек, 8 бит данных, без четности, 1 стоп-бит, переподключите разъем USB (чтобы сбросить микроконтроллер на макетной плате). После этого в терминальной программе будет видно, что прошивка выводит в порт DBGU:
[Восстановление загрузчика]
Запрограммированная таким образом плата при включении питания всегда будет выполнять пользовательскую программу, загрузчик при этом не работает. Вернуть макетную плату в исходное состояние (чтобы снова был доступен USB-загрузчик SAM-BA, и можно было записать новое firmware в память микроконтроллера) можно следующим способом (описано в файле помощи "C:\Program Files\ATMEL Corporation\AT91-ISP v1.12\SAM-PROG v2.4\Documentation\at91sam-prog.hlp"):
- Отключите питание от макетной платы (в нашем случае просто выдернем кабель USB, подключенный к ней). - Замкните перемычку J4 ERASE. - Снова подключите питание (воткните кабель USB). - Подождите 10 секунд. - Отключим питание от макетной платы (выдернем кабель USB). - Уберите перемычку J4 ERASE. - Снова подключите питание (воткните кабель USB). Макетная плата готова к новой загрузке, загрузчик SAM-BA восстановлен.
[Почему не работает загрузчик в микроконтроллере AT91SAM7X512?]
"... я в растерянности, скачал утилиту SAM-BA для программирования. Обновил драйвер по инструкции, а утилита SAM-BA не видит контроллер. Когда запускаю утилиту, там можно выбрать только порт com1, но это вовсе не загрузчик, и утилита SAM-BA не работает..."
Наверняка утилита SAM-BA не работает потому, что не видит устройства, в котором работает загрузчик. Это бывает в том случае, если память микроконтроллера не стерта.
Когда Вы подключали не стертую плату к компьютеру, то в микроконтроллере AT91SAM7X512 запускается не загрузчик SAM-BA, а записанная в память FLASH старая программа. Ваша цель - эту программу стереть, и записать туда новую с помощью загрузчика SAM-BA. Чтобы запустился загрузчик SAM-BA, нужно сначала стереть память микроконтроллера по стандартной процедуре, которая описана в документации на микроконтроллер. На плате AT91SAM7X стирание памяти микроконтроллера делается с помощью установки перемычки J4 ERASE, и включения питания на 10 секунд с установленной перемычкой. После этой процедуры перемычку нужно снять, и передернуть питание у платы (переподключить плату к USB). Далее чистый микроконтроллер готов к загрузке новой прошивки с помощью утилиты SAM-BA.
[Ссылки]
1. AT91 ISP/SAM-BA® site:atmel.com. 2. Макетная плата AT91SAM7X. 3. AT91SAM7X: бутлоадер SAM-BA от компании Atmel. 4. getting-started-project - скомпилированная прошивка at91sam7x256_flash.bin и проект с исходными кодами. |