8-900-374-94-44
[email protected]
Slide Image
Меню

Графическая оболочка для avrdude в linux – Avrdude — , linux

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]

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

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

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]

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]

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

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

easyelectronics.ru

РадиоКот :: Программирование AVR под Linux

РадиоКот >Статьи >

Программирование AVR под Linux

Наверное каждый кто пишет программы под AVR микроконтроллеры и имеет на компе Linux задумывался о том чтобы писать именно на нем. И часто это оказывается не так просто. Проблема тут в отсутствии единого подхода. Каждый выкручивается как может. В отличии от Windows, где поставил AVRstudio и все готово. (конечно и под винду есть другие варианты, но статья не об этом). Лично для меня этот вопрос был одной из главных трудностей при переходе на Linux. И даже когда я уже по большей части сидел только на нем, все равно частенько приходилось загружать Windows чтоб запустить родную студию 🙂 Поэтому я решил написать статейку на эту тему. Надеюсь она снимет некоторые вопросы у желающих писать программки для AVR под линуксом. Статья ориентирована скорее на начинающих, поэтому все будет подробно разжевано, а все консольные команды с пояснениями. Используется дистрибутив Linux Ubuntu, но все прокатит и на любом другом.

geany - прокачанный текстовый редактор с кучей вкусностей о которых ниже, в нем мы будем писать исходные коды.
avra или gcc-avr - компилятор для AVR, он превратит наш исходный код в прошивку для контроллера.
avrdude

- крутой прошивальщик который поддерживает кучу разных программаторов и контроллеров, с его помощью будем заливать прошивку в контроллер.
Устанавливаем все это добро. Открываем терминал и вводим:

    sudo apt-get install geany
    sudo apt-get install avra
    sudo apt-get install gcc-avr
    sudo apt-get install avrdude

Возможно, некоторых программ не будет в стандартных репозиториях - тогда репозитории с ними нужно подключить, отредактировав файл /etc/apt/sources.list (после этого не забываем sudo apt-get update) или собрать из исходников. Короче, если что-то из этого на ваш дистрибутив не поставится - погуглите.

Теперь нам понадобится папка с аппноутами для каждого микроконтроллера. Можно взять из недр AVRstudio у кого она есть, но там в дефайнах используется символ '#' на который ругается avra, так что во вложениях к статье есть архив с "хорошими" дефайнами. В эту же папку я кладу свои файлики с макросами которые я использую. Когда все это есть можно уже в принципе приступать к написанию кода. У меня в домашней директории есть папка Projects, а в ней папка AVR, в которой у меня лежит папка APPNOTES а так же все проекты (каждый в отдельной папке).

Таким образом путь, скажем, к дефайну для ATmega8 ~/Projects/AVR/APPNOTES/m8def.inc
А к исходному коду проекта Example ~/Projects/AVR/Example/Example.asm
Все дальнейшее в статье будет изложено исходя из такой структуры, хотя от этого мало что зависит и не составит труда адаптировать все это дело к другой системе.
Пишу я все на ассемблере, но опять же, не составит труда проделать то же самое на С, просто надо использовать gcc-avr вместо avra.

1. Создаем в Geany файл Example.asm с исходным кодом

2. Компилируем его с помощью avra:
    avra --includepath ~/Projects/AVR/APPNOTES Example.asm
Опция --includepath указывает путь к папке, из которой будут браться все инклуды по умолчанию.
Т.е. в коде подключение файла с дефайнами будет выглядеть как .include "tn2313def.inc"
Примечательно, что в справке к avra эта опция значится как --includedir, но если так и ввести, то сама же avra начинает на это ругаться 🙂 так что пишем именно --includepath

Если в коде будут встречены ошибки, avra напишет нам об этом в консольку, с указанием номеров строк с ошибками. Если компиляция прошла успешно, то мы получим файлик Example.hex который нам и назо залить в контроллер.

3. прошиваем контроллер через avrdude
    sudo avrdude -p t2313 -c usbasp -U flash:w:Example.hex
Опции:
 -p указывем тип контроллера
 -c - используемый программатор
 -U указывает файл, с которым будет работать прошивальщик
Модификаторы flash:w: определяют каким образом будет использоваться указанный файл. В данном случае - запись во флеш.

Все, в принципе тут можно и остановиться, но ведь это неудобно до жути - каждый раз руками лапами вбивать всю эту лабуду в консоль. Да еще и в голове держать синтаксис команд, а она-то не резиновая. Вот тут то и настало время "вкусностей" Geany, из-за которых мы именно его и выбрали. Geany задуман как редактор именно для программистов, поэтому в нем есть три абстрактных действия с файлами: компиляция, сборка и запуск. При этом пользователь может сам определить какие команды должны выполняться в этих действиях.
Таким образом, мы получаем возможность повесить запуск avra на действие "компиляция" (или gcc-avr если вы пишете на С) а на "запуск" - avrdude. Еще останется свободным "сборка".
Запускаем наш редактор, открываем файл с исходником и жмем Сборка - Установить комманды сборки.
Видим вот такое окошко:

В поля "Скомпилировать" и "Выполнить" (на скрине подсвечено оранжевеньким) вводим соответственно команды для компиляции и прошивки в кристалл программы.
Все замечательно, но как указать имя файла если мы заранее его не знаем? Тут на помощь приходят 4 шаблона, которые Geany подставляет в команды в процессе их выполнения:
 %f - имя текущего файла (в данном случае это Example.asm)
 %e - имя текущего файла без расширения (Example)
 %d - путь к папке, в которой лежит текущий файл (~/Projects/AVR/Example/)
 %p - путь к текущему проекту (я так и не разобрался что это значит, но не важно :))
Так что команда для компиляции будет выглядеть так:

    avra --includepath ~/Projects/AVR/APPNOTES %f

А для прошивки:

    sudo avrdude -p t2313 -c usbasp -U flash:w:%e.hex

Теперь для того чтобы программа скомпилировалась достаточно нажать F8 (или кнопочку с треугольником и кружочком в самом верху), а чтобы прошилась в контроллер - F5 (или кнопочку с шестеренками).

Так гораздо удобнее, но все еще не идеально - avrdude требует запуска через sudo, поэтому нужно каждый раз вводить пароль при прошивке. Для устранения этой досадной несправедливости откроем терминал и введем:

   sudo chmod +s /usr/bin/avrdude

