Sinaprog

Материал из Документации
Перейти к: навигация, поиск

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

Содержание

Фреймворк необходимый для работы

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

Интерфейс

Sina1.gif

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

Преднастройки FUSE, работа с FUSE

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

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

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

Sina2.gif

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

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

Конфигурирование SinaProg

Впрочем, все же главным достоинством этой оболочки является ее легкая заточка под любой программатор поддерживаемый через AVRDUDE.
Покажу на примере программатора встроенного в Pinboard (На базе FTDI, но распиновка выводов немного отличная от FTBB описанного ранее).
Закрываем программу, чтобы не мешалась и не держала файлы.
Прописывание конфигурации FTBB в файле avrdude.conf я описывать не буду, подробней я об этом уже писал ранее.
Считаем, что это уже сделано и в файле конфигов avrdude у нас есть нужная секция. Я назвал ее pinb, впрочем, название может быть и произвольным.

Прописывание программатора

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

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

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

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

Все, теперь он в списке, но ему еще надо сопоставить порт.

Прописывание нужных портов

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

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

Как видишь, формат тут сходный. Название программатора (с точкой в конце!), а в скобках варианты. Причем первым делом пишем произвольное название порта, а потом то в каком виде он должен подставиться в командную строку avrdude. Между ними табуляция.
Порт FTDI bitbang в консоли называется ft# и номер от нуля до бесконечности. В зависимости от того сколько чипов FTDI навешано на твой компьютер в данный момент. Причем учитываются именно подключенные, активные, чипы. И не стоит путать этот номер с номером виртуального COM порта который этот чип организует. Так что если у тебя в системе всего один адаптер USB-COM на базе FTDI, то какой бы там COM порт ни был, для bitbang программатора он зовется ft0 и никак иначе. На всякий случай добавляем несколько вариантов.
Добавляем туда нашу секцию

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


Прописывание скоростей прошивки

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

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

Я же, поскольку последнее время пользуюсь только FTDI BB Программатором, удалил вообще из этого файла все и оставил только то, что привел выше.
Отлично, программатор мы прописали и порт мы сопоставили. Даже скорости выправили. Теперь надо сину заставить это дело все прожевать. Для этого берем и удаляем файл SinaProg.sav Не знаю как построена логика программы, но почему то именно это действие заставляет ее перечитать собственные конфиги и добавить наши строки в списки.
Все! Готово — можно шить! Удачной прошивки!

Сборки SinaProg

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

Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты