Например TDA7294

РадиоКот > Лаборатория > Цифровые устройства

USBASPloader или к чёрту программаторы!

Автор: Reloader, serovsv@gmail.com
Опубликовано 21.06.2016.
Создано при помощи КотоРед.

Всем доброго времени суток! Давно я слышал про бутлоадер для микроконтроллеров AVR, который реализован по протоколу USB, но поиграться всё было как-то не досуг. А зря, как оказывается....

(BootLoader это всего лишь небольшая программка которая сидит в специальной области памяти микроконтроллера и слушает какой-либо интерфейс. Обычно это UART, но бывает и SPI, USB и даже SoftUSB бутлоадеры.(с) Детально описывать не стану. Если интересно, то вот ссылка на очень хорошую статью по этому поводу : ТырЦ)

Итак. Всё по порядку.

Имя сему USBaspLoader. При замыкании определённого контакта на землю микроконтроллер по шине USB определяется компьютером как программатор USBasp и позволяет залить в кристалл прошивку напрямую, но как будто бы через настоящий программатор. Но, за всё нужно платить - мы жертвуем частью флэш памяти, которая используется для бутлоадера. Свободной остается всего лишь 6144 байт (если используется Atmega8, а вообще бутлоадер занимает 2 килобайта памяти). Так же те контакты микроконтроллера что используются для подключения к USB или для кнопки активации бутлоадера мы должны использовать с умом (чтобы не получилось что у нас постоянно стартует бутлоадер, и при этом ещё и сбивается работа протокола USB).

Схема подключения

Прототип

 

 Печетную плату я изготавливать не стал - с какого-то проекта осталось штук 5 китайских плат. Вот таких :

 

USB порт используется для питания платы, но для нас специально на обратной стороне платы выведены площадки с контактов D+ и D-

 

Ну а теперь мой, намного менее изящный вариант

 

 

 

 

 

 

 

Кнопка "boot" - для активации бутлоадера (обазательно кнопка с фиксацией или перемычка. При размыкании контактов управление передается основной программе)

Остальное запаяно с другой стороны просто навесным монтажем

 

 

 

 

 

 

 

 

 

 

 

Вот и вся переделка.

Теперь прошивка. На сайте написано что новая версия живет на Github. (Пробовал версии с сайта - ругаются при прошивке)

 

 

Весь процесс компиляции и прошивки я буду проводить в  ОС  Ubuntu (потому что я на ней работаю)

Для начала скачаем исходники:

# git clone https://github.com/baerwolf/USBaspLoader

 

 

 

 

 

По умолчанию в makefile проекта прописано использование микроконтроллера Atmega8 под частоту кварца 16 мегагерц и использование программатора usbasp.

Для компиляции под другие микроконтроллеры и частоты нужно будет поменять пару строчек в Makefile.inc

 

 

 

 

 

 

 

Список поддерживаемых микроконтроллеров можно посмотреть в том же Makefile.inc

Итак. прописали нужный микроконтроллер, выставили частоту - шьём. (не забудьте подключить микроконтроллер к программатору, а программатор к компьютеру)

 

Переходим в каталог "firmware":

#cd USBaspLoader/firmware/

и запускаем по очереди "make", "make flash" и "make fuse"

Если у вас другой программатор - не беда. Либо прописываем его с файле Makefile.inc (пареметр "PROGRAMMER". можно использовать любой программатор, поддерживаемый avrdude) либо только выполняете  "make" и забираете полученный HEX из каталога "firmware" и шьёте так как вам захочется.  В последнем случае фьюзы так же нужно будет прошить. Для Atmega8 их значения : lfuse:0x1f hfuse:0xc0 (для остальных микроконтроллеров ищем во всё том же Makefile.inc)

 Пора проверять! Подключаем к компьютеру с нажатой кнопкой (перемычкой) "boot", обязательно жмем reset, и видим подключенный программатор :

 

 

 

 

Если вы работаете под Windows, то вам понадобятся драйверы. Их будем брать со страницы оригинального программатора USBasp (Драйвер, инструкция по установке Windows8, Windows8.1).

Пользователям Линукс драйверы не нужны, но нужно получить прямой доступ к USB (чтоб постоянно через sudo не работать) (проверенно на Ubuntu 14.04.4 LTS (x64)):

создаем файл правил "/etc/udev/rules.d/10-usbasp.rules"

и прописываем в нем следующее :  "UBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="5dc", GROUP="adm", MODE="0666", SYMLINK+="usbasp" # USBasp"

Сохраняем, и перезагружаемся.

Ну вот теперь нашему девайсу не нужен программатор! Крутые коты сразу же смекнули что лить прошивку можно через ту же avrdude. Так оно и есть.
Ну а ардуинщикам всё совсем просто - так как наша плата эмулирует программатор USBasp ,штатно поддерживаемый Arduino IDE, то и шить можно сразу и без танцев с бубнами :

В файле "boards.txt" (в ubuntu расположен по адресу: ".arduino15/packages/arduino/hardware/avr/1.6.11/boards.txt") дописываем :

 

##############################################################
metaboard.name=Metaboard

metaboard.upload.tool=avrdude
metaboard.upload.protocol=usbasp
metaboard.upload.maximum_size=7168
metaboard.upload.maximum_data_size=1024
metaboard.upload.speed=19200

metaboard.build.mcu=atmega8
metaboard.build.f_cpu=16000000L
metaboard.build.core=arduino
metaboard.build.variant=standard
metaboard.build.board = AVR_METABOARD
metaboard.upload.disable_flushing=true

##############################################################

Вот и всё, выбираем в списке плат "Metaboard" и  можно шить сразу из arduino IDE. Стоит отметить что аппаратного последовательного порта у полученной платы нет. Точнее он работает на пинах Rx/Tx, но остается незадействованным.
Его можно использовав подключив к плате любой USB To UART конвертор.
Ещё одно маленькое неудобство - нет программного сброса. Нужно включать boot и жать reset самостоятельно.

За сим позволю себе откланяться. Все вопросы, как обычно в форум.

 

(к статье прикрепляю файл прошивки для микроконтроллера Atmega8 под кварц 16 мегагерц)

 

Ну а на последок - кадр из кошачей жизни :


Файлы:
Исходник на момент написания статьи (19.06.2016)
HEX Atmega8 16 мегагерц


Все вопросы в Форум.


ID: 2292