Прошивка для ucGoZilla

Здесь вы можете скачать загрузчик прошивок для ucGoZilla под Linux.

ucGoZilla - это программатор от для микроконтроллеров от Андрея Рыжкова (aka Protoss).
На данный момент поддерживаются микроконтроллеры AVR фирмы Atmel.
Также, в перспективе программатор будет поддерживать контроллеры PIC от компании Microchip и микросхемы программируемой логики.
Программатор работает через USB и эмулирует популярный программатор STK500v2.
В результате, программатор становится способным работать с широким спектром управляющих программ на разных операционных системах.
Подробнеее про программатор ucGoZilla вы можете узнать на сайте автора.

Программатор имеет две версии прошивки:

  • STK500v2 для программирования по ISP.
  • JTAGICEmkII для программирования по JTAG.

Для того, чтобы изменить тип программатора или запустить собранный самостоятельно, его надо прошить. Для этого имеется загрузчик прошивок.
В связи с тем, что автор программатора работает под ОС Windows, загрузчик прошивок существовал только под ОС Windows.
Но в сотрудничестве с Рыжковым Андреем его исходные коды были портированы на ОС Linux.
Здесь вы можете их скачать и скомпилировать загрузчик прошивок под Linux.

Подключение ucGoZilla в ОС Linux

Программатор должен определиться сразу и будет виден, как /dev/ttyACM0 (или любое другое устройство ttyACM).
Для удобства следует добавить udev правило, создающее ссылку вида /dev/ucgozilla0 и меняющее права на устройство так, чтобы все пользователи группы users могли в него писать (чтобы не работать от root).
Создайте файл /etc/udev/rules.d/95-persistent-usbserial.rules со следующим содержимым:

ACTION=="add", SUBSYSTEM=="tty", KERNEL=="ttyACM[0-9]*", ENV{ID_MODEL}=="ucGoZilla*", GROUP="users", SYMLINK+="ucgozilla%n"

Установка toolchain

Установка подробно расписана во многих руководствах, например здесь: Building and Installing the GNU Tool Chain.
Если вкратце, на пакетных дистрибьютивах Debian (и сюда же Ubuntu) всё сводится к следующим командам:

aptitude install gcc-avr binutils-avr gdb-avr avr-libc
aptitude install avrdude avrdude-doc


Впрочем, достаточно и aptitude install gcc-avr avrdude: зависимости подтянутся автоматически.
Аналогично на RedHat-based, aptitude заменяется на yum.
Для Fedora:

yum install avr-gcc avr-binutils avr-libc avr-gdb
yum install avrdude


В качестве программатора я выбрал AvrDude, как наиболее полный и известный изо всех имеющихся. Его рекомендуют, я решил не изощряться.

Настройка toolchain

Я долго искал, как правильно настроить toolchain.
Вообще, это индивидуальное дело каждого.
Возможно поставить Atmel Studio, которая сделает правильный Makefile, но хочется проверить, как всё работает, сразу после установки.
Из попыток разобраться получилось два простеньких скрипта для быстрой проверки программатора и toolchain. Один для компиляции, другой для прошивки.
Сценарий make_hex создаст правильный HEX файл:

#!/bin/sh
rm -f "$1".hex
avr-gcc -g -Wall -O1 -mmcu=atmega16 -I. -std=gnu99 -funsigned-char \
-funsigned-bitfields -fpack-struct -fshort-enums "$1.c" -o "$1.elf" && \
avr-objcopy -j .text -j .data -O ihex -R .eeprom -R .fuse -R .lock -R .signature \
"$1.elf" "$1.hex" && \
rm "$1.elf"

Сценарий write_hex запишет прошивку в контроллер:
#!/bin/sh
avrdude -p m16 -B 2 -c stk500v2 -P /dev/ucgozilla0 -e -U flash:w:"$1.hex"

Вызываются сценарии так:
./make_hex test && ./write_hex test

test - имя C-файла без расширения.

Сборка программы

Для сборки должен быть установлен стандартный GNU toolchain с GCC.
Сборка производится следующим образом:

tar xvjf flasher.tbz && cd flasher/ && make

Размер: 40Kb
Загрузить