AVR282: обновление firmware через USB Печать
Добавил(а) microsin   

Перевод даташита "AVR282: USB Firmware Upgrade for AT90USB" [1], посвященного обновлению программного обеспечения микроконтроллера (firmware) для AVR с аппаратной поддержкой USB (так называемое семейство AVR USB, поделенное на серии. Многие представители этого семейства имеют префикс AT90USB в наименовании чипа).

Способ обновления firmware через USB, предлагаемый Atmel, обладает следующими возможностями:

• Поддерживается программой Atmel FLIP на всех операционных системах Microsoft Windows®, начиная с Windows® 98SE.
• Версия FLIP 3.2.1 и все более поздние поддерживают работу под Linux.
• Бутлоадер USB по умолчанию прописан в память чипа на заводе Atmel.
• Программирование в системе (In-System programming) через интерфейс USB не требует дополнительного внешнего аппаратного обеспечения.
• Скорость обновления firmware до 32 килобайт/сек.

Цель этого документа - показать, как нужно обновлять программное обеспечение микроконтроллера (firmware upgrade) для чипов семейства AT90USB, используя его встроенный бутлоадер и программу-утилиту FLIP.

[2. Описание]

Чипы серий AVR USB, название которых начинается с AT90USB, поставляются с фабрики Atmel с прошитым в память FLASH (память программ) бутлоадером (USB bootloader). Этот бутлоадер позволяет программировать области памяти FLASH и EEPROM через интерфейс USB.

Для того, чтобы выполнять обновление firmware, компания Atmel разработала бесплатную программу для компьютера, которую почему-то назвала "FLIP". Эта программа обладает достаточной гибкостью, чтобы позволить Вам обновлять firmware микроконтроллеров Atmel прямо в своем рабочем окружении (т. е. в составе готового электронного устройства), и при этом не требуется никакое дополнительное аппаратное обеспечения, кроме стандартного шнура USB (отдельный программатор не нужен).

Последний релиз утилиты FLIP предоставляет следующие возможности:

• Может осуществлять "программирование в системе" (In-System Programming) через интерфейсы RS232, USB или CAN (в зависимости от того, какие интерфейсы поддерживает модель микроконтроллера и Ваше конечное электронное устройство).
• Может использоваться как интуитивно понятная программа с графическим интерфейсом, а также может быть запущена из консоли команд Windows (имеется в виду программа batchisp.exe [2], входящая в пакет FLIP), из интегрированной среды разработки (IDE AVR Studio), или даже из Вашей собственноручно написанной программы.
• Позволяет редактировать буфер записываемых данных: заполнение байтом (fill), поиск по содержимому (search), копирование (copy), очистка (reset), изменение (modify), запуск программы по указанному адресу (goto address).
• Управление памятью целевого микроконтроллера (target device): очистка (erase), проверка на очистку (blank check), программирование содержимого памяти (program), проверка соответствия памяти буферу (verify), чтение в буфер (read), запись и чтение байт, управляющих уровнем защиты, и чтение и запись других специальных байт.
• Возможность автоматизации процесса программирования устройств (возможно только с помощью утилиты batchisp [2]).
• Запуск бутлоадера (срабатывание условия ISP hardware condition) может быть осуществлен программно, из кода firmware микроконтроллера.

AVR282-USB-Device-Firmware-Upgrade

[3. На каком железе это работает (Hardware Requirements)]

1. Любая отладочная плата AVR USB - например ATSTK525/STK526, AT90USBKey, AVR-USB162, AVR-USB32U4, любой кит с микроконтроллером семейства AT90USB (это может быть даже Ваше собственное устройство с чипом AVR USB).
2. Микроконтроллер семейства AT90USB (при этом необязательно в названии чипа должен быть префикс AT90USB, есть и другие микроконтроллеры, которые поддерживают FLIP через USB, например ATmega32U4).
3. Обычный стандартный кабель USB (например, с коннекторами Type A и Mini B), который подходит к Вашей плате.
4. Компьютер PC, работающий под управлением операционной системы Windows с поддержкой USB (98SE, ME, 2000, XP).

[4. Требуемое программное обеспечение (Software Requirement)]

Для перепрограммирования памяти чипа через USB бутлоадер Atmel требуется программа FLIP [3] (утилита Device Firmware Upgrade) версии 3.2.0 или более свежей.

[5. Как использовать бутлоадер]

AVR282-Bootloader-Process-fig51

Рис. 5-1. Алгоритм запуска бутлоадера.

Как показано на этом рисунке, чипы серии AT90USB имеют новый бит фьюзов (fuse bit), если сравнивать со стандартными чипами AVR. Этот фьюз называется HWBE (расшифровывается HardWare Button Enable, т. е. разрешение работы аппаратной кнопки запуска бутлоадера), и по умолчанию он разрешен. Этот новый fuse bit добавлен для того, чтобы добавить поддержку новой функции специального вывода микроконтроллера: HWB. Эта ножка имеет свойство приводить к аппаратному переходу в код секции бутлоадера (запускается бутлоадер, который позволяет загрузить программу пользователя через USB с помощью утилиты FLIP), если при сбросе (RESET) лог. уровень на ней был 0. Чтобы пользователь мог воспользоваться бутлоадером, многие киты (как например AVR-USB162 [2]) имеют две кнопки: RST чтобы выполнить сброс, другая HWB, чтобы подать лог. 0 на ножку HWB.

