В статье описывается 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.

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

После окончания программирования красный светодиод погаснет, и начнет
выполняться Ваша программа с адреса 0 (которую Вы только что записали).
4. Снимите перемычку между ножками 4 и 6 коннектора U1 ISP.
Очень похоже работает другой бутлоадер - BootloadHID (см. Ссылки [5]). Отличается тем, что просто нужна другая сервисная программа на компьютере, но зато
легче встраивается в младшие чипы (начиная с ATmega8), т. к. снижены
требования к размеру bootloader-секции.
[Устранение проблем]
Если устройство USB бутлоадера нормально определяестя в системе Windows (видно в Диспетчере Устройтв как устройство USBasp), но отказывается работать с USB устройством USBasp (could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc), то скорее всего у Вас не установлена библиотека libusb или не установлен драйвер USBasp.
Драйвер 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.
|
Комментарии
2011-07-0200:08:44 про драйвер в линуксах не знал скажите во всех линуксах поддерживается бутлоадер usbasp?
2011-04-0311:01:32 С перемычкой 4-6 устройство видится как USBasp (pid_05DC)
Шью Khazama'ой файл main.hex из примеров. Результат:
1) светодиод гаснет, что нормально
2) системное сообщение "USB устройство не опознано"
3) Error sending controll message failed
Присоединенное к системе устройство не работает. и > FLASH verify MISMACH. После снятия перемычки и переподключения устройство не опознается.
microsin: устройство у Вас не опознается потому, что Вы записываете в память чипа нерабочую прошивку (скорее всего не для той частоты кварца, которая у Вас). Если хотите, чтобы я отвечал на другие Ваши вопросы, то задавайте их не сюда, а в почту.
2010-10-0914:48:37 При подключении к компу с перемкнутой 4 и 6 ножкой определяется как устройство USBasp, ищет драйвер и не находит. Скачал драйвер отсюда http://easyelectronics.ru/files/AVR/USBASP.ZIP. Установил. Но khazama AVR Programmer не читает фьюзы. То есть как бы начинает читать - и вылезает ошибка. Разная. То target doesn't answer. То устройство не опознаёт команду. То ещё чего Светодиод гаснет. С чем это связано?
microsin: а кто Вам обещал чтение фьюзов?.. Статью, наверное, по диагонали читали?