Этим мы открываем права на запуск avrdude. Теперь можно запускать avrdude без sudo:

    avrdude -p t2313 -c usbasp -U flash:w:%e.hex

Но и теперь процесс не полностью автоматизирован - если мы вдруг решили написать прогу для другого контроллера, то по прежнему нужно лезть в настройки и менять опцию -p у avrdude. Как заставить Geany самому распознавать контроллер? А например по строчке .include "m8def.inc" которая есть в каждой программе.
Для этого давайте напишем небольшой скрипт, который будет это делать. Вернее я его уже написал, а вам предлагается только почитать комментарии к нему, или даже просто скопипастить 🙂 Вот он:

    WARNING!!! В статье не отображаются бекслэши, поэтому они заменены обычными слешами красного цвета: /

    PART=`grep -m 1 "/.include /".*def/.inc/"" %f | grep -o "/(tn/|m/)[0-9]/+" | sed "s/tn/t/g"` && echo "target device: $PART" && avrdude -p $PART -c usbasp -U flash:w:"%e.hex" && exit

(В конце статьи есть файлик filetypes.asm, в котором все это есть. Можно вместо переписывания скриптов просто закинуть его куда надо (~/.config/geany/filedefs/filetypes.asm))

Всю эту здоровенную строку нужно вбить в поле "Выполнить"
Пояснения:
Сначала мы создаем строковую переменную PART, в которую заносим результат выполнения скрипта, определяющего тип контроллера (о самом скрипте чуть ниже)
Затем выводим в консоль название распознанного контроллера (просто так, для справки), потом запускаем avrdude, подставляя в него нужную опцию, ну и в конце я добавил exit чтоб окно терминала само закрывалось после удачной прошивки.
У связки && есть одна приятная особенность: следующая команда выполняется только в случае успешного завершения предыдущей. Таким образом, если при прошивке что-то пошло не так терминал не закроется и мы сможем почитать об ошибках.
Теперь подробнее о скрипте:
первый grep находит в файле с исходником строчку вида .include "[тут что угодно]def.inc", опция -m 1 указывает что не стоит продолжать поиск, если хотя бы одна строка найдена.
Второй получает то что нашел первый и его задача из всей строки высосать именно название контроллера. Делается это с помощью шаблона, задающего вид имени контроллера и опции -o которая говорит ему чтоб выводил только тот кусок что нашел, а не всю строку. Я использую только меги и тиньки, поэтому у меня только tn и m, но вы можете адаптировать скрипт и для других серий. Например для xmega будет (tn|m|x) а для AT90S (tn|m|x|[0-9]) (у AT90S название только из цифр) ну и так далее.
Последняя команда sed заменяет tn на t. Дело в том, что в аппноутах от Атмела тинька 2313 например зовется как tn2313, а avrdude ее понимает как t2313. Вот и приходится изворачиваться.

Ну вот, теперь все совсем уж замечательно и в конечном виде команды компиляции и прошивки выглядят так:

    avra --includepath ~/Projects/AVR/APPNOTES %f

    PART='grep -m 1 "/.include /".*def/.inc/"" %f | grep -o "/(tn/|m/)[0-9]/+" | sed "s/tn/t/g"' && echo "target device: $PART" && avrdude -p $PART -c usbasp -U flash:w:"%e.hex" && exit

Осталась последняя маленькая деталь, которую стоит обсудить - фьюзы.
В принципе, avrdude позволяет их устанавливать, но для этого нужно укурившись даташитом пересчитать их в шестнадцатеричную систему и потом подсунуть в avrdude. Учитывая высокую вероятность ошибки и крайнюю трагичность ее последсятвий такой вариант сразу отметается. Мы же будем для этого юзать графическую оболочку к avrdude - avr 8 burn'o'mat. Качаем deb-пакет с их сайта, устанавливаем. У меня он просто так ставиться не захотел, пришлось подредактировать кое-что. Во вложениях к статье - исправленный deb-пакет. Если возникнут с этим проблемы - пишите в форум, разберемся.

При первом запуске ее нужно настроить. Переходим во вкладку Settings - AVRDUDE
Видим вот такое окно:

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

Перед исправлением фьюзов сначала обязательно их считывайте с кристалла! Да и вообще, поаккуратней с ними 🙂

Можно даже запуск avr8-burn-o-mat повесить на оставшееся свободным действие "Сборка". Тогда вообще все просто замечательно выходит: F8 - скомпилировать, F5 - прошить, F9 - поправить фьюзы.

Ну вот и все, теперь вы сможете с легкостью писать AVR программки из-под вашего любимого линукса.
Удачи вам и правильных фьюзов 🙂

Файлы:
Архив с аппноутами для avra
deb-пакет с графической оболочкой для avrdude
~/.config/geany/filedefs/filetypes.asm

Все вопросы в Форум.


Как вам эта статья?

Заработало ли это устройство у вас?

www.radiokot.ru

AVRDUDE

Консольная программа для считывания, изменения и записи содержимого памяти микроконтроллеров архитектуры AVR, применяющая технологию внутрисхемного программирования.

AVRDUDE (сокращение от AVR Downloader-Uploader) представляет собой мощную утилиту, позволяющую посредством консольного интерфейса работать с памятью и прошивать микроконтроллеры от компании Atmel. AVRDUDE основана на распространенном интерфейсе обмена данными с микросхемами – SPI. Программа позволяет прошивать FLASH- и EEPROM-память, программировать фьюзы, выполнять верификацию FLASH-памяти с выбранным HEX-файлом, работать в терминальном режиме и многое другое.
Данный софт получил огромную популярность вследствие поддержки широчайшего спектра микроконтроллеров и программаторов (FT2232, Atmel AVR ISP, Altera ByteBlaster, Atmel STK500 и STK600, USBasp, Brian Dean’s Programmer, Dontronics DT006, Pony Prog STK200, Bascom SAMPLE programming cable и многих-многих других), работающих через интерфейсы параллельного и последовательного портов. Кроме официальных программных аппаратных средств от Atmel возможна работа с любительскими изделиями, не поддерживаемыми AVR Studio.