Прим. переводчика: иногда бутлоадер запускаются одной кнопкой, и необходимый для запуска бутлоадера уровень на ножке HWB формируется с помощью дополнительных элементов - резистора, диода и конденсатора. Так устроена например макетная плата AVR-USB162MU и Teensy 1.0. В макетной плате AVR-USB32U4 и Teensy 2.0 для запуска бутлоадера также используется одна кнопка благодаря наличию внешнего pull-down резистора на ножке HWB.

[6. Обновление firmware в микроконтроллере]

Программа-утилита "Flip" предназначена для организации процесса обновления firmware, она пересылает код бутлоадеру через USB или другие доступные интерфейсы. Утилиту FLIP можно свободно скачать с сайта Atmel или по ссылке [3].

Для того, чтобы можно было начать пользоваться бутлоадером, и с его помощью прошивать/перепрограммировать память FLASH и EEPROM, выполните следующие простые шаги:

1. Установите программное обеспечение Flip [3] (требуется Flip версии 3.0 или более свежая версия).
2. Подключите Вашу плату или устройство AT90USB (AVR-USB162 [2], AVR-USB32U4 [7], userial [6], STK525, AT90USBKey и т. п.) к компьютеру PC с использованием стандартного кабеля USB (обычно с коннекторами Type A и Mini B, такой шнур используется для подключения переносных накопителей на жестких дисках и картридеров).
3. Нажмите и удерживайте кнопку HWB (Hardware Bootloader).
4. Коротко нажмите и отпустите кнопку RST (Reset, сброс).
5. Отпустите кнопку HWB.
6. После выполнения этой процедуры операционная система обнаружит новое подключенное устройство USB и запустит диалог Мастера установки драйвера нового устройства. Просто следуйте инструкциям мастера (INF-файл и драйвер находится в поддиректории USB пути инсталляции программы Flip, обычно это папка %ProgramFiles%\ATMEL\FLIP\FLIPx.x.x\usb). После того, как драйвер установлен, то диалог мастера больше не будет появляться, и можно перейти к шагу 7. Подробно диалог установки драйвера со скриншотами можно посмотреть по ссылкам [6, 7].
7. После завершения установки драйвера Вы можете проверить, правильно ли работает Ваша плата с запущенным бутлоадером, если откроете Диспетчер Устройств (Device Manager). В дереве устройств компьютера Вы увидите папку LibUSB-Win32 Devices, в которой будет отображен чип на Вашей плате, например AT90USB162.

AT90USB162device

Рис. 6-4. Так выглядит устройство бутлоадера DFU в Диспетчере Устройств.

Теперь микроконтроллер на Вашей плате находится в режиме DFU (бутлоадер активен), и Вы можете воспользоваться утилитой FLIP для того, чтобы перепрограммировать микроконтроллер. Далее на скриншотах будет показан пример использования утилиты Flip.

1. В меню программы Flip или с помощью кнопки на передней панели с изображением микросхемы выберите название Вашего микроконтроллера. Предположим, что это AT90USB1287.

AVR282-Device-Selection-fig65

Рис. 6-5. Выбор устройства AT90USB.

2. Выберите интерфейс подключения, который будет использоваться (чаще всего это USB).

AVR282-select-USB-Communication-Mode-fig66

Рис. 6-6. Выбор режима подключения к бутлоадеру.

3. Откройте соединение с USB (USB Port Connection -> Open).

AVR282-open-USB-Communication-fig67

Рис. 6-7. Инициализация соединения через USB.

4. Выберите HEX-файл для загрузки.

AVR282-select-HEX-File-to-Load-fig68

Рис. 6-8. Запуск диалога выбора входного файла файла (File -> Load HEX File...).

5. Теперь Вы можете загрузить файл (программу firmware) в память микроконтроллера, если нажмете на кнопку Run (слева внизу). Галочки Erase (очистка перед записью), Blank Check (проверка памяти на чистоту), Program (прошивка памяти содержимым загруженного HEX-файла), Verify (проверка записи).

AVR282-HEX-File-Loading-fig69

Рис. 6-9. Загрузка HEX-файла в память микроконтроллера.

6. Запуск на выполнение загруженной программы firmware произойдет, если после загрузки нажать кнопку Start Application (справа внизу в окне программы Flip). При этом бутлоадер перестанет работать и отключится от USB как устройство DFU, и начнет работать firmware пользователя. Это firmware может работать как другое USB-устройство (например, как клавиатура, мышь или виртуальный последовательный порт), или выполнять какие-то другие действия, заложенные в код программистом.

AVR282-Start-Application-fig610

Рис. 6-10. Запуск на выполнение программы пользователя.

[7. FAQ (часто задаваемые вопросы)]

