SinaProg — графическая оболочка для AVRDude
Автор DI HALT
Опубликовано 14 июля 2008
Рубрики: AVR. Учебный курс, Софт
Метки: avrdude, GUI, Программатор, Софт
Вот уже много лет я пользуюсь мощнейшей программой для прошивки — avrdude. Программа эта поддерживает почти все виды программаторов, а те что не поддерживает изначально легко в нее добавляются.
Но есть у ней особенность которая сильно отпугивает многих — она консольная. И все шаманства с ней заключаются в формировании командной строки.
С одной стороны это хорошо — консольная утилита позволяет очень сильно ускорить и автоматизировать процесс прошивки. Один раз написал батничек и для перешивки только вызывать его и все.
Остается проблема прошивки разных устройств, ведь под каждую придется делать свой батник. И ладно бы ключи прописать, да файл с прошивкой указать. Самая засада начинается с fuse битами (впрочем, как и везде в мире AVR ;) ) Тут их надо вначале внимательно проштудировать в даташите, выписать в виде байтов, вписать правильно в командную строку и молиться на то, чтобы нигде не ошибиться.
Да, для avrdude написано много оболочек, но все что мне встречались раньше решали лишь малозначительную проблему выбора нужного ключа файла и/или программатора, а фузы также было надо указывать числом.
Проблема решилась с появлением новой версии оболочки SinaProg от команды программистов-террористов из Аль-каиды иранских AVR программеров.
![]() |
Морда выглядит простенько и со вкусом. Ничего лишнего. Выбираем в первой строке хекс файла и зашиваем его в нужную память — 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
Комментарии
37 комментариев на «SinaProg — графическая оболочка для AVRDude»
Оставьте свой отзыв
Вы должны войти, чтобы оставлять комментарии.