Главной особенностью программы является консольный интерфейс, требующий определенных навыков работы. Однако сторонними разработчиками для AVRDUDE был создан ряд удобных графических оболочек полезных при изучении содержимого памяти микроконтроллеров, изменения отдельных байтов EEPROM, Lock- и Fuse-битов. Программировать же всю память кристалла удобно из командной строки AVRDUDE.

В отличие от AVR Studio, полезной лишь в процессе создания и отладки программного кода, AVRDUDE больше подходит для серийного прошивания готовых продуктов. Для работы с повседневными однотипными задачами пользователю не требуется каждый раз набирать команды вручную, поскольку программа может работать с пакетными файлами. Для этого необходимо создать bat-файл и прописать в нем ключи, указать файл с прошивкой и, самое главное, верно внести в командную строку Fuse-биты. В дальнейшем будет достаточно лишь запускать bat-файл на выполнение. Для разных устройств необходимо создавать свой батник.

Программное обеспечение AVRDUDE имеет статус GNU GPL, что дает возможность каждому пользователю свободно скачивать ее, изменять по собственному желанию и распространять дальше. Благодаря этому AVRDUDE вошла в состав различных сред для разработки программ микроконтроллеров AVR, например WinAVR.

Установить данный софт можно вместе с пакетом WinAVR (для запуска необходимо написать в командной строке: avrdude) или скачать все нужные файлы, включая исходный код, с официального сайта программы: http://download.savannah.gnu.org/releases/avrdude/.

Первоначальный код AVRDUDE был создан английским программистом Брайеном Дином (http://www.bsdhome.com/). Программа была написана для операционной системы FreeBSD и распространялась под названием AVRprog. В связи с растущим интересом к данному продукту Брайан решил портировать его на другие операционные системы и выложить в свободном доступе. Изменение названия на AVRDUDE произошло, чтобы не было путаницы с утилитой AVRprog, распространяемой компанией Atmel в составе AVR Studio.

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

Программа AVRDUDE представлена в вариантах для Windows и Linux. Windows-версия поддерживает все известные операционные системы Microsoft, включая Vista и 7. Поскольку в Windows 2000 и Windows XP возможность работать напрямую с параллельным портом компьютера заблокирована, для нормального функционирования AVRDUDE потребуется самостоятельно установить драйвер giveio.sys, поставляемый с программой. В Windows 98 дополнительные настройки не требуются.

Распространение программы: Freeware (бесплатная)

Официальный сайт программы "AVRDUDE": http://download.savannah.gnu.org/releases/avrdude/

Скачать AVRDUDE

Обсуждение программы на форуме

cxem.net

Как пользоваться avrdude, быстрый старт | avr

Наверняка у Вас уже есть макетная плата на микроконтроллере AVR (скорее всего Arduino Uno на микроконтроллере ATmega328P или какая-нибудь аналогичная), и Вы хотите научиться её программировать, т. е. прошивать программу в память кристалла микроконтроллера. Есть множество различных способов, здесь будет рассмотрен вариант использования такого универсального инструмента как avrdude.

Почему следует использовать avrdude? По многим причинам - он бесплатен, работает на любых операционных системах (Linux, Windows, MacOS), поддерживает все популярные протоколы программирования. Т. е. может работать с любым программатором (USBasp, AVR-mkII и т. д. [3]), в том числе и с загрузчиками Arduino и USBasp [4,5].

Avrdude это утилита командной строки, так что для её использования придется изучить её опции, которыми настраивается тип программатора, задается программируемый чип, файл прошивки и фьюзы. Поначалу это может показаться сложным, но если разобраться, то окажется, что командная строка это очень удобно, потому что предоставляет универсальный способ работы со многими средами программирования. Например, можно писать программы для AVR даже в среде Microsoft Visual Studio, запуская процесс компиляции с помощью команд makefile, и прошивать память микроконтроллера настройкой запуска внешней команды прямо из Visial Studio (подробнее см. [6]). Утилиту avrdude использует также среда программирования Arduino для прошивки памяти микроконтроллера платы через загрузчик UART.

[Где взять avrdude]

Ссылки для загрузки AVRDUDE лучше всего найти с помощью Google. Обычно avrdude.exe находится в пакете утилит разработчика WinAVR, также она входит в пакет среды разработки Arduino IDE. Поэтому скачайте и установите либо WinAVR, либо среду разработки Arduino. Как вариант, можете скачать архив [12], там найдете все необходимое для этой статьи, в том числе и утилиту avrdude.

Различные версии avrdude и PDF-документацию можно найти по ссылке http://download.savannah.gnu.org/releases/avrdude/.

Онлайн-документация: http://www.nongnu.org/avrdude/user-manual/avrdude.html.

[Запуск avrdude]

В операционной системе Windows требуется открыть окно интерпретатора команд cmd.exe. Для этого в Start Menu (кнопка ПУСК) выберите команду Run... (Выполнить...), в окне приглашения введите cmd и кликните по кнопке OK.

В операционной системе MacOS X можете использовать программу Terminal для получения доступа к интерфейсу ввода команд. Программа Terminal находится в папке Utilites.

Теперь в окне терминала введите команду avrdude и нажмите Ender, в результате утилита avrdude выдаст подсказку в виде списка основных опций.

[Описание опций AVRDUDE]

Опций довольно много. Не пытайтесь их все запомнить, нужно просто иметь общее представление о том, что эти опции могут делать.

-p partno: эта опция просто говорит утилите, какой микроконтроллер AVR будет программироваться. Например, если Вы собрались программировать ATtiny2313, то в качестве partno введите attiny2313.

-b baudrate: эта опция используется для настройки скорости последовательной передачи данных (через RS-232, UART) для программаторов, работающих по протоколам наподобие STK200 или STK500 STK500. Часто эту опцию использовать необязательно, потому что подходит скорость, настроенная по умолчанию.

-B bitrate: эта опция меняет скорость следования бит, на которой программатор общается с программируемым чипом. Если Ваш микроконтроллер тактируется очень низкой частотой, то потребуется снизить скорость данных программирования. Обычно микроконтроллер работает на высокой частоте (8 МГц и выше, особенно если используется кварцевый резонатор), так что эта опция применяется редко.

-C config-file: это файл конфигурации, который говорит avrdude о различных способах, как ему общаться с программатором. Имеется файл конфигурации по умолчанию, который используется без указания -C опции, так что эта опция обычно не нужна.

Если путь до файла имеет пробелы, то его следует брать в двойные кавычки. Например: -C"C:\Program Files\Arduino1.0.6\hardware\tools\avr\etc\avrdude.conf".

-c programmer: эта опция задает тип программатора (его протокол). Например, если используете STK500, то укажите stk500, если используете программатор DT006, то укажите dt006, и т. д.

-D: опция запрещает очистку памяти чипа перед программированием. Скорее всего, эта опция Вам никогда не потребуется.

-P port: опция задает порт обмена данными между компьютером и программатором. Это может быть COM1, LPT1 или USB.

-F: опция отменяет проверку сигнатуры, которая позволяет убедиться, что программируемый чип именно тот, который нужен. Настоятельно рекомендуется выполнять эту проверку для тестирования соединения, поэтому не используйте эту опцию.

-e: опция очистки памяти чипа. Обычно её использовать не нужно, потому что очистка FLASH выполняется автоматически перед программированием.

-U memtype:r|w|v:filename[:format]: а вот эта команда уже по-настоящему важна. Именно одна задает, какое именно программирование будет произведено. Здесь memtype может быть flash или eeprom для памяти, либо hfuse, lfuse или efuse для конфигурационных фьюзов чипа. Буквы r|w|v обозначают операцию над памятью, т. е. r (read, чтение), w (write, запись) или v (verify, проверка памяти). Часть команды filename задает имя файла, который будет прочитан или записан во время выполнения команды. [:format] задает опцию формата файла. Чаще всего используется формат Intel Hex [7], и файл данных обычно получает расширение *.hex". Если Вы хотите записать, например, файл test.hex в память flash, то должны использовать -U flash:w:test.hex:i. Если хотите прочитать память eeprom в файл "eedump.hex", то должны использовать команду -U eeprom:r:eedump.hex:i.

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

-n: это означает, что никаких действий записи производиться не будет. Команда полезна, когда Вы хотите гарантировать, что ни одна из отправляемых команд не повредит содержимое памяти чипа. Это разновидность 'блокировки безопасности'.

-V: выключает автоматическую проверку содержимого памяти при записи. Не советую использовать эту опцию, потому что проверка дает дополнительную уверенность, что память записана правильно.

-u: запрет режима безопасности. Это установка по умолчанию, когда avrdude запускается из скрипта. Если хотите модифицировать биты фьюзов, то используйте эту опцию, чтобы явно подтвердить свои намерения (подавляет дополнительный запрос подтверждения).

-t: запускает режим терминала, когда Вы вводите команды строка за строкой. Не используйте этот режим, поскольку это добавляет сложности.

-E: выводит некоторые спецификации программатора, не используйте эту опцию.

-v: опция включает подробный вывод сообщений. Это может потребоваться для диагностики, чтобы получить дополнительную информацию. Обычно эта опция не нужна.

-q: действие этой опции дает противоположный эффект по сравнению с опцией -v, т. е. количество выводимой информации уменьшается. Обычно эта опция также не используется.

В этом списке красным цветом выделены те опции, которые скорее всего Вам понадобятся. Давайте рассмотрим подробнее использование этих опций.

[-c programmer]

Чтобы получить список поддерживаемых программаторов (и найти тот, который у Вас), введите команду avrdude -c qwerty (здесь qwerty это произвольный набор символов, который не соответствует ни одному из поддерживаемых программаторов). Как результат выполнения команды будет выведен список поддерживаемых программаторов.

Найдите в этом списке имя, соответствующее Вашему используемому программатору. Это имя следует подставлять в опцию -c programmer.

[-p partno]

Чтобы получить список программируемых микроконтроллеров AVR, введите команду avrdude -c avrisp (при этом не имеет значения, используете ли Вы реально программатор avrisp) без указания имени микроконтроллера. Не следует запоминать этот длинный список, он используется только для того, чтобы узнать нужное имя для программируемого микроконтроллера, которое следует подставлять в командную строку вместе с опцией -p partno.

В этом списке указаны псевдонимы всех чипов микроконтроллеров, о которых знает avrdude. Большинство из них программируются через интерфейс ISP.

Обратите внимание, что названия моделей чипов t2313 и 2313, m8 и m88, c128 и m128 выглядят очень похоже, но на самом деле это абсолютно разные модели микроконтроллеров! Поэтому во избежание ошибки советую Вам вместо псевдонима чипа ввести его полное имя. Т. е. вместо t2313 используйте attiny2313, или вместо m8 используйте atmega8. Avrdude достаточно умен, чтобы распознать правильно тип чипа по его полному имени.

Внимательно проверьте модель программируемого чипа по маркировке на его верхней стороне корпуса. К примеру, там может быть написано ATTINY2313 и ATMEGA8, Суффиксы -20PI и -16PC в маркировке просто указывают скоростные параметры микроконтроллера, и при программировании на эти суффиксы не стоит обращать внимания.

[-P port]

Эта опция говорит avrdude, где искать Ваш подключенный программатор. Если Вы используете устройство, подключенное через USB, то просто примените опцию -P usb или вообще не указывайте её. Утилита avrdude автоматически распознает подключение для программатора, который является устройством USB.

Если Вы используете параллельный (LPTx) или последовательный (COMx) порт для подключения программатора (что сейчас уже почти не актуально, потому что компьютеры с такими портами уже практически не выпускаются), то должны использовать эту опцию, чтобы показать порт, к которому подключен программатор. На операционной системе Windows в 99% случаев это будет lpt1 (для параллельного порта) или com1 (для последовательного порта), но Вы можете всегда проверить это через просмотр раздела "Ports (COM & LPT)", по-русски это раздел "Порты (COM и LPT)" дерева Device Manager (Менеджер Устройств). Откройте управляющую панель System Properties (Свойства Системы), и выберите закладку Hardware (Оборудование):

Кликните на кнопке Device Manager (Менеджер Устройств), и разверните пункт Ports (Порты).

Здесь будут перечислены все имеющиеся на компьютере параллельные и последовательные порты. Может быть несколько последовательных портов, но обычно параллельный порт (так называемый порт принтера) только один.

На компьютерах Mac не бывает традиционных параллельных и последовательных портов. Однако если Вы используете адаптер USB-serial (что делает возможным использовать программаторы STK500 или AVRISP v1 вместе с компьютером Mac), то для avrdude нужно указать последовательный порт. Не пока знаю надежного способа определять порт подключения, однако использую для этого окно терминала, где нужно ввести команду ls -l /dev/cu.* (скорее всего, на Linux подойдет примерно такой же способ, или можно использовать команду dmesg). Ниже приведен скриншот примера вывода этой команды.

/dev/cu.Bluetooth это встроенный порт bluetooth, он не нужен. /dev/cu.modem это модем (если он имеется на Вашем компьютере), его также не нужно использовать. Обратите внимание на порты наподобие /dev/cu.usbserial или /dev/cu.KeySerial1. В моем случае это порт /dev/cu.usbserial-FTCTYG5U.

[-U memtype:r|w|v:filename:format]

Это опция, которая описывает, как реально будут записываться данные в программируемый микроконтроллер. Команда выглядит довольно сложной, но мы рассмотрим её по частям.

memtype может быть либо flash, либо eeprom, либо hfuse (старший байт фьюзов), либо lfuse (младший байт фьюзов) или efuse (расширенный байт фьюзов).

r|w|v может быть либо r (read, чтение), w (write, запись), v (verify, проверка).

filename имя входного (для записи или проверки) или выходного (для чтения) файла.

[:format] не обязательная опция, указывающая формат файла. Можно опустить эту опцию при записи, но для чтения указывайте i, чтобы выходной файл получил формат Intel Hex [7] (это наиболее распространенный формат файла).

Для примера, чтобы записать файл firmware.hex в память программ (flash), используйте команду -U flash:w:firmware.hex, чтобы проверить содержимое памяти eeprom на соответствие файлу mydata.eep, используйте команду -U eeprom:v:mydata.eep, и для чтения младшего байта фьюзов используйте команду -U lfuse:r:lfusefile.hex:i.

[Как программировать]

В примерах ниже я буду использовать программатор mkII-slim [8] (это клон фирменного AVRISP-mkII компании Atmel) и загрузчик USBasp на примере программирования чипов ATmega328P и ATmega32A через интерфейс ISP и через интерфейс USB. Само собой, Вы должны будете ориентироваться на Ваш конкретный программатор, программируемый чип и его фьюзы.

Подготовьте Вашу программируемую плату, удостоверьтесь, что можете подключить к ней питание (для программирования требуется наличие питания на программируемом микроконтроллере). Плата может питаться как от отдельного внешнего источника питания, так и от коннектора программатора, если он это позволяет.

Прошивать я буду тестовый пример, мигающий светодиодом на плате (так называемый Hello World для мира микроконтроллеров). Если кому-то интересно, то код этого примера приведен во врезке, или можете скачать его проект AVR Studio по ссылке [12] (см. папку HelloWorld архива).

Запишите файл прошивки (Hello-World-Arduino-ATmega328.hex, Hello-World-metaboard-ATmega328.hex или Hello-World-ATmega32A.hex, или другой, в зависимости от микроконтроллера, который будете программировать) в заранее известный каталог на диске, например C:\temp. Этот путь до файла будем использовать для команды -U. Готовые прошивки можно взять из папке HEX архива [12].

Все платы Arduino обычно программируются одинаково, через интерфейс USB. При этом используется загрузчик UART (интерфейс USB организован аппаратно, с помощью специального отдельного чипа). В этом примере в плату Arduino Nano будет записана прошивка HEX\Hello-World-Arduino-ATmega328.hex. Загрузчик использует функцию самопрограммирования памяти программ AVR [9]. Обратите внимание, что фьюзы таким способом записать нельзя (самопрограммирование памяти программ микроконтроллера AVR не распространяется на фьюзы).

При компилировании прошивки Hello-World-Arduino-ATmega328.hex было учтено, что светодиод подключен к порту PB5 (цифровой порт D13 Arduino).

#define LED    PB5      //Для плат Arduino Uno и metaboard.

Подключите плату Arduino Nano через USB (при этом на микроконтроллер ATmega328 будет подано питание), и выполните команду:

avrdude -C"C:\Program Files\Arduino1.0.6\hardware\tools\avr\etc\avrdude.conf" -pm328p -carduino
 -PCOM20 -b57600 -Uflash:w:c:\temp\HEX\Hello-World-Arduino-ATmega328.hex:i

Примечание: здесь подразумевается, что виртуальный COM-порт, через который подключена плата Arduino, имеет имя COM20.

При компилировании прошивки Hello-World-ATmega2560.hex было учтено, что светодиод подключен к порту PB7 (цифровой порт D13 Arduino).

#define LED    PB7      //Для платы Arduino MEGA 2560

Подключите плату Arduino MEGA 2560 через USB (при этом на микроконтроллер платы будет подано питание), и выполните команду:

avrdude -C"C:\Program Files\Arduino1.0.6\hardware\tools\avr\etc\avrdude.conf"
 -patmega2560 -cwiring -P\\.\COM155 -b115200 -D -Uflash:w:c:\temp\Hello-World-ATmega2560.hex.hex

Примечание: здесь подразумевается, что виртуальный COM-порт, через который подключена плата Arduino, имеет имя COM155.

В плату metaboard [11] записан загрузчик USBasp, эмулирующий поведение программатора USBasp. Интерфейс USB реализован программно, с помощью библиотеки V-USB. Как и в предыдущем примере с Arduino, фьюзы записать нельзя, мы будем записывать только память программ.

При компилировании прошивки Hello-World-metaboard-ATmega328.hex было учтено, что светодиод подключен к порту PB5.

#define LED    PB5      //Для плат Arduino Uno и metaboard.

Для записи прошивки подключите плату metaboard через USB, удерживая при подключении кнопку S1 Reset, после подключения к USB кнопку отпустите (это активирует работу загрузчика), и выполните команду:

avrdude -patmega328 -cusbasp -Uflash:w:c:\temp\Hello-World-metaboard-ATmega328.hex

Чтобы убедиться, что записанная программа работает и светодиод мигает, подключите его через резистор 330..470 ом к порту PB5 (ножка 6 коннектора IP2 платы metaboard), что соответствует цифровому порту D13 Arduino.

На плату AVR-USB-MEGA16 установлен микроконтроллер ATmega32A, и также используется загрузчик USBasp на основе все той же библиотеки V-USB. Поэтому программирование будет осуществляться аналогично. Перед подключением платы AVR-USB-MEGA16 к USB установите перемычку между контактами 4 и 6 коннектора U1 ISP, это активирует работу загрузчика:

И запустите следующую команду:

avrdude -patmega32 -cusbasp -Uflash:w:c:\temp\Hello-World-ATmega32A.hex

После программирования будет мигать светодиод D1, подключенный к ножке PB1 микроконтроллера, см. схему платы в статье [10]. При компилировании прошивки Hello-World-ATmega32A.hex было учтено, что светодиод подключен к порту PB0.

#define LED    PB0      //Для платы AVR-USB-MEGA16.

Здесь рассматривается другой способ программирования - через интерфейс ISP, с помощью программатора mkII-slim [8]. Этот способ позволяет программировать также и фьюзы, однако требует наличия программатора.

Подключите сначала программируемую плату к программатору через интерфейс ISP. Перемычка питания на программаторе mkII-slim должна быть установлена в положение "5V". Обратите внимание, что в данном примере питание на программируемую плату подается через программатор, поэтому подключать плату AVR-USB-MEGA16 к USB не обязательно.

Для подключения через ISP понадобится плоский кабель из 6 проводов мама-мама:

1 -------------MISO------------ 1
2 -------------VCC------------- 2
3 -------------SCK------------- 3
4 -------------MOSI------------ 4
5 -------------~RST------------ 5
6 -------------GND------------- 6

После того, как соединили кабелем ISP программируемую плату и программатор, подключите программатор через USB и для программирования памяти программ выполните команду:

avrdude -p atmega32 -P usb -c avrispmkii -e -U flash:w:c:\temp\Hello-World-ATmega32A.hex

Как программировать фьюзы:

avrdude -p atmega32 -P usb -c avrispmkii -U lfuse:w:0xCF:m -U hfuse:w:0x98:m

Программирование платы Arduino Uno, на которой установлен микроконтроллер ATmega168, плата подключена к компьютеру через виртуальный порт COM4:

avrdude -F -v -pm168 -cstk500v1 -P\\.\COM4 -b19200 -D -Uflash:w:"firmware.hex":i

Программирование ATtiny2313 с помощью программатора USBtiny [2]:

type in avrdude -c usbtiny -p attiny2313 -U flash:w:firmware.hex

Программирование через параллельный bitbang-программатор DT006 (такой как MiniPOV2):

avrdude -c dt006 -P lpt1 -p attiny2313 -U flash:w:firmware.hex

Программирование через последовательный bitbang-программатор DASA (такой как MiniPOV3):

avrdude -c dasa -P com1 -p attiny2313 -U flash:w:firmware.hex

Программирование платы разработчика STK500 (она работает как одноименный программатор):

avrdude -c stk500 -P com1 -p attiny2313 -U flash:w:firmware.hex

Программирование через программатор AVRISP v2 USB:

avrdude -c avrispv2 -p attiny2313 -U flash:w:firmware.hex

[Ссылки]

1. Starting out with avrdude site:ladyada.net.
2. USBtiny site:dicks.home.xs4all.nl.
3. Программаторы для AVR.
4. Arduino bootloader.
5. AVR-USB-MEGA16: USB bootloader USBasp для микроконтроллера ATmega32.
6. Использование MS Visual Studio IDE для программирования AVR/Arduino.
7. Intel HEX: описание формата файла.
8. AVR-USB162MU: макетирование и изготовление программатора AVRISP-MKII в домашних условиях.
9. AVR109: самопрограммирование AVR.
10. Макетная плата AVR-USB-MEGA16.
11. Макетная плата metaboard.
12. 170305avrdude.zip.

microsin.net

Программирование микроконтроллеров AVR под LINUX

Автоматизация Geany.
Вариант 1: простой и универсальный.

Теперь запускаем Geany, создаем новый файл или открываем любой исходник .asm, открываем вкладку "Сборка" / "Установить команды сборки".
Видим окно настройки пользовательских команд:



В соответствующие поля вводим команды команды: 
"Скомпилировать" - avra --includepath /usr/share/avra/includes %f
"Фьюзы" - avr8-burn-o-mat
"Размер" - avr-size  %e.hex
"Очистить" - rm -f %e.cof $e.eep.hex %e.hex %e.obj
"Прошить" - PART=`grep -m 1 -e "^\.include " %f | sed -r -e 's/.*include "(.+)def\.inc".*/\1/' | sed "s/tn/t/g"` && echo "target device: $PART" && avrdude -p $PART -c usbasp -U flash:w:"%e.hex" && exit

Пояснения:
%f - шаблон geany, имя текущего файла (в нашем случае это Example.asm)
%e - шаблон geany, имя текущего файла без расширения (Example)
%d - шаблон geany, путь к папке, в которой лежит текущий файл (~/Projects/AVR/Example/)
%p - шаблон geany, путь к текущему проекту (~/Projects/AVR/Example/)
PART - строковая переменная, в которую заносится результат выполнения скрипта, определяющего тип контроллера
echo "target device: $PART" - выводим в консоль название распознанного контроллера (исключительно как информация вам для справки)
avrdude -p $PART -c usbasp -U flash:w:"%e.hex" - запускаем avrdude, подставляя в него нужную опцию
grep -m 1 -e "^\.include " %f - находит строчку начинающуюся на .include, опция -m 1 указывает что не стоит продолжать поиск, если хотя бы 1 строка уже найдена.
sed -r -e 's/.*include "(.+)def\.inc".*/\1/' - из найденной строки с помощью шаблона вычленяется название контроллера (все что после кавычки и перед def.inc).
sed "s/tn/t/g" - заменяет tn на t. так как в аппноутах Tiny2313, например, зовется tn2313, а avrdude ее понимает как t2313. 

Чтобы Geany сам распознавал тип микроконтроллера и менял опцию -p в команде avrdude нужно в исходном файле анализировать строки вида .include "m8def.inc", которые указывают тип используемого микроконтроллера и присутствуют в каждом asm файле.

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


Для прошивки Фьюзов используется графическая оболочка к avrdude AVR8_Burn-O-Mat.

Теперь для того чтобы:

Скомпилировать код - нужно нажать F8 (или иконку с пирамидой и шаром), 

Прошить код в микроконтроллер - нажать F5 (или иконку с шестеренкой),
Править Фьюзы - нажать F9 (или иконка с кирпичем).




____Приведенная в этой заметке команда "Прошить" - PART=`grep -m 1 -e "^\.include " %f | sed -r -e 's/.*include "(.+)def\.inc".*/\1/' | sed "s/tn/t/g"` && echo "target device: $PART" && avrdude -p $PART -c usbasp -U flash:w:"%e.hex" && exit отличается от наличествующих в интернете подобных описаний Geany. Отличается в лучшую сторону: во-первых она действительно работает (LinuxMint15), во-вторых корректно распознает все имена поддерживаемых контроллеров.



avr-prog.blogspot.com

Графическая оболочка для avrdude под MacOS

Программа avrdude поддерживает все актуальные программаторы микроконтроллеров AVR и является кроссплатформенной (Linux, Windows, MacOS). Это консольная утилита и её удобно вызывать из shell/bat-скриптов. Единожды написав такой файлик и положив его в директорию с проектом, получаем возможность быстро прошить и проверить фьюзы, flash и eeprom микроконтроллера. Проблема только в том, чтобы написать этот скрипт. И тут основную головную боль вызывают fuse-биты, т.к. надо правильно сформировать их значения нигде не ошибившись. Иначе, устройство, в лучшем случае, может не заработать совсем или работать неправильно. Ну а в худшем случае можно "окипрпичить" микроконтроллер.

Для avrdue написано много разных графических оболочек под Windows, но среди всего этого многообразия не так просто найти удобный и не сильно глючный софт. Основное требование к оболочке - возможность работать с fuse-битами не как с числами или набором непонятных чекбоксов, а в нормальном человекочитаемом формате. Под MacOS вариантов оболочек совсем не много, но, к счастью, есть open-source проект AVRFuses и с фьюзами там всё относительно неплохо. Плюс открытый исходный код даёт возможность неограниченно затачивать этот инструмент под себя.

Главное окно содержит пару вкладок - работа в flash/eeprom и работа с фьюзами. Тут всё просто - можно выбрать микроконтроллер и файл(ы) прошивки, а затем записать/прочитать/сравнить с содержимым памяти микроконтроллера. Собственно, кнопка ручного выбора микроконтроллера оказалась жутко неудобной - при переключении с одного проекта на другой приходилось каждый раз нажимать её и выбирать из немаленького списка нужный микроконтроллер. Поэтому, первым делом я добавил кнопку Autodetect, нажатие на которую стартует считываение сигнатуры микроконтроллера, подключённого к программатору, и определение его модели по этой сигнатуре.

На второй вкладке показаны фьюзы. Как в виде констант, так и списком, где их можно настроить имея минимально необходимые для этого познания. Перед тем, как что-то делать с фьюзами, их категорически желательно прочитать из микроконтроллера.

Существенный недостаток подобных оболочек в том, что при одновременной работе с несколькими проектами и частым переключением между ними, приходится каждый раз заново вбивать пути к файлам, и настраивать по памяти значения фьюзов, что скучно и отнимает время. Поэтому в оболочку была добавлена работа с проектами. Выбрав путь к прошивке и настроив фьюзы выбираем в меню ->Projects->New Project. Откроется окно, где можно посмотреть, отредактировать и сохранить все параметры.

Теперь переходить от проекта к проекту можно в один клик в меню Projects. Там же можно отредактировать созданные проекты.



Ссылки

Скачать последнюю версию с описанными доработками можно с моего github-а

Автор проекта, Jason von Nieda, весьма оперативно принимает pull-request-ы, и обычно, мои изменения попадают и в его сборку, которую можно скачать на сайте проекта.

В дальнейшем приложение умеет самообновляться по сети.

trolsoft.ru

Avrdude. Программирование AVR. Установка на Ubuntu — Personal blog

AVRDUDE (AVR Downloader-Uploader)

Кроссплатформенная свободная консольная программа, предназначенная для прошивки микроконтроллеров фирмы Atmel серии AVR

Как вы уже догадались, программа предназначена для прошивки заранее скомпилированной программы в микроконтроллер AVR. Конечно же, для того чтобы наш заранее разработанный алгоритм оказался в памяти МК, необходимо наличие и аппаратного обеспечения. Например, программатор или внутрисхемный отладчик. Но так как это уже материал другой статьи, я его опишу позже.

А в материале данной статьи речь зайдет об установке AVRdude на Ubuntu (версии 13.10).

Установка на Ubuntu 13.10:

  • Во-первых установить необходимые дополнения:
$sudo apt-get install patch build-essential libreadline-dev libncurses-dev libusb-dev libftdi-dev automake autoconf bison flex

$sudo apt-get build-dep avrdude avrdude-doc
  • Затем создать рабочий каталог:
$mkdir avrdude

$cd avrdude

Внимание! Следующие действия необходимы, если используете программатор с FTDI. 

$wget http://www.ftdichip.com/Drivers/D2XX/Linux/libftd2xx0.4.16_x86_64.tar.gz
$wget http://www.ftdichip.com/Drivers/D2XX/Linux/libftd2xx0.4.16.tar.gz
  • Скачиваем AVRDUDE и FTDI bitbang патчи:
$wget http://download.savannah.gnu.org/releases-noredirect/avrdude/avrdude-5.10.tar.gz
$for i in 8 7 6 5 4 3 2 1 0; do wget -O patch-$i.diff http://savannah.nongnu.org/patch download.php?file_id=1851$i; done
  • Распаковываем, устанавливаем драйвера и применяем патчи
$tar xzf avrdude-5.10.tar.gz
$tar xzf libftd2xx*.tar.gz
$cd avrdude-5.10
$for file in ../patch-*.diff; do patch -p0 < $file; done
$cp ../libftd2xx*/static_lib/* .
$cp ../libftd2xx*/*.h .
$cp ../libftd2xx*/*.cfg .
  • Настраиваем и собираем AVRdude:
$./configure CFLAGS="-g -O2 -DSUPPORT_FT245R" LIBS="./libftd2xx.a.0.4.16 -lpthread -ldl -lrt"

$make
  • В файле настроек avrdude.conf, который находиться по адресу «/etc/avrdude.conf» можно внести свой программатор. Например, я использую отладочную плату PinBoard 2, поэтому внес дополнения в файл «конфигов» следующими строчками:

#FTDI_Bitbang
programmer
 id = "2ftbb";
 desc = "FT232R Synchronous BitBang";
 type = ft245r;
 miso = 5; # DCD
 sck = 6; # DSR
 mosi = 4; # CTS
 reset = 7; # RI 
;udevadm info --attribute-walk --name=/dev/ttyUSB0
$sudo checkinstall

$sudo make install
  • Теперь avrdude должен стать доступным по команде:
$sudo avrdude

Использование AVRdude без прав супер пользователя (актуально для пользователей PinBoard):

Например, если устройству соответствует файл /dev/ttyUSB0, выполняем:

udevadm info --attribute-walk --name=/dev/ttyUSB0

в результате получаем много всего и из этого составляем следующий каллаж «=» присвоение, «==» сравнение.

0000:00:1d.3 — это и есть ID нашего устройства. Соответственно в файл /etc/udev/rules.d/95-avrdude.rules записываем правило(!В одну строчку!!):


# Rules for my Pinboard devboard
SUBSYSTEMS=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6010", MODE="0666", NAME="ttyUSB%n"

Теперь снова включим и выключим Pinboard. Теперь можно прошивать с пользовательского терминала, а также пользоваться встроенной в Eclipse кнопкой прошивки или графическими оболочками AVRdude!

Некоторые консольные команды:

$avrdude -c 2ftbb -p t13 -B 2400  //Проверка подключения mcu
$avrdude -c 2ftbb -p m16 -P ft0 -B 4800 -U hfuse:w:154:m -U lfuse:w:228:m -U lock:w:63:m //Прошивка фьюзов в mcu
$avrdude -c 2ftbb -p t13 -P ft0 -B 4800 -U flash:w:/home/victor/Dropbox/proekts_AVR/motion_sensor/default/motion_sensor.hex:a // прошивка hex в mcu
$avrdude -c 2ftbb -p t13 -B 2400 -U hfuse:r:hfuse.txt:h -U lfuse:r:lfuse.txt:h  //Чтение фьюзов

Для компилирования программ я использую ПО Geany

И на последок, конечно, default список поддерживаемых программаторов AVRdude:

С помощью опции -c возможен выбор одного из следующих программаторов:

Опция Описание
abcmini ABCmini Board, aka Dick Smith HOTCHIP
alf Nightshade ALF-PgmAVR, http://nightshade.homeip.net/
arduino Arduino board, protocol similar to STK500 1.x
atisp AT-ISP V1.1 programming cable for AVR-SDK1 from, http://micro-research.co.th/
avr109 Atmel AppNote AVR109 Boot Loader
avr910 Atmel Low Cost Serial Programmer
avr911 Atmel AppNote AVR911 AVROSP (an alias for avr109)
avrftdi FTDI MPSSE (FT2232 etc.) bitbang support
avrisp Atmel AVR ISP (an alias for stk500)
avrisp2 Atmel AVR ISP mkII (alias for stk500v2)
avrispmkII Atmel AVR ISP mkII (alias for stk500v2)
avrispv2 Atmel AVR ISP, running a version 2.x firmware (an alias for stk500v2)
bascom Bascom SAMPLE programming cable
blaster Altera ByteBlaster
bsd Brian Dean’s Programmer, http://www.bsdhome.com/avrdude/
butterfly Atmel Butterfly Development Board
c2n232i C2N232I, reset=dtr sck=!rts mosi=!txd miso=!cts, описание
dapa Direct AVR Parallel Access cable
dasa serial port banging, reset=rts sck=dtr mosi=txd miso=cts, описание
dasa3 serial port banging, reset=!dtr sck=rts mosi=txd miso=cts, описание
dragon_dw AVR Dragon in debugWire mode
dragon_hvsp AVR Dragon in high-voltage serial programming mode
dragon_isp AVR Dragon in ISP mode
dragon_jtag AVR Dragon in JTAG mode
dragon_pp AVR Dragon in (high-voltage) parallel programming mode
dt006 Dontronics DT006
ere-isp-avr ERE ISP-AVR, http://www.ere.co.th/download/sch050713.pdf
frank-stk200 Frank’s STK200 clone, http://electropol.free.fr/spip/spip.php?article15
futurlec Futurlec.com programming cable
jtag1 Atmel JTAG ICE mkI, running at 115200 Bd
jtag1slow Atmel JTAG ICE mkI, running at 19200 Bd
jtag2slow Atmel JTAG ICE mkII (default speed 19200 Bd)
jtag2,jtag2fast Atmel JTAG ICE mkII, running at 115200 Bd
jtag2isp Atmel JTAG ICE mkII in ISP mode.
jtag2dw Atmel JTAG ICE mkII in debugWire mode.
jtagmkI Atmel JTAG ICE mkI, running at 115200 Bd
jtagmkII Atmel JTAG ICE mkII (default speed 19200 Bd)
mib510 Crossbow MIB510 programming board
pavr Jason Kyle’s pAVR Serial Programmer
picoweb Picoweb Programming Cable, http://www.picoweb.net/
pony-stk200 Pony Prog STK200
ponyser design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts
siprog Lancos SI-Prog, http://www.lancos.com/siprogsch.html
sp12 Steve Bolt’s Programmer
stk200 STK200
stk500 Atmel STK500, probing for either version 1.x or 2.x firmware
stk500hvsp Atmel STK500 in high-voltage serial programming mode(version 2.x firmware only)
stk500pp Atmel STK500 in parallel programming mode (version 2.xfirmware only)
stk500v1 Atmel STK500, running a version 1.x firmware
stk500v2 Atmel STK500, running a version 2.x firmware
stk600 Atmel STK600 in ISP mode, or in PDI mode for ATxmega devices
stk600hvsp Atmel STK600 in high-voltage serial programming mode
stk600pp Atmel STK600 in parallel programming mode
usbasp USBasp, http://www.fischl.de/usbasp/ , http://easyelectronics.ru/usb-programmator-avr-usbasp.html
usbtiny USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/
xil Xilinx JTAG cable

Отзыв автора блога:

Программа очень удобна в использовании, легко подстраивается под нужный программатор. Однако, первое время приходиться привыкать к её консольным командам. Отличное средство программирования для пользователей Unix систем.

Расказать друзьям:

Понравилось это:

Нравится Загрузка...

Похожее

seregichev.wordpress.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *