V-USB: AVRUSBBoot - USB bootloader для микроконтроллеров Atmel AVR |
Добавил(а) microsin |
В статье описан загрузчик программного обеспечения (bootloader), работающий через USB в микроконтроллерах AVR серии ATmega, не имеющих аппаратного контроллера USB. В firmware загрузчика используется библиотека V-USB. Материал взят с сайта автора fischl.de. AVRUSBBoot - загрузчик программ для микроконтроллеров Atmel AVR. Он использует firmware-only драйвер USB (V-USB, старое название AVR-USB) для передачи двоичных данных от PC до памяти программ flash микроконтроллера. Если в AVR записан bootloader, больше не нужен программатор ISP; теперь микроконтроллер может быть перепрограммирован через USB. [Возможности bootloader] * программа загрузки работает на многих платформах. Протестировано на Linux, Mac OS X и Windows. [Hardware (железо)] В основном AVRUSBBoot может использоваться со всеми схемами, которые поддерживаются драйвером AVR USB (новое название V-USB). Для переключения между bootloader и пользовательской программой (firmware, которое загрузил пользователь во flash с помощью AVRUSBBoot) нужна дополнительная перемычка JP1. На картинке приведен пример схемы (внимание: сигналы данных D+ и D- с напряжением 5V не соответствуют стандарту USB! Поэтому напряжение питания для данной схемы должно быть 3.3V - 3.6V): [Firmware и его подгонка] Firmware AVRUSBBoot должно адаптироваться к Вашей аппаратуре (типу микроконтроллера и принципиальной схеме). Все необходимые изменения делаются в следующих двух файлах: * bootloaderconfig.h: задается условие, по которому bootloader должен стартовать, например определенная ножка подключается к земле перемычкой, и инициализация аппаратуры. После внесения изменений скомпилируйте firmware для AVRUSBBoot. Для этого потребуется avr-gcc, avr-binutils и avr-libc (для Windows все это есть в пакете WinAVR): $ cd firmware $ make После этого bootloader должен быть записан в микроконтроллер обычным программатором ISP. После того, как bootloader записан во flash, больше ISP программатор не потребуется, и Вы можете записать двоичные данные своей программы (hex-файлы) через USB. Не забудьте установить перемычки (fuses, фьюзы) для внешнего источника тактовой частоты (кварца), когда прошиваете bootloader в первый раз! Обычные значения перемычек для ATmega16 - 0xFF (low) и 0x09 (high). [Программное обеспечение для загрузки hex-файлов (взаимодействующее с бутлоадером)] Для загрузки hex-файлов имеется программа на C++. Чтобы её скомпилировать, нужна библиотека libusb. $ cd software $ make Когда устройство с бутлоадером подключено к USB, и бутлоадер стартовал (для этого нужно установить перемычку JP1 перед подключения устройства) hex-файлы могут быть записаны во flash микроконтроллера: $ ./avrusbboot test.hex [Ссылки] 1. avrusbboot.2006-06-25.tar.gz site:fischl.de (128 kB). |