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 11ABCmini 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 12ABCmini 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. Учебный курс, Софт с метками avrdude, GUI, Программатор, Софт. Добавьте в закладки постоянную ссылку.