AVR-USB-MEGA16: USB bootloader USBasp для микроконтроллера ATmega32
Написал microsin   
02.10.2010

В статье описывается USB bootloader USBasp, который хорошо подходит для ATmega32. Он удобен тем, что эмулирует поведение популярного программатора USBasp, и для него подходят программы под этот программатор.

Этот бутлоадер я записываю во все макетные платы AVR-USB-MEGA16, оснащенные микроконтроллерами ATmega32, благодаря чему пользователь получает возможность заливать свою программу прямо через подключение по USB, и не нужен никакой дополнительный программатор. Внимание - USBasp bootloader не умеет работать с фьюзами (fuses) и EEPROM, несмотря на то, что в сервисных программах, обслуживающих USBasp (например, Khazama AVR Programmer) такая возможность имеется.

Значения фьюзов по умолчанию, которые прошиты в платы с usbasploader - LOW FUSE BYTE: 0xCF, HIGH FUSE BYTE: 0x98, LOCKOPT BYTE: 0xEF

[Как встроить в Ваш проект usbasploader]

Процесс подробно описан в статье на Хабре, статья называется "USB bootloader для микроконтроллеров AVR" и находится в разделе "DIY или Сделай Сам". Воспользуйтесь поиском и легко её найдете. Исходники можете скачать по ссылке в этой статье (см. Ссылки [4]). Само собой, загрузчик USBasp легко встраивается и в другие чипы ATmega, объем секциии bootloader у которых равен или превышает 4096 байт (например, в ATmega128).

[Как работать с загрузчиком usbasploader на примере макетки AVR-USB-MEGA16 и Khazama AVR Programmer]

Для работы с бутлоадером USBasp подходит множество программ (см. Ссылки [3]), но мне больше всего по душе программа Khazama AVR Programmer.

Внимание! При первом подключении платы с бутлоадером к компьютеру по USB операционная система Windows запросит драйвер программатора USBasp (для Linux драйвер не нужен). Драйвер можно взять в архиве по ссылке [4] (папка USBasp архива), или скачать с сайта автора программатора USBasp, см. ссылку [6].

Итак, процесс по шагам - как залить свою прошивку firmware (пользовательскую программу) в макетную плату AVR-USB-MEGA16, используя бутлоадер USBasp. 

1. Поставьте перемычку между ножками 4 и 6 коннектора U1 ISP.
image

2. Подключите макетную плату к компьютеру по USB. На макетке загорится красный светодиод, и в системе Windows обнаружится программатор USBasp.

3. Запустите программу Khazama AVR Programmer. В настройках уберите опцию очистки памяти кристалла (Command -> Program Options -> снимите галку Erase Chip). Выберите из выпадающего списка Ваш чип. Загрузите hex-файл прошивки (через меню File -> Load FLASH file to Buffer). Нажмите большую кнопку Auto Program, запускающую программирование. Программируется кристалл очень быстро, за несколько секунд.
image
После окончания программирования красный светодиод погаснет, и начнет выполняться Ваша программа с адреса 0 (которую Вы только что записали).

4. Снимите перемычку между ножками 4 и 6 коннектора U1 ISP.
image  

Очень похоже работает другой бутлоадер - BootloadHID (см. Ссылки [5]). Отличается тем, что просто нужна другая сервисная программа на компьютере, но зато легче встраивается в младшие чипы (начиная с ATmega8), т. к. снижены требования к размеру bootloader-секции.

[Устранение проблем

Если устройство USB бутлоадера нормально определяестя в системе Windows (видно в Диспетчере Устройтв как устройство USBasp), но  отказывается работать с USB устройством USBasp (could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc), то скорее всего у Вас не установлена библиотека libusb или не установлен драйвер USBasp.

khazama-err-not-find-USBasp.PNG 

arduinoIDE-err-not-find-USBasp.PNG 

Драйвер USBasp можно скачать по ссылке [6], ищите заголовок Drivers и ссылку на файл наподобие usbasp-windriver.2011-05-28.zip. Библиотеку libusb можно скачать по ссылке [7]. Качайте и устанавливайте самый свежий релиз библиотеки libusb.

[Ссылки]

1. Загрузчики (bootloader) для микроконтроллеров AVR.
2. Домашняя страничка usbasploader.
3. Программы для работы с программатором USBasp — AVRDUDE, BASCOM-AVR, Khazama AVR Programmer, eXtreme Burner-AVR.
4. Мой вариант usbasploader, заточенный под макетную плату AVR-USB-MEGA16 с микроконтроллером ATmega32 (проект для AVRStudio с исходниками и скомпилированными вариантами для кварцев 12 МГц, 16 МГц). Именно его я и записываю в макетные платы AVR-USB-MEGA16 с микроконтроллером ATmega32.
5. AVR-USB-MEGA16: USB bootloader BootloadHID для микроконтроллера ATmega16.
6. Сайт программатора USBasp (там можно скачать драйвер для USBasp под операционную систему Windows).
7Ссылки на закачку релизов библиотеки libusb.

Последнее обновление ( 30.05.2012 )