В этой статье приведен перевод даташита Atmel AVR4023, посвященного внутреннему устройству протокола DFU FLIP.
[Особенности протокола FLIP]
• Делает возможным программирование микроконтроллеров, уже установленных в систему, через интерфейс USB. • Возможности протокола: - Чтение информации о программируемом микроконтроллере. - Чтение/запись конфигурации микроконтроллера. - Чтение/запись внутренней памяти микроконтроллера (FLASH, EEPROM). - Чтение/запись внешней памяти микроконтроллера. - Управление защитой памяти. - Запуск приложения (программы firmware, записанной в память микроконтроллера). • Atmel® USB DFU: - Совместимость со стандартом USB часть 9. - Нужна одна конечная точка управления USB (USB control endpoint).
Для чего нужен и используется протокол FLIP? Все очень просто - это удобное средство программировать микроконтроллеры AVR с интерфейсом USB. Так что можно сделать свое устройство USB, не покупая при этом программатор. Достаточно иметь под рукой компьютер с установленным программным обеспечением FLIP и подключение через интерфейс USB. Кроме того, это удобный инструмент для обновления программного обеспечения (firmware) - чтобы обновить программу, можно даже не разбирать готовое устройство.
[1 Введение]
Для выполнения обновления firmware компания Atmel разработала гибкую систему программирования микроконтроллеров, уже встроенных в систему (FLexible In-system Programmer, FLIP). Это программное обеспечение позволяет программировать память микроконтроллера по командам от USB хоста (компьютера). При этом нет необходимости разбирать готовое изделие, извлекать оттуда микроконтроллер, и не нужно применять никакую дополнительную внешнюю аппаратуру для программирования (не нужен программатор). Atmel предоставляет бутлоадеры USB для микроконтроллеров AVR® (включая серии AVR XMEGA® и UC3), которые имеют в составе чипа аппаратный интерфейс USB. Эти бутлоадеры используют проприетарный протокол USB DFU, который описывается в этом апноуте. Бутлоадер FLIP поставляется конечному потребителю уже загруженным в память чипа на заводе Atmel. При этом тратится некоторая часть памяти программ (около 2 килобайт в старших адресах FLASH). Бутлоадеры Atmel поставляются в двоичном виде, без исходного кода. Однако благодаря тому, что спецификация протокола FLIP открыта, существуют открытые альтернативные версии бутлоадеров FLIP (с открытым исходным кодом), например в библиотеке LUFA [1].
Для активации бутлоадера в устройстве применяется специальная процедура, описанная в документации на бутлоадер. Обычно это замыкание определенной ножки микроконтроллера на землю при включении питания (например, для микроконтроллера AT90USB162 это ножка 13, порт PD7) или сбросе.
По традиции DFU называют протоколом FLIP (что создает некоторую путаницу), однако к DFU относятся все функции программирования от хоста, включая FLIP, BatchISP или все дальнейшие интеграции протоколов в AVR Studio. [2 Термины и аббревиатуры]
DFU Device Firmware Upgrade - обновление программного обеспечения устройства на микроконтроллере. FLIP FLexible In-system Programmer - гибкое программирование микроконтроллера "прямо в системе", т. е. в готовом изделии. Firmware выполняемое программное обеспечение микроконтроллера, которое сохранено в перезаписываемой, энергонезависимой памяти микроконтроллера (в нашем случае это AVR, работающий как устройство USB). FS USB Full Speed - полная скорость по стандарту USB (около 12 мегабит/сек). Upgrade перезапись кода firmware в микроконтроллере (в нашем случае это AVR, работающий как устройство USB). Новое firmware может быть предназначено для замены старого, которое имеется в устройстве. Download выгрузка, передача информации от хоста к устройству. Upload выгрузка, передача информации от устройства к хосту. IN передача пакета USB от устройства к хосту. OUT передача пакета USB от хоста к устройству. ZLP USB Zero Length Packet - пакет нулевой длины, специальный пакет, используемый для квитирования в протоколе USB. ISP программирование микроконтроллера "прямо в системе", т. е. в готовом изделии.
[3 Область применения FLIP]
Этот документ относится к микроконтроллерам AVR, имеющим в составе чипа аппаратный интерфейс USB, а также к микроконтроллерам AVR XMEGA и серии AVR UC3.
• Atmel megaAVR Series2, Series3, Series4. Это микроконтроллеры AT90USB82, AT90USB162, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega8U2, ATmega16U2, ATmega32U2, ATmega16U4, ATmega32U4. • Atmel AVR XMEGA. Это микроконтроллеры ATxmega64A1U, ATxmega128A1U, ATxmega64A3U, ATxmega128A3U, ATxmega192A3U, ATxmega256A3U, ATxmega256A3BU, ATxmega16A4U, ATxmega32A4U, ATxmega64A4U, ATxmega128A4U, ATxmega64B1, ATxmega128B1, ATxmega64B3, ATxmega128B3, ATxmega64C3, ATxmega128C3, ATxmega192C3, ATxmega256C3, ATxmega384C3, ATxmega16C4, ATxmega32C4. • Atmel AVR UC3 Device series. Это микроконтроллеры ATUC64L3U, ATUC128L3U, ATUC256L3U, ATUC64L4U, ATUC128L4U, ATUC256L4U. • Atmel 8051 USB. Это микроконтроллеры AT83C5134, AT83C5135, AT83C5136, AT89C5130A-M, AT89C5131A-L, AT89C5131A-M, AT89C5132.
С помощью протокола FLIP могут программироваться и некоторые другие микроконтроллеры, через другие интерфейсы, не USB - через CAN и USART. Процедура программирования подробна описана в даташите на соответствующий бутлоадер, применяемый для конкретного микроконтроллера.
[4 Литература и связанные ресурсы]
• Atmel FLIP. • Atmel AVR Software Framework. • AVR32784: AVR UC3 USB DFU Bootloader. • Atmel AVR1916: USB DFU Boot Loader for XMEGA.
[5 Общий обзор окружения протокола FLIP]
Специальное ПО хоста (это могут быть FLIP, BatchISP, или будущие расширения Atmel AVR Studio) получает команды пользователя для выполнения операций с памятью, и переводит эти команды в соответствующие запросы протокола USB, основанного на DFU. На запросы отвечает бутлоадер USB, записанный в память FLASH микроконтроллера. Бутлоадер обрабатывает протокол USB и выполняет нужные операции чтения/записи с памятью микроконтроллера (FLASH, EEPROM, а также иногда это может быть и внешняя память).
Рис. 5-1. Системное рабочее окружение, в котором работает FLIP DFU.
Для программирования микроконтроллеров имеется специальная бесплатная утилита Atmel Flip, написанная на JAVA.
В этой статье подробно рассматривается именно протокол USB FLIP. Статья разделена на 2 секции:
• Atmel USB DFU Class (секция 6). • Atmel FLIP Protocol (секция 7).
[6 Atmel USB DFU Class]
6.1 Что такое Atmel USB DFU Class
Device Firmware Upgrade (DFU) является классом USB, который позволяет обновлять firmware, встроенное в микроконтроллер устройства USB. Atmel USB DFU является реализацией класса вендора (vendor class implementation), основанное на части официального стандарта USB DFU, однако она не полностью реализует стандартный USB DFU class.
Для обмена данными с хостом USB DFU FLIP использует только одну конечную точку управления (control endpoint, конечная точка с номером 0), и только запрос настройки (setup request). Далее будут показаны использующиеся дескрипторы USB и управляющие запросы USB (control requests).
6.2 Набор используемых дескрипторов USB
Устройство USB DFU FLIP предоставляет хосту набор дескрипторов, которые содержат:
• Дескриптор устройства (device descriptor). • Один дескриптор конфигурации (configuration descriptor). • Один дескриптор интерфейса (interface descriptor).
Таблица 6-1. USB Device Descriptor.
Смещение |
Имя поля |
Размер |
Значение |
Описание поля |
0 |
bLength |
1 |
12h |
Размер этого дескриптора в байтах. |
1 |
bDescriptorType |
1 |
01h |
Тип функционального дескриптора DFU. |
2 |
bcdUSB |
2 |
0100h |
Номер спецификации USB в формате BCD. |
4 |
bDeviceClass |
1 |
00h |
См. описание интерфейса. |
5 |
bDeviceSubClass |
1 |
00h |
См. описание интерфейса. |
6 |
bDeviceProtocol |
1 |
00h |
См. описание интерфейса. |
7 |
bMaxPacketSize0 |
1 |
64 |
Максимальный размер пакета для конечной точки 0 (ограничено до 32 из-за драйвера на стороне хоста). |
8 |
idVendor |
2 |
03EBh |
Atmel Vendor ID |
10 |
idProduct |
2 |
2FXXh |
Product ID |
12 |
bcdDevice |
2 |
0x0000 |
Номер релиза устройства в формате BCD. |
14 |
iManufacturer |
1 |
0 |
Индекс строкового дескриптора. |
15 |
iProduct |
1 |
0 |
Индекс строкового дескриптора. |
16 |
iSerialNumber |
1 |
0 |
Индекс строкового дескриптора. |
17 |
bNumConfigurations |
1 |
01h |
Имеется только одна конфигурация DFU. |
USB configuration descriptor идентичен стандартному дескриптору конфигурации, описанному в спецификации USB версии 1.0 с тем исключением, что поле bNumInterfaces должно содержать значение 01h.
Таблица 6-2. USB Interface Descriptor.
Смещение |
Имя поля |
Размер |
Значение |
Описание поля |
0 |
bLength |
1 |
09h |
Размер этого дескриптора в байтах. |
1 |
bDescriptorType |
1 |
04h |
Тип - дескриптор интерфейса. |
2 |
bInterfaceNumber |
1 |
00h |
Номер этого интерфейса. |
3 |
bAlternateSetting |
1 |
00h |
Альтернативная установка. |
4 |
bNumEndpoints |
1 |
00h |
Используется только канал управления (control pipe). |
5 |
bInterfaceClass |
1 |
FFh |
Информация, специфичная для вендора. |
6 |
bInterfaceSubClass |
1 |
00h |
Нет определения подкласса. |
7 |
bInterfaceProtocol |
1 |
00h |
Нет определения протокола. |
8 |
iInterface |
1 |
00h |
Индекс строкового дескриптора для этого интерфейса. |
6.3 Специальные запросы настройки (specific setup requests)
В дополнение к стандартным запросам USB, для поддержки операций обновления обрабатываются 4 специальных запроса, относящиеся к классу (class-specific requests):
Таблица 6-3. Class-specific requests.
bmRequestType |
bRequest |
wValue |
wIndex |
wLength |
Фаза данных |
0010 0001b |
DFU_DNLOAD |
wBlock |
0 |
длина |
Протокол FLIP |
1010 0001b |
DFU_UPLOAD |
wBlock |
0 |
длина |
Протокол FLIP |
1010 0001b |
DFU_GETSTATUS |
0 |
0 |
6 |
Статус |
0010 0001b |
DFU_CLRSTATUS |
0 |
0 |
0 |
нет |
6.3.1 Device status (состояние устройства USB)
Информация о статусе используется для упрощения синхронизации между ПО хоста и устройством USB. Статус предоставляет информацию о выполнении предыдущего запроса. Устройство USB DFU FLIP отвечает на запрос DFU_GETSTATUS с полезной нагрузкой пакета, описанной в таблице 6-4.
Таблица 6-4. Пакет статуса устройства.
Смещение |
Имя поля |
Размер |
Значение |
Описание поля |
0 |
bStatus |
1 |
Число |
Показывает статус результата выполнения самого последнего подходящего запроса. |
1 |
bwPollTimeOut |
3 |
Число |
Не используется, здесь всегда 0. |
4 |
bState |
1 |
Число |
Показывает состояние, в которое устройство немедленно переходит вслед за передачей этого ответа. |
5 |
iString |
1 |
Индекс |
Не используется, здесь всегда 0. |
Возможные значения полей пакета bStatus и bState описаны в таблице 6-5.
Таблица 6-5. Значения статуса и состояния.
Символьное имя |
Статус |
Состояние |
Описание |
STATUS_OK |
00h |
00h |
Команда выполнена успешно, и устройство находится в режиме ожидания (IDLE mode). |
STATUS_STALL |
0Fh |
0Ah |
Неизвестный специфичный запрос Setup. |
STATUS_MEM_UNKNOW |
03h |
0Ah |
Невозможен доступ к памяти на чтение или запись. |
STATUS_MEM_PROTECTED |
03h |
00h |
Доступ к памяти запрещен защитой. |
STATUS_OUTOFRANGE |
08h |
0Ah |
Адрес вышел из допустимого диапазона, или неизвестный ID памяти. |
STATUS_BLANK_FAIL |
05h |
00h |
Тест на чистоту закончился неудачей (память не чистая). |
STATUS_ERASE_ONGOING |
09h |
04h |
Идет процесс очистки памяти. |
Каждый раз, когда устройство USB детектирует ошибку и сообщает о ней хосту (в статусе индикации ошибки в ответ на запрос DFU_GETSTATUS), устройство входит в состояние dfuERROR. После сообщения о любой ошибке устройство не может покинуть состояние dfuERROR, пока не получит запрос DFU_CLRSTATUS. После получения запроса DFU_CLRSTATUS устройство устанавливает статус в значение IDLE mode (режим ожидания).
6.3.2 Command request (командный запрос)
Запросы setup request DFU_DNLOAD и DFU_UPLOAD используют 4 типа команд:
• Одиночная команда FLIP. • Пустая команда (используется только для того, чтобы проверить команду запуска приложения пользователя, firmware). • Команда FLIP для загрузки полезных данных (data payload to download). • Команда FLIP для выгрузки полезных данных (data payload to upload).
Рис. 6-1. Одиночная команда FLIP.
Рис. 6-2. Empty command (пустая команда).
Рис. 6-3. Команда FLIP для загрузки данных FLIP (download).
Рис. 6-4. Команда FLIP для выгрузки данных FLIP (upload).
[7 Протокол FLIP]
Протокол Atmel FLIP очень простой, и может использовать другие физические линки для связи, не только USB.
7.1 Общий обзор протокола FLIP
В команде имеется код группы, идентификатор команды, и также 4 байта, используемые для добавления аргумента в команду, см. таблицу 7-1.
Таблица 7-1. Структура команды FLIP.
Смещение (в байтах) |
Поле |
Размер (в байтах) |
0 |
Идентификатор группы команды |
1 |
1 |
Идентификатор команды |
1 |
2 |
Аргументы |
4 |
Имеются 4 группы (таблица 7-2), описанные в последующих секциях. Для каждой команды описана структура команды FLIP, после отправки команды возможно наличие дополнительных данных для загрузки (download), или выгрузки (upload), или статуса.
Таблица 7-2. Группы команды FLIP.
Значение (байт) |
Группа |
Описание |
01h |
CMD_GROUP_DOWNLOAD |
Группа команд для загрузки (программирования памяти микроконтроллера). |
03h |
CMD_GROUP_UPLOAD |
Группа команд для чтения и проверки памяти микроконтроллера. |
04h |
CMD_GROUP_EXEC |
Группа команд для стирания памяти микроконтроллера и для запуска приложения пользователя (кода firmware). |
06h |
CMD_GROUP_SELECT |
Группа команд для выбора типа памяти и для выбора области памяти. |
7.2 Группа выбора
Перед любой операцией чтения или программирования памяти, необходимо выбрать целевую память, а также смещение страницы внутри этой памяти. Это достигается отправкой команд SELECT_MEMORY_UNIT и SELECT_MEMORY_PAGE.
7.2.1 Selecting memory unit (выбор типа памяти).
Таблица 7-3. Select memory unit command.
Поле |
Значение |
Описание |
Идентификатор группы |
06h |
Выбор группы. |
Идентификатор команды |
03h |
Выбор команды памяти. |
Аргумент 1 |
00h |
Выбор юнита памяти. |
Аргумент 2 |
Юнит памяти |
Идентификатор памяти для выбора. |
Аргумент 3 |
00h |
Зарезервировано. |
Аргумент 4 |
00h |
Зарезервировано. |
Полезная нагрузка (данные) |
нет |
нет |
Таблица 7-4. Memory unit available (доступные типы памяти).
Значение |
Описание |
00h |
FLASH |
01h |
EEPROM |
02h |
SECURITY |
03h |
CONFIGURATION |
04h |
BOOTLOADER |
05h |
SIGNATURE |
06h |
USER |
07h |
INT_RAM |
08h |
EXT_MEM_CS0 |
09h |
EXT_MEM_CS1 |
0Ah |
EXT_MEM_CS2 |
0Bh |
EXT_MEM_CS3 |
0Ch |
EXT_MEM_CS4 |
0Dh |
EXT_MEM_CS5 |
0Eh |
EXT_MEM_CS6 |
0Fh |
EXT_MEM_CS7 |
10h |
EXT_MEM_DF |
Таблица 7-5. Select memory unit status (выбор статуса юнита памяти).
Символьное имя
|
Описание |
STATUS_OK |
Команда выполнена успешно и устройство находится в режиме ожидания (IDLE mode). |
STATUS_OUTOFRANGE |
Неизвестный ID памяти. |
7.2.2 Selecting memory page (выбор страницы памяти)
Таблица 7-6. Команда выбора страницы памяти.
Поле |
Значение |
Описание |
Идентификатор группы |
06h |
Выбор группы. |
Идентификатор команды |
03h |
Выбор команды памяти. |
Аргумент 1 |
01h |
Выбор страницы памяти. |
Аргумент 2 |
Страница, MSB (старший байт) |
Номер страницы памяти 64 килобайта |
Аргумент 3 |
Страница, LSB (младший байт) |
Аргумент 4 |
00h |
Зарезервировано. |
Полезная нагрузка (данные) |
нет |
нет |
Таблица 7-7. Select memory page status (выбор статуса страницы памяти).
Символьное имя
|
Описание |
STATUS_OK |
Команда выполнена успешно и устройство находится в режиме ожидания (IDLE mode). |
STATUS_OUTOFRANGE |
Адрес за пределами допустимого диапазона. |
7.3 Download group (группа загрузки)
Группа команд загрузки включает в себя одну команду, которая используется для программирования выбранной памяти.
7.3.1 Program start (запуск программирования)
BatchISP и FLIP имеют внутренние буферы ISP (один буфер на память устройства). Запись в память всегда осуществляется из содержимого буфера. Содержимое буфера обычно не имеет значения для пользователя протокола FLIP. Команда Program Start передает буфер ISP из FLIP в выбранную память.
Таблица 7-8. Команда Program Start.
Поле |
Значение |
Описание |
Идентификатор группы |
01h |
Группа загрузки (download). |
Идентификатор команды |
00h |
Команда Program Start. |
Аргумент 1 |
Страница, MSB (старший байт) |
Начальный адрес памяти. |
Аргумент 2 |
Страница, LSB (младший байт) |
Аргумент 3 |
Страница, MSB (старший байт) |
Конечный адрес памяти. |
Аргумент 4 |
Страница, LSB (младший байт) |
Полезная нагрузка (данные для загрузки) |
буфер FLIP |
В буфер FLIP добавляется префикс(1). |
Примечание: (1) Data Payload Prefix (префикс данных полезной нагрузки, т. е. передаваемых данных для программирования).
Чтобы соответствовать записываемой единице памяти (размеру страницы), могут быть добавлены X ничего не значащих байт перед первым байтом для программирования. Число X вычисляется для выравнивания начала firmware с записываемой памятью.
Внимание: в настоящий момент приложение FLIP делит внутренний буфер так, чтобы размер полезной нагрузки (включая префикс) не превышал 2 килобайта.
Таблица 7-9. Статус Program Start.
Символьное имя
|
Описание |
STATUS_OK |
Команда выполнена успешно и устройство находится в режиме ожидания (IDLE mode). |
STATUS_MEM_UNKNOW |
Память недоступна для записи. |
STATUS_MEM_PROTECTED |
Память имеет установленную защиту от записи. |
STATUS_OUTOFRANGE |
Адрес за пределами допустимого диапазона. |
Внимание: если произойдет ошибка статуса, то передача полезных данных для загрузки должна быть остановлена (stall) на уровне протокола USB.
7.4 Upload group (группа выгрузки)
Эта группа команд позволяет прочитать содержимое выбранной памяти, а также проверить её на чистоту (blank state).
7.4.1 Read memory (чтение памяти)
BatchISP и FLIP имеют внутренние буферы ISP (один буфер на память устройства). Чтение памяти обновляет содержимое буфера данными, прочитанными из памяти. Во время операции проверки (verify) целевая память читается и её содержимое сравнивается с содержимым буфера.
Таблица 7-10. Команда чтения памяти.
Поле |
Значение |
Описание |
Идентификатор группы |
03h |
Группа выгрузки (upload). |
Идентификатор команды |
00h |
Команда чтения памяти. |
Аргумент 1 |
Страница, MSB (старший байт) |
Начальный адрес памяти. |
Аргумент 2 |
Страница, LSB (младший байт) |
Аргумент 3 |
Страница, MSB (старший байт) |
Конечный адрес памяти. |
Аргумент 4 |
Страница, LSB (младший байт) |
Полезная нагрузка (данные для выгрузки) |
Содержимое памяти
|
Содержимое памяти, соответствующее выбранной памяти и адресу памяти. |
Внимание: в настоящий момент приложение FLIP делит команду Read Memory так, чтобы размер полезной нагрузки не превышал 1 килобайт.
Таблица 7-11. Статус команды Read Memory.
Символьное имя
|
Описание |
STATUS_OK |
Команда выполнена успешно и устройство находится в режиме ожидания (IDLE mode). |
STATUS_MEM_UNKNOW |
Память недоступна для чтения. |
STATUS_MEM_PROTECTED |
Доступ к памяти защищен. |
STATUS_OUTOFRANGE |
Адрес за пределами допустимого диапазона. |
Внимание: если произойдут ошибки STATUS_MEM_UNKNOW или STATUS_OUTOFRANGE, то должен быть остановлен (stall) ZLP запроса DOWNLOAD. Если произойдет ошибка STATUS_MEM_PROTECTED, то следующий запрос UPLOAD должен быть остановлен (stall) на уровне протокола USB.
7.4.2 Blank check memory (проверка, что память очищена)
Во время проверки памяти на чистоту её содержимое сравнивается с FFh.
Таблица 7-12. Команда Blank check memory.
Поле |
Значение |
Описание |
Идентификатор группы |
03h |
Группа выгрузки (upload). |
Идентификатор команды |
01h |
Команда проверки памяти на чистоту. |
Аргумент 1 |
Страница, MSB (старший байт) |
Начальный адрес памяти. |
Аргумент 2 |
Страница, LSB (младший байт) |
Аргумент 3 |
Страница, MSB (старший байт) |
Конечный адрес памяти. |
Аргумент 4 |
Страница, LSB (младший байт) |
Полезная нагрузка |
нет
|
нет |
Таблица 7-13. Статус команды Blank check.
Символьное имя
|
Описание |
STATUS_OK |
Команда выполнена успешно и устройство находится в режиме ожидания (IDLE mode). |
STATUS_MEM_UNKNOW |
Память недоступна для чтения. |
STATUS_MEM_PROTECTED |
Доступ к памяти защищен. |
STATUS_OUTOFRANGE |
Адрес за пределами допустимого диапазона. |
Внимание: если произойдут ошибки STATUS_MEM_UNKNOW или STATUS_OUTOFRANGE, то должен быть остановлен (stall) ZLP запроса DOWNLOAD.
7.5 Excec group (группа выполнения)
Эта группа команд позволяет полностью очистить память firmware микроконтроллера (FLASH), либо запустить на выполнение код приложения пользователя - firmware.
7.5.1 Chip erase (очистка памяти микроконтроллера)
Команда Chip erase полностью очищает всю память FLASH (за исключением секции бутлоадера FLIP).
Таблица 7-14. Команда Chip erase.
Поле |
Значение |
Описание |
Идентификатор группы |
04h |
Группа Exec. |
Идентификатор команды |
00h |
Команда очистки памяти. |
Аргумент 1 |
FFh |
Очистка чипа. |
Аргумент 2 |
00h |
Зарезервировано. |
Аргумент 3 |
00h |
Зарезервировано. |
Аргумент 4 |
00h |
Зарезервировано. |
Полезная нагрузка |
нет
|
нет |
Таблица 7-15. Статус команды Chip erase.
Символьное имя
|
Описание |
STATUS_OK |
Команда выполнена успешно и устройство находится в режиме ожидания (IDLE mode). |
STATUS_ERASE_ONGOING |
Происходит процесс очистки памяти чипа. Команда очистки чипа должна быть отправлена повторно для завершения очистки чипа. |
7.5.2 Запуск приложения пользователя (firmware)
Команда Start Application сбрасывает устройство, и приложение пользователя запускается на выполнение.
Таблица 7-16. Команда Start Application.
Поле |
Значение |
Описание |
Идентификатор группы |
04h |
Группа Exec. |
Идентификатор команды |
03h |
Команда Start Application. |
Аргумент 1 |
00h |
Аппаратный сброс. |
Аргумент 2 |
00h |
Зарезервировано. |
Аргумент 3 |
00h |
Зарезервировано. |
Аргумент 4 |
00h |
Зарезервировано. |
Полезная нагрузка |
нет
|
нет |
Таблица 7-17. Статус команды Start Application.
Символьное имя
|
Описание |
STATUS_OK |
Команда выполнена успешно и устройство находится в режиме ожидания (IDLE mode). |
Внимание: для завершения команды Start Application должна быть отправлена пустая команда (empty FLIP command), см. рисунок 6-2.
[Ссылки]
1. LUFA - бесплатная библиотека USB для микроконтроллеров Atmel AVR. |