1. Почему бутлоадер DFU перестал запускаться после того, как я прошил мой микроконтроллер через JTAGICE MKII или AVRISP?

• Когда Вы используете ISP или JTAG программатор типа JTAGICE MKII или AVRISP для перепрограммирования микроконтроллера, то первое действие, которое эти программаторы выполняют перед прошивкой - полное стирание памяти чипа (full chip erase). Эта операция очищает все содержимое памяти FLASH (заполняет её байтами 0xFF), и тем самым удаляет бутлоадер. Если вы хотите продолжить пользоваться бутлоадером, то загрузите его как HEX-файл с сайта Atmel (ссылку на бутлоадер можно найти в разделе утилиты Documents или Tools на странице сайта Atmel, посвященному Вашему используемому микроконтроллеру, см. скриншот). и далее прошейте этот файл в память чипа с использованием тех же программаторов, JTAGICE MKII или AVRISP.

AVR282-find-DFU-bootloader-at-Atmel-website

2. На моем компьютере установлена утилита FLIP версий Flip 2.4.x/3.0.x. Я установил Flip 3.1.y, и когда запустил бутлоадер, то почему не могу увидеть иконку устройства Atmel DFU у Менеджере Устройств Windows, как это показано на рис. 6-4, но иконка Jungo видна?

• Версии Flip 2.4.x и Flip 3.1.y используют разные драйверы для получения доступа у устройству USB DFU (ранее использовалось API библиотеки LibUSB, а теперь используется API драйвера Jungo). Вы можете обновить драйвер для бутлоадера следующим образом:

– Запустите Менеджер Устройств.
– Сделайте правый клик мышью на иконке AT90USB Jungo.
– Выберите обновить драйвер (Update Driver).
– Продолжите установку драйвера DFU под управлением мастера, как это показано по ссылкам [6, 7].

3. Можно ли с помощью Flip менять значение фьюзов микроконтроллера?

• Нет, утилита Flip не может модифицировать биты фьюзов (fuse bits). Для управления установками fuse bits можете использовать либо JTAGICE MKII (интерфейс JTAG или ISP), AVRISP MKII (интерфейс ISP) или параллельное программирование чипа с помощью специального программатора.

4. Для чего нужна галочка Reset возле кнопки Start Application, как это показано на рис. 6-10? Чем отличается запуск программы пользователя, когда эта галочка установлена, или когда не установлена?

• Если запускаете программу пользователя, не установив галочку Reset, то устройство для сброса не будет использовать таймер Watchdog (произойдет просто безусловный переход по адресу 0000h), и после запуска программы пользователя этот watchdog останется неактивным. Установленная галочка Reset аналогична обычному сбросу устройства, этот сброс генерируется таймером watchdog. После этого варианта запуска все ресурсы чипа очищаются, и watchdog становится неактивным. Этот обычный сброс устраняет сторонние эффекты из-за влияния работы бутлоадера на состояние чипа и его ресурсы. Однако таймер watchdog останется активным, и если watchdog не нужен, то Ваша программа должна его отключить.

[Словарик]

bootloader код в специальной секции старших адресов (Boot Section, конец памяти программ FLASH), который предназначен для загрузки приложения пользователя (Application Section, размещена с начала памяти программ FLASH, т. е. с адреса 0000H). Подробнее см. [4].

DFU Device Firmware Upgrade - обновление программного обеспечения устройства на микроконтроллере.

FLIP FLexible In-system Programmer - гибкое программирование микроконтроллера "прямо в системе", т. е. в готовом изделии. Так называется утилита Atmel [3], работающая с бутлоадером. Для каждого чипа AVR USB есть свой бутлоадрер в бинарном виде, его можно скачать с сайта Atmel (исходный код Atmel не предоставила). Есть также бутлоадер DFU с открытым исходным кодом в библиотеке LUFA (благодаря тому, что спецификация протокола DFU Flip открыта [5]).

firmware выполняемое программное обеспечение микроконтроллера, которое сохранено в перезаписываемой, энергонезависимой памяти микроконтроллера (в нашем случае это AVR, работающий как устройство USB).

HWB Hardware Bootloader, специальная ножка микроконтроллера AVR USB, которая может использоваться не только как обычный порт, но также и для запуска бутлоадера.

ISP In-System Programming, программирование микроконтроллера "прямо в системе", т. е. в готовом изделии. Это могут быть разные способы программирования (USB, JTAG, CAN), но обычно под этой аббревиатурой подразумевается 6-контактный интерфейс ISP, предназначенный для подключения к программатору.

[Ссылки]

1. AVR282: USB Firmware Upgrade for AT90USB site:atmel.com.
2. Макетная плата AVR-USB162.
3. FLIP site:atmel.com. По этой же ссылке доступно для закачки firmware бутлоадеров DFU Flip. Старая версия Flip 3.3.2 здесь: AvrFlip.rar.
4. AVR109: самопрограммирование AVR.
5. AVR4023: протокол FLIP USB DFU.
6. userial - мост USBI2C/SPI/GPIO/ADC на микроконтроллере AT90USB647.
7. Макетная плата AVR-USB32U4.