Программирование AVR: работа с USB USB bootloader Micronucleus Fri, March 29 2024  

Поделиться

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

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

USB bootloader Micronucleus Печать
Добавил(а) microsin   

Micronucleus - это USB bootloader (загрузчик), разработанный для микроконтроллеров AVR ATtiny85. Используется минимальная поддержка интерфейса USB (для экономии места под код) на основе библиотеки V-USB, кроссплатформенная утилита загрузки (ПО хоста, которая передает прошивку в загрузчик), основанная на libusb. Предприняты все возможные усилия по уменьшению размера загрузчика, который занимает в последнем релизе примерно 2 килобайта. При помощи использования механизма tinyvector, разработанного Embedded Creations в своем проекте USBaspLoader-tiny85 в комбинации с упрощенной реализацией bootloadHID от Objective Development и уникальному протоколу USB, Micronucleus на момент написания этой документации был самым маленьким USB-загрузчиком для ATtiny85. В этой статье приведен перевод оригинальной документации [1].

littlewire

Micronucleus добавляет в приложение пользователя маленькую задержку в обработку прерывания по изменению лог. уровня порта (Pin Change interrupt), но эта задержка достаточно мала, чтобы не мешать работе приложений V-USB. После прошивки программы загрузчика можно применить программатор ISP или HVSP, чтобы запретить работу вывода сброса, что дает в распоряжение пользователя дополнительную ножку GPIO и еще один канал ADC! После того, как фьюзами запретите функцию вывода сброса (reset pin перестанет сбрасывать микроконтроллер), Вы потеряете возможность перепрошивать микроконтроллер программаторами ISP (однако HVSP программатор все равно можно использовать), но это не составит проблемы, потому что мы сделали специальную программу для обновления загрузчика ('upgrade' program). Эта Upgrade-программа принимает скомпилированный HEX-файл программы загрузчика и упаковывает его в программу AVR. Вы выгружаете 'upgrade' программу через уже имеющийся в памяти загрузчик (это может быть как Micronucleus, так и любой другой загрузчик), или через программатор ISP (если не запрещен вывод сброса), или через программатор HVSP, и после того, как upgrade-программа запустится, она перезапишет загрузчик, установит свою собственную таблицу векторов прерываний, и затем перезапустит микроконтроллер уже под управлением обновленного загрузчика. Таким способом пользователи могут поменять свой загрузчик, в котором обнаружены ошибки, или если понадобилась другая конфигурация запуска загрузчика (версия с перемычкой, которой не нужны специальные утилиты программирования).

Микроконтроллер ATtiny85 не имеет на борту никакой аппаратной поддержки загрузчика (в отличие от многих моделей микроконтроллеров серий AVR mega), загрузчик ничем не защищен от случайной перезаписи - например, ошибочно написанным кодом приложения. Мы рекомендуем использовать самопрограммирование в программе пользователя с очень большой осторожностью, потому что это потенциально может привести к порче системы загрузки и получению "брикнутого" микроконтроллера (который можно восстановить только программатором HVSP).

Сейчас загрузчик Micronucleus используется очень широко - он прошивается в больше чем 40000 устройств Digispark компании Digistump - неофициальное устройство tiny arduino, так что можно быть уверенным в поддержке развития micronucleus и в будущем. Micronucleus также является рекомендуемым загрузчиком для замечательных USB-устройcтв LittleWire [2] от Ihsan Kehribar. Micronucleus может быть успешно загружен в уже существующие устройства LittleWire, если применить 'upgrade'-программу, и поменять таким способом старый загрузчик. Затем можно через уже прошитый загрузчик Micronucleus записать оригинальную программу приложения LittleWire (littlewire firmware) через утилиту командной строки (micronucleus command line upload tool).

Это релиз 1.11, используйте его на собственный страх и риск. Последним официальным релизом для DigiSpark является релиз v1.06, который можно найти по ссылке: https://github.com/micronucleus/micronucleus/tree/v1.06

Изменения, которые произошли в сравнении с v1.10:
• Уменьшен размер кода до 1816 байт, что предоставляет 6380 под программу пользователя (это на целых 320 байт больше, чем в v1.06).
• Загрузчик всегда запускается при включении питания, и из него не делается выход, если не загружена никакая программа пользователя. Такое поведение намного упрощает установку драйвера. Используйте новую опцию "--erase-only" для утилиты командной строки, чтобы создать "чистое" устройство.
• Добавлены новый режимы входа в загрузчик (entrymodes). Для получения дополнительной информации см. указания к релизу (firmware release notes) и комментарии в исходном коде.
• Все приходящие данные теперь проходят проверку CRC - для повышения устойчивости.

Изменения, которые произошли в сравнении с v1.06:
• Значительные изменения и реорганизации и оптимизации кода.
• Размер кода уменьшен до 1878 байт, оставляя 6314 байт под программу пользователя (на 256 байт больше, чем в v1.06).
• Загрузчик на выходе делает отключение от USB.

Для получения дополнительной информации см. указания по релизу (/firmware/releases/release notes.txt).

@cpldcpu - Jan 14th, 2013

----------------------------------------------------------------------------------

Особые благодарности:
• Shay Green/@gblargg за множество идей по оптимизации.
• Aaron Stone/@sodabrew за сборку утилиты командной строки для OS X, и за исправление различных ошибок.
• Компании Objective Development за отличный V-USB bitbanging usb driver.
• Компании Embedded Creations за их первопроходческий проект USBaspLoader-tiny85 и проведенные исследования.
• Компании Digistump за мотивацию и предоставление пары VID/PID.
• Ihsan Kehribar за утилиту командной строки для загрузки, написанную на языке C.

Этот проект поставляется под лицензией GPLv2. Код, прошиваемый через загрузчик (программа пользователя), не подвергается никаким требованиям этой лицензии.

[ATtiny85 USB Boot Loader, совместимый с USBasp]

Компания Embedded Creations сделала бутлоадер, похожий на загрузчик Micronucleus [4]. Он занимает больше памяти программ (на момент 141112 объем кода загрузчика 2822 байта памяти FLASH, оставляя 5370 байт под программу пользователя). Достоинство этого загрузчика по сравнению с Micronucleus в том, что он совместим с по протоколу с программатором USBasp, т. е. в качестве утилиты для прошивки можно использовать AVRDUDE - незначительно модифицированной, которая предназначена для работы с загрузчиком USBaspLoader [5] компании Objective Development. Заявляется, что загрузчик вполне работоспособен, но находится в состоянии тестирования (в нем могут быть ошибки).

[Ссылки]

1. Micronucleus site:github.com.
2. Little Wire.
3. Загрузчики (bootloader) для микроконтроллеров AVR.
4. ATtiny85 USB Boot Loader site:embedded-creations.com.
5. AVR-USB-MEGA16: USB bootloader USBasp для микроконтроллера ATmega32.

 

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


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

Top of Page