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

Автор DI HALT
Опубликовано 14 июля 2008 
Рубрики: AVR. Учебный курс, Софт
Метки: , , ,

Вот уже много лет я пользуюсь мощнейшей программой для прошивки — 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»


  1. gremlinable.livejournal.com 16 Фев 2010 9:28

    Гм… Всё бы хорошо, но что там весит 22М??? Даже с учётом того, что оно написано на этом монструозном QT, оно должно быть существенно меньше..
    Добрую половину объёма там занимает lvrt.dll… Если верить гуглу, то это LabVIEW. Может кто объяснить, нахрена там оно и зачем вообще использовать двух этих монстров одновременно? Ещё 5 метров - некий каталог English с файлами “*.rsc”. Не иначе, файлы локализации для лабвью?
    Короче, это жесть…

    DI HALT

    О да, весит она брутально. А судя по портфолио челов - написана она поди на лабьвью. Потому как судя по всему ничо другого они не шарят :)

    gremlinable.livejournal.com

    Хе… Запустил это чудо - действительно ГУИ написано на LV, что не придаёт ему особого быстродействия… =) Тогда вопрос чуть смещается - если оно написано на LV, зачем там QT?
    В общем, идея ничего (я, кстати, сейчас тоже пишу форнтэнд для программатора с ГУИ в похожем стиле, а то шняга из AVRStudio задолбало), но выбор фреймворков странный…

    DI HALT

    Ну сама оболочка работает куда шустрей чем аналогичная в Burn-o-matt (Java) или та же казама.


  2. Medved 16 Фев 2010 10:16

    Оболочка удобная. Пользуюсь ей


  3. Medved 16 Фев 2010 10:26

    Блин не дописал =)
    Оболочка удобная. Пользуюсь ей с USBaspом.
    Когда жмем кнопочку открытия файла прошивки то там можно выбрать не только HEX но еще и EBN.
    И захотелось мне как то сделать клон паралельного программатора который в STK500, а прошивка для него как раз в этом хитром EBN формате. Ну я конечно обрадовался что щас зашью его с помощью дудки и USBasp. Зашил. Зашилось. Но программатор не определялся.. Искал пол дня ошибки в монтаже и ничего не нашел… Потом выяснил что что-то с прошивкой не то.. (должны диодики мигать при включении а у меня не мигали)
    Сконвертировал EBN в HEX и зашил. Программатор завёлся.
    Вот такая вот кривизна. Я не знаю поддерживает ли дудка ЕБН формат. Если нет то это синапрог виноват который криво сконвертил этот файл в hex. Так что будьте осторожны!


  4. Elektroniker 16 Фев 2010 14:01

    А зачем вообше эти оболочки для дудки нужны. Помойму удобней прошивать непосредственно из самого редактора в котором пишеш код.

    DI HALT

    А как ты там выставишь фузы?

    Elektroniker

    Ну фузы выставить не проблема, если юзаеш Eclipse, то там конфигурилка не хуже чем в AVR Studio, если другой какойнибудь редактор кода, например Programmers-Notepad, то фузы можно прописать в мейкфайле, и повесить команду прошивки на хоткеи и вменю редактора…

    Вот есть онлайновый конфигуратор http://www.engbedded.com/fusecalc который выдаёт готовые значения для дудки… один раз прописал в мейкфайле проекта всё что надо, и не надо заморачиватся с сторонними приблудами для программатора.

    neosystem

    +1 НАФИК оболочки для дудки не нужны - только усложняете себе жизнь.

    DI HALT

    Кому как. Я Вот так на память не вспомню какой бит фузов за что отвечает без их человеческого названия. А даташит не всегда бывает под рукой.


  5. kalobyte.com 16 Фев 2010 15:04

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

    DI HALT

    А меня она чет не впечатлила. Самой лучшей оболочкой я пока считаю STK500/JTAG ну и Uniprof


  6. AnatolyUnix 16 Фев 2010 15:59

    Уважаемый 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.

    Спасибо,
    Анатолий!

    AnatolyUnix

    Может его можно как-то обнулить/сбросить?
    И как можно прошить arduino bootloader просто через avrdude?

    Спасибо!

    DI HALT

    Честно говоря хрен знает как прошить ардуино бутлоадер. Никогда эту ересь не ставил :))))

    А через аврдуд просто - накатываешь хекс во флеш и выставляешь фузы как там требует ардуинка.

    DI HALT

    Скорей всего у тебя как то криво фузы встали. Либо кварца нету. Кварц то стоит?

    AnatolyUnix

    Да я просто пытался прошить.
    Нету там не кварца, ничего нету кроме самой схемы программатора.
    Просто программатор и его сразу на выходы МК.
    Я так же собрал саму arduino:
    http://arduino.cc/en/Main/ArduinoBoardSerialSingleSided3
    Но через неё не пробовал прошивать. (там LPT используется)

    AnatolyUnix

    Как же теперь быть?
    Ехать за новым МК? ((

    DI HALT

    Ну так а что ты хотел? Арудино работает с кварцем на 16мгц. Вот она и перестала определяться. Поставь кварц и оживет.

    AnatolyUnix

    Ок. Попробую.
    Т.е. после прошивки МК ждет внешний тактовый генератор?
    А свой не использует?

    Спасибо.

    DI HALT

    После прошивки фузов как указано в ардуине тактирование переключается на внешний кварц, только и всего.

    AnatolyUnix

    Спасибо, сегодня попробую к программатору кварц подрубить через.


  7. xrayman 16 Фев 2010 16:14

    Хм, а что ему надо для работы? Просто скачанная программа выдает экзепшн “Исключение неизвестное программное исключение…”. Сейчас качаю LabView RE, может поможет.

    xrayman

    заработало. ужснах, прога 22 метра, ре для нее еще 37…

    DI HALT

    У меня без всего завелась.

    xrayman

    Ну я не знаю :)
    Можно еще предположить, что после запуска install_giveio надо было перегрузиться. Хотя оно для лпт, не понятно как может влиять на работоспособность всей проги. В общем работает пока, пусть работает :)
    Одна фигня - не пишет прогресс выполнения, хотя бы в %.


  8. Electroniq 16 Фев 2010 20:09

    С момента сборки USBASP юзаю AVR Burn-O-Mat - есть человеческий редактор фьюзов, их защита от новичка, весит довольно мало. Из минусов с натяжкой можно отметить, что проге нужна Java, и она довольно долго грузится(неск секунд). Ну а так очень удобно, скомпилил в студии, переключил окно, нажал Write и все готово. Шьет довольно быстро, 1кБайт/сек с верификацией.


  9. nwanomaly 16 Фев 2010 21:29

    когда-то хотел написать фронтенд для avrdude под никсы на qt. даже кое-что сделал, но всё время руки не доходили долипить. глядя на такое, хочется завершить таки свой минипроектик )


  10. SWG 17 Фев 2010 2:03

    А мне так UniProf пока хватает…


  11. and 17 Фев 2010 21:07

    Uniprof старая версия плоховато работает на быстрых компах, тут дудка стабильней.
    Для avrdude cуществует простая всеплатформенная (виндовс, линукс и мак ) оболочка AVRFUSE
    http://www11.ocn.ne.jp/~maracas/avrfuse.html
    Проверял работает нормально и винде и в лине.
    Версия для винды весит 7.2Метра.

    Kull

    AVRFUSE штука не плохая подтверждаю. Правда в распакованном виде для винды весит 38 Метра.


  12. teh-anon.livejournal.com 11 марта 2010 13:33

    А мне вот синапрог не понравился. Калькулятор фьюз это конечно круто, но выбор скорости не работает, и avrdude произвольные параметры задать нельзя: моя ftbb без параметра -B не работает, ругается ft245_program_enable error, а с ней всё чики пуки. Пользуюсь пока кривоватой японской avrdude-gui

    DI HALT

    В файл 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

    и будет тебе счастье.


  13. Vlad777 13 марта 2010 0:33

    DI!!!! Где же Вы были раньше с этим спиид.тхт??? -))))
    Я тут моз сломал как заставить тиньку 2313 найтись с заводскими фузами!!!
    Победил только с AVR Burn-O-Mat.
    Ствлю в нем параметр скорости 19200 - и все в порядке!

    А Вам удобнее Сина-Прог показался? (Если абстрагироваться от скорости запуска проги?)

    DI HALT

    На форуме своем, где же еще :) Там эту синапрогу обсосали со всех сторон. Спасибо Рэдкату и его теме про модернизированную дудку для FTBB

    Ага. Там все как то понятно и логично. А бурномат у меня толком и не заработал. Все какие то глюки выдавал.


  14. Bit 17 марта 2010 13:46

Оставьте свой отзыв

Вы должны войти, чтобы оставлять комментарии.


Материалы сайта являются авторскими. Копирование и публикация материалов без активной ссылки на первоисточник запрещено.

Реклама: