SinaProg — графическая оболочка для AVRDude

Вот уже много лет я пользуюсь мощнейшей программой для прошивки — avrdude. Программа эта поддерживает почти все виды программаторов, а те что не поддерживает изначально легко в нее добавляются.
Но есть у ней особенность которая сильно отпугивает многих — она консольная. И все шаманства с ней заключаются в формировании командной строки.

С одной стороны это хорошо — консольная утилита позволяет очень сильно ускорить и автоматизировать процесс прошивки. Один раз написал батничек и для перешивки только вызывать его и все.

Остается проблема прошивки разных устройств, ведь под каждую придется делать свой батник. И ладно бы ключи прописать, да файл с прошивкой указать. Самая засада начинается с fuse битами (впрочем, как и везде в мире AVR ;) ) Тут их надо вначале внимательно проштудировать в даташите, выписать в виде байтов, вписать правильно в командную строку и молиться на то, чтобы нигде не ошибиться.
Да, для avrdude написано много оболочек, но все что мне встречались раньше решали лишь малозначительную проблему выбора нужного ключа файла и/или программатора, а фузы также было надо указывать числом.

Проблема решилась с появлением новой версии оболочки SinaProg от команды программистов-террористов из Аль-каиды иранских AVR программеров.

Запускаем… Если не запустилась, то возможно потребуется установить фреймворк от NI — LabView RunTime Library


Морда выглядит простенько и со вкусом. Ничего лишнего. Выбираем в первой строке хекс файла и зашиваем его в нужную память — flash или eeprom.

Следом идет прогресс бар и кнопка открытия консольного лога — ошибки смотреть.

Ниже выбираем тип микроконтроллера, также есть кнопочка поиска — полезно для проверки работы программатора.

Отдельно стоит сказать про секцию Fuses.
Осторожней с выпадающим списком. С виду там все просто, но это на самом деле предустановки, описываются они файле Fuse.txt вот его дефолтное содержание:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Default.
[]
 
ATmega8.ATmega16.
[Int. 1 MHz	d9e1
Int. 2 MHz	d9e2
Int. 4 MHz	d9e3
Int. 8 MHz	d9e4
Ext. Crys.	d9ff]
 
ATmega32.
[Int. 1 MHz	d9e1
Int. 2 MHz	d9e2
Int. 4 MHz	d9e3
Int. 8 MHz	d9e4
Ext. Crys.	d9ff]

Видишь, формат очень прост. Строка контроллера (обязательно с точкой!) и в квадратных скобаках возможные варианты (отделенные табуляцией) с байтами тех самых фузов. Обратите внимание, что тут меняется СРАЗУ ОБА БАЙТА Fuse битов. Т.е. касаются далеко не только тактовой частоты. А еще всего остального что конфигурируется в FUSE. Так что я бы сразу переназвал их иначе. Скажем как
All Default,but 1MHZ
All Default,but 2MHZ
All Default,but 4MHZ

Чтобы было понятней. Но это как бы быстрые шаблоны и не претендуют на глобальность.

Лучше сразу нажать Advanced и узреть … тот самый цифровой ввод.

Но не стоит напрягаться, достаточно нажать кнопочку «С» (видимо авторы имели ввиду Calculator) и увидеть удобнейшие выпадающие списки с человеческим описанием. Прям как в STK500.

Но ни в коем случае не забывайте нажать кнопочку READ перед тем как что либо менять. Помните, неустановленные fuse это тоже какое то значение, которое будет записано при нажатии кнопки WRITE

Конфигурирование программы
Впрочем, все же главным достоинством этой оболочки является ее легкая заточка под любой программатор поддерживаемый через AVRDUDE.

Покажу на примере программатора встроенного в Pinboard (На базе FTDI, но распиновка выводов немного отличная от FTBB описанного ранее).

Закрываем программу, чтобы не мешалась и не держала файлы.

Прописывание конфигурации FTBB в файле avrdude.conf я описывать не буду, подробней я об этом уже писал ранее.

Считаем, что это уже сделано и в файле конфигов avrdude у нас есть нужная секция. Я назвал ее pinb, впрочем, название может быть и произвольным.

Первым делом открываем файл Programmer.txt и видим там список:

1
2
3
4
5
6
7
8
9
10
11
ABCmini
ALF
Arduino
AT ISP
AVR109
AVR910
AVR911
AVRISP
AVRISP 2
AVRISP mkII
AVRISP v2

и еще полторы страницы все известных и не очень типов программаторов. Вписываем там первой строкой наш pinb

1
2
3
4
5
6
7
8
9
10
11
12
ABCmini
pinb
ALF
Arduino
AT ISP
AVR109
AVR910
AVR911
AVRISP
AVRISP 2
AVRISP mkII
AVRISP v2

Все, теперь он в списке, но ему еще надо сопоставить порт. Поэтому открывай файл Port.txt
Вот его дефолтное содержимое:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Default.
[COM1	com1
COM2	com2
COM3	com3
COM4	com4
COM5	com5
COM6	com6
COM7	com7
COM8	com8
COM9	com9
LPT1	lpt1
LPT2	lpt2
LPT3	lpt3]
 
STK500 v2.
[USB	avrdoper]
 
AVRISP mkII.
[USB	usb]
 
USBasp.
[USB	x]

Как видишь, формат тут сходный. Название программатора (с точкой в конце!), а в скобках варианты. Причем первым делом пишем произвольное название порта, а потом то в каком виде он должен подставиться в командную строку avrdude. Между ними табуляция.

Порт FTDI bitbang в консоли называется ft# и номер от нуля до бесконечности. В зависимости от того сколько чипов FTDI навешано на твой компьютер в данный момент. Причем учитываются именно подключенные, активные, чипы. И не стоит путать этот номер с номером виртуального COM порта который этот чип организует. Так что если у тебя в системе всего один адаптер USB-COM на базе FTDI, то какой бы там COM порт ни был, для bitbang программатора он зовется ft0 и никак иначе. На всякий случай добавляем несколько вариантов.

Добавляем туда нашу секцию

1
2
3
4
5
pinb.
[FTDI	ft0
FTDI1	ft1
FTDI2	ft2
FTDI3	ft3]

Осталась еще одна маленькая деталь. Опция скорости. Для обычных программаторов вполне подойдет и дефолтная настройка, но вот незадача — там используется ключ -b, а он меняет только битрейт СОМ порта. А если нам надо менять битклок FTDI битбанг эмуляции порта? Тут в avrdude за это отвечает ключ -B, но Sina его не знает. Придется добавлять. За скорость отвечает файл speed.txt

Вписываем туда нашу скорость в нагрузку к уже имеющейся в таком виде:

1
2
3
4
5
6
7
8
9
10
11
12
13
1200	x -B 1200
2400	x -B 2400
4800	x -B 4800
9600	x -B 9600
14400	x -B 14400
19200	x -B 19200
38400	x -B 38400
57600	x -B 57600
115200	x -B 115200
230400	x -B 230400 
460800	x -B 460800
921600	x -B 921600
3000000	x -B 3000000

Я же, поскольку последнее время пользуюсь только FTDI BB Программатором, удалил вообще из этого файла все и оставил только то, что привел выше.

Отлично, программатор мы прописали и порт мы сопоставили. Даже скорости выправили. Теперь надо сину заставить это дело все прожевать. Для этого берем и удаляем файл SinaProg.sav Не знаю как построена логика программы, но почему то именно это действие заставляет ее перечитать собственные конфиги и добавить наши строки в списки.

Все! Готово — можно шить! Удачной прошивки!

Сайт разработчиков SinaProg (увы сдох :( )
Моя сборка SinaProg с уже настроенными конфигами под Pinboard и FTBB

Запись опубликована в рубрике AVR. Учебный курс, Софт с метками , , , . Добавьте в закладки постоянную ссылку.