Гм… Всё бы хорошо, но что там весит 22М??? Даже с учётом того, что оно написано на этом монструозном QT, оно должно быть существенно меньше..
Добрую половину объёма там занимает lvrt.dll… Если верить гуглу, то это LabVIEW. Может кто объяснить, нахрена там оно и зачем вообще использовать двух этих монстров одновременно? Ещё 5 метров - некий каталог English с файлами “*.rsc”. Не иначе, файлы локализации для лабвью?
Короче, это жесть…
О да, весит она брутально. А судя по портфолио челов - написана она поди на лабьвью. Потому как судя по всему ничо другого они не шарят :)
Хе… Запустил это чудо - действительно ГУИ написано на LV, что не придаёт ему особого быстродействия… =) Тогда вопрос чуть смещается - если оно написано на LV, зачем там QT?
В общем, идея ничего (я, кстати, сейчас тоже пишу форнтэнд для программатора с ГУИ в похожем стиле, а то шняга из AVRStudio задолбало), но выбор фреймворков странный…
Ну сама оболочка работает куда шустрей чем аналогичная в Burn-o-matt (Java) или та же казама.
Оболочка удобная. Пользуюсь ей
Блин не дописал =)
Оболочка удобная. Пользуюсь ей с USBaspом.
Когда жмем кнопочку открытия файла прошивки то там можно выбрать не только HEX но еще и EBN.
И захотелось мне как то сделать клон паралельного программатора который в STK500, а прошивка для него как раз в этом хитром EBN формате. Ну я конечно обрадовался что щас зашью его с помощью дудки и USBasp. Зашил. Зашилось. Но программатор не определялся.. Искал пол дня ошибки в монтаже и ничего не нашел… Потом выяснил что что-то с прошивкой не то.. (должны диодики мигать при включении а у меня не мигали)
Сконвертировал EBN в HEX и зашил. Программатор завёлся.
Вот такая вот кривизна. Я не знаю поддерживает ли дудка ЕБН формат. Если нет то это синапрог виноват который криво сконвертил этот файл в hex. Так что будьте осторожны!
А зачем вообше эти оболочки для дудки нужны. Помойму удобней прошивать непосредственно из самого редактора в котором пишеш код.
А как ты там выставишь фузы?
Ну фузы выставить не проблема, если юзаеш Eclipse, то там конфигурилка не хуже чем в AVR Studio, если другой какойнибудь редактор кода, например Programmers-Notepad, то фузы можно прописать в мейкфайле, и повесить команду прошивки на хоткеи и вменю редактора…
Вот есть онлайновый конфигуратор http://www.engbedded.com/fusecalc который выдаёт готовые значения для дудки… один раз прописал в мейкфайле проекта всё что надо, и не надо заморачиватся с сторонними приблудами для программатора.
+1 НАФИК оболочки для дудки не нужны - только усложняете себе жизнь.
Кому как. Я Вот так на память не вспомню какой бит фузов за что отвечает без их человеческого названия. А даташит не всегда бывает под рукой.
вот так вот неподходящий инструмент портит всю вещь
еще раз убедился, что лучше софтины от mikroe нет и в ближайшем будущем не будет
а ведь ничего сложного нет в написании морды и главное человеческих фьюзов
хотя бы на .нет
А меня она чет не впечатлила. Самой лучшей оболочкой я пока считаю STK500/JTAG ну и Uniprof
Уважаемый DI HALT!
Подскажите пожалуйста.
Я собрал программатор:
http://easyelectronics.ru/avr-shag-pervyj-programmator
По схеме все верно (травил плату).
Микроконтроллер читается:
root@Anatoly:~# /usr/local/bin/avrdude -n -c test -P /dev/ttyS0 -p m8
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0×1e9307
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Я попытался прошить в него bootloader от arduino.
Конечно через arduino:
http://www.arduino.cc/en/Main/Software
После прошивки, МК перестал у меня отвечать… :(
Коллега, подскажите пожалуйста как быть?
МК умер? Или его так нельзя убить?
Теперь он выдает это:
root@Anatoly:~# /usr/local/bin/avrdude -n -c test -P /dev/ttyS0 -p m8
avrdude: AVR device not responding
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.
Спасибо,
Анатолий!
Может его можно как-то обнулить/сбросить?
И как можно прошить arduino bootloader просто через avrdude?
Спасибо!
Честно говоря хрен знает как прошить ардуино бутлоадер. Никогда эту ересь не ставил :))))
А через аврдуд просто - накатываешь хекс во флеш и выставляешь фузы как там требует ардуинка.
Скорей всего у тебя как то криво фузы встали. Либо кварца нету. Кварц то стоит?
Да я просто пытался прошить.
Нету там не кварца, ничего нету кроме самой схемы программатора.
Просто программатор и его сразу на выходы МК.
Я так же собрал саму arduino:
http://arduino.cc/en/Main/ArduinoBoardSerialSingleSided3
Но через неё не пробовал прошивать. (там LPT используется)
Как же теперь быть?
Ехать за новым МК? ((
Ну так а что ты хотел? Арудино работает с кварцем на 16мгц. Вот она и перестала определяться. Поставь кварц и оживет.
Ок. Попробую.
Т.е. после прошивки МК ждет внешний тактовый генератор?
А свой не использует?
Спасибо.
После прошивки фузов как указано в ардуине тактирование переключается на внешний кварц, только и всего.
Спасибо, сегодня попробую к программатору кварц подрубить через.
Хм, а что ему надо для работы? Просто скачанная программа выдает экзепшн “Исключение неизвестное программное исключение…”. Сейчас качаю LabView RE, может поможет.
заработало. ужснах, прога 22 метра, ре для нее еще 37…
У меня без всего завелась.
Ну я не знаю :)
Можно еще предположить, что после запуска install_giveio надо было перегрузиться. Хотя оно для лпт, не понятно как может влиять на работоспособность всей проги. В общем работает пока, пусть работает :)
Одна фигня - не пишет прогресс выполнения, хотя бы в %.
С момента сборки USBASP юзаю AVR Burn-O-Mat - есть человеческий редактор фьюзов, их защита от новичка, весит довольно мало. Из минусов с натяжкой можно отметить, что проге нужна Java, и она довольно долго грузится(неск секунд). Ну а так очень удобно, скомпилил в студии, переключил окно, нажал Write и все готово. Шьет довольно быстро, 1кБайт/сек с верификацией.
когда-то хотел написать фронтенд для avrdude под никсы на qt. даже кое-что сделал, но всё время руки не доходили долипить. глядя на такое, хочется завершить таки свой минипроектик )
А мне так UniProf пока хватает…
Uniprof старая версия плоховато работает на быстрых компах, тут дудка стабильней.
Для avrdude cуществует простая всеплатформенная (виндовс, линукс и мак ) оболочка AVRFUSE
http://www11.ocn.ne.jp/~maracas/avrfuse.html
Проверял работает нормально и винде и в лине.
Версия для винды весит 7.2Метра.
AVRFUSE штука не плохая подтверждаю. Правда в распакованном виде для винды весит 38 Метра.
А мне вот синапрог не понравился. Калькулятор фьюз это конечно круто, но выбор скорости не работает, и avrdude произвольные параметры задать нельзя: моя ftbb без параметра -B не работает, ругается ft245_program_enable error, а с ней всё чики пуки. Пользуюсь пока кривоватой японской avrdude-gui
В файл speed txt добавь следующее
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
и будет тебе счастье.
DI!!!! Где же Вы были раньше с этим спиид.тхт??? -))))
Я тут моз сломал как заставить тиньку 2313 найтись с заводскими фузами!!!
Победил только с AVR Burn-O-Mat.
Ствлю в нем параметр скорости 19200 - и все в порядке!
А Вам удобнее Сина-Прог показался? (Если абстрагироваться от скорости запуска проги?)
На форуме своем, где же еще :) Там эту синапрогу обсосали со всех сторон. Спасибо Рэдкату и его теме про модернизированную дудку для FTBB
Ага. Там все как то понятно и логично. А бурномат у меня толком и не заработал. Все какие то глюки выдавал.
http://khazama.com/project/programmer/