Графическая оболочка avrdude linux

Графическая оболочка avrdude linux

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

Автор: ANALOG, pletnevroma@mail.ru
Опубликовано 07.08.2013
Создано при помощи КотоРед.

Предисловие:

Наверное каждый кто пишет программы под 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

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 / )6 / +» | sed «s/tn/t/g»` && echo «target device: $PART» && avrdude -p $PART -c usbasp -U flash:w:»%e.hex» && exit

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

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

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

avra —includepath

PART=’grep -m 1 » / .include / «.*def / .inc / «» %f | grep -o » / (tn / |m / )2 / +» | 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 программки из-под вашего любимого линукса.
Удачи вам и правильных фьюзов 🙂

Источник

Программирование МК AVR в ОС Ubuntu. Часть 2 (GUI)

В прошлый раз мы научились компилировать прошивку и зашивать в контроллер через avr-gcc.
Но что делать если нам необходимо прошить фьюзы? Да и прошивать контроллер с помощью консоли не сильно удобно.
Значит нам необходимо скачать GUI оболочку для avrdude.
1. Заходим по ссылочке на файлообменник: http://narod.ru/disk/27500236000/avr8-burn-o-mat-2.1.2-all.deb.html
2. Скачиваем программку.
3. Запускаем и устанавливаем.
Далее, запустим программу: Приложения->Программирование->AVR8 Burn-O-Mat

Дальше откроем Settings->AVRDUDE

В AVRDUDE location нажимаем кнопочку File и ищем файлик под названием avrdude (должен быть здесь /usr/bin/avrdude).
Далее в alternative AVRDUDE configuration file нажимаем кнопочку File и ищем файлик под названием avrdude.conf (должен быть здесь /etc/avrdude.conf).
В AVRDUDE Options выбераем необходимый программатор, а так же порт через который будем работать. Если у вас программатор собран на преобразователе USB-RS232 то вам необходимо выбрать /dev/ttyUSB0.
Если все выставлено то нажимаем Apply->OK.
В AVR type выберем необходимый нам чип и нажмем Fuses.

Здесь, я думаю и так все понятно, что с ними делать.
Если все выставлено, то пробуем прошить или просто считать прошивку.

Источник

Avrdude — опции запуска и примеры использования, графическая оболочка для linux

Список поддерживаемых программаторов

Как использовать AVRDUDE под Windows

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

Пример 1 (Прошиваем Flash)

-p m16 — указывает, что мы прошиваем микроконтроллер ATmega16 -c usbasp — указывает, что мы прошиваем, используя программатор USBasp -e — Выполняет команду ERASE (стирание чипа) перед прошивкой -U flash:w:upload.hex — указывает, что работаем с флеш памятью (flash), пишем (w), файл (upload.hex).

Сразу же возникает вопрос: «Где найти обозначения микроконтроллеров и программаторов?»

Ответ: в файле документации с подробным описанием параметров командой строки: C:/avrdude/avrdude-html/avrdude_4.html

Если такой отсутствует, можно заглянуть в файл конфигурации avrdude.conf

Пример 2 (программируем Фьюзы)

-p m88p — микроконтроллер ATmega88P-c usbasp — указывает, что мы прошиваем, используя программатор USBasp-U lfuse:w:0xE2:m — зашиваем в младший разряд фюзов 0xE2-U hfuse:w:0xDF:m — зашиваем в старший разряд фюзов 0xDF

Для удобства можете воспользоваться калькуляторами Фьюзов:

http://fusecalc.mirmk.net/ (локальная версия калькулятора фьюзов с того же сайта FUSEcalc.zip) http://payalo.at.ua/c_fuse/calc.htmlПодробнее о фьюзах

Пример 3 (программируем EEPROM)

-p m16 — указывает, что мы прошиваем микроконтроллер ATmega16 -c usbasp — указывает, что мы прошиваем, используя программатор USBasp -U eeprom:w:upload.hex — указывает, что работаем с eeprom памятью (eeprom), пишем (w), файл (eeprom.hex).

Пример 4 (читаем Flash и пишем в файл dump.hex)

Отличие от первого примера, отсутствует «-e» (стирать чип нам не надо), команда :w: (write, писать) заменена на :r: (read, читать), добавлено :i (формат файла Intel Hex)

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

Поддерживаемые форматы файлов:

i — Intel Hexs — Motorola S-recordr — raw binary; little-endian byte order, in the case of the flash ROM datam — immediate mode; actual byte values specified on the command line, separated by commas or spaces in place of the filename field of the ‘-U’ option. This is useful for programming fuse bytes without having to create a single-byte file or enter terminal mode. If the number specified begins with 0x, it is treated as a hex value. If the number otherwise begins with a leading zero (0) it is treated as octal. Otherwise, the value is treated as decimal.a — auto detect; valid for input only, and only if the input is not provided at stdin.d — decimal; this and the following formats are only valid on output. They generate one line of output for the respective memory section, forming a comma-separated list of the values. This can be particularly useful for subsequent processing, like for fuse bit settings.h — hexadecimal; each value will get the string 0x prepended.o — octal; each value will get a 0 prepended unless it is less than 8 in which case it gets no prefix.b — binary; each value will get the string 0b prepended.

Пример 6 (выполняем сравнение (верификацию) Flash памяти с указанным hex файлом)

В последнем параметре :v: (verify, проверить).

Если нам надо одним движением прошивать флеш память и прошить фьюзы, разумно сделать пакетный файл с примерно следующими командами:

Практика использования AVRDUDE под Windows

На практике я поступаю так: в папке, где компилируется .hex файл прошивки создаю файл upload.bat со следующим содержимым:

В случае если потребуется изменить программатор, контроллер или путь к AVRDUDE, не потребуется исправлять во всех командах. Достаточно изменить переменные, объявленные в начале файла.

В статье Программаторы микроконтроллеров AVR я описал программатор AVR ISP Prorgammer (работащий через параллельный порт LPT), совместимый с AVR910 и USBasp программатор. Для этих программаторов в AVRDUDE используются следующие идентификаторы:

AVR ISP Prorgammer — stk200AVR910 — avr910USBasp — usbasp

Обращаю Ваше внимание на то, что AVR910 работает через виртуальный последовательный (COM) порт. Его следует указать в параметре -P

Подробно о всех возможностях AVRDUDE читайте в документацииC:/avrdude/avrdude-html/avrdude.html

  • Программаторы микроконтроллеров AVR
  • Прошивка AVR микроконтроллеров с помощью Raspberry Pi

Работа с памятью (опция -U :r|w|v:[:format])

В качестве указываем тип памяти для работы:

  • calibration — байты калибровки RC-генератора (один или несколько);
  • eeprom — энергонезависимая память (EEPROM) микроконтроллера;
  • efuse — дополнительный конфигурационный бит;
  • flash — FLASH память микроконтроллера;
  • fuse — фьюз-байт для МК только с одним fuse-байтом;
  • hfuse — старший fuse-байт;
  • lfuse — младший fuse-байт;
  • lock — байт блокировки (ячейка защиты);
  • signature — три байта что обозначают сигнатуру чипа (device ID);
  • fuseN — байт с фьюзами для ATxmega чипов, N — целое число для каждого фьюза что поддерживается устройством;
  • application — область приложений во Flash памяти для МК ATxmega;
  • apptable — таблица приложений в области Flash памяти для устройств ATxmega;
  • boot — загрузочная область Flash памяти для устройств ATxmega;
  • prodsig — область с производственной сигнатурой (calibration) для устройств ATxmega;
  • usersig — область с пользовательской сигнатурой для устройств ATxmega.

Дальше через двоеточие следует производимая операция с памятью МК:

  • r — прочитать указанную область памяти и записать в указанный файл ;
  • w — прочитать данные из файла и записать в указанную память устройства;
  • v — прочитать данные из указанного файла и из указанной области памяти (verify, проверка).

В поле указывается полный или относительный путь к файлу что используется для записи или чтения данных. Поле «:format» является не обязательным, с его помощью указывается формат используемого файла:

  • i — Intel HEX;
  • s — Motorola S-record;
  • r — raw binary (RAW формат);
  • e — ELF (Executable and Linkable Format);
  • m — занчения байтов для записи указываются непосредственно в командной строке в поле и разделяются пробелами или запятыми. По умолчанию байты пишутся в десятичной системе, если указать 0x — будет записано шестнадцатеричные значения, а если перед байтом стоит 0 — будет записано восьмеричное число;
  • a — авто-определение формата (auto detect);
  • d — десятичный формат (decimal), числа разделяются запятыми;
  • h — шестнадцатеричный формат (hexadecimal), числа начинаются с 0x;
  • o — восьмеричный формат (octal), перед числами ставится 0;
  • b — двоичный формат (binary), перед числами ставится 0b.

По умолчанию используется авто-определение формата (auto detect).

History

AVRDUDE has once been started by Brian S. Dean as a private project
of an in-system programmer for the Atmel AVR microcontroller series,
as part of the Opensource and free software tools collection available for
these controllers. Originally, the software was written for the FreeBSD operating system,
maintained in a private CVS repository, and distributed under the name
avrprog.

Due to the growing interest in porting the software to other
operating systems, Brian
decided to make the project publically accessible on
savannah.nongnu.org. The name change to AVRDUDE has been chosen to
resolve the ambiguity with the avrprog utility as distributed
by Atmel together with their AVRstudio software.

Программа AVRDude

Программа AVRDude (AVR Downloader-Uploader) — это очень мощный кросплатформенный инструмент, который позволяет программировать всю линейку микроконтроллеров AVR, поддерживая при этом из коробки почти все типы доступных сейчас программаторов. Программа работает из консоли, что позволяет хорошо автоматизировать процесс прошивки микроконтроллеров но требует при этом внимательности и навыков работы с терминалом.

Рис. 1. avrdude — кросплатформенная программа для прошивки микроконтроллеров фирмы ATMEL.

Первоначальный код программы AVRDude был написан английским программистом Брайеном Дином (Brian S. Dean) и имел название AVRprog. Позже программа получила большой интерес со стороны пользователей и Брайен решил открыть ее код для всеобщего использования и доработки, а для того чтобы она не путалась с одноименной программой из AVRStudio — AVRProg, программа получила новое имя — AVRDude.

Программа AVRDude запускается и работает на ОС: Linux, Windows, MacOS X, FreeBSD и других.

Адрес официального сайта программы AVRDude: http://www.nongnu.org/avrdude/

Для установки программы avrdude в Debian GNU Linux или Ubuntu следует установить одноименный пакет при помощи команды:

Послее установки пакета программа готова к работе из консоли.

Настройка AVRDUDE

Теперь нам осталось выполнить финальный шаг. Запускаем программу AVRDUDE. По умолчанию открывается вкладка Program. В нижней части окна в меню Настройки выбираем тип программатора usbasp. Далее в категории Микроконтроллер выбираем наш микроконтроллер ATmega8. Ниже, в категории Flash кликаем по значку троеточия и в открывшемся меню указываем путь к скомпилированному файлу с расширением hex. Путь к файлу и сам файл будут теми же, что мы ранее задавали в Proteus.

Чтобы убедится в том, что программатор определен операционной системой (драйвер программатора корректно установлен) и правильно подключен к микроконтроллеру, кликаем по кнопке Чтение. Если ошибок нет, то появится окно с записью “Калибровочные ячейки генератора считаны!” И в верхнем окошке отобразится шестнадцатеричное число. У каждого МК это число индивидуальное.

Прежде, чем записать новую программу рекомендуется очистить память микроконтроллера. Это можно сделать, кликнув по кнопке Стереть все. В результате появится окно с сообщением о том, что кристалл чист.

Теперь кликаем по кнопке Программировать в категории Flash. При успешной записи программы в МК появляется окно с записью, приведенной ниже.

Результат записанной, или, как еще говорят, прошитой программы – это засветившийся светодиод, подключенный к выводу PC0 нашего микроконтроллера.

Первая наша программа очень проста, а частота работы микроконтроллера оставлена по умолчанию и для ATmega8 равна 1 МГц. В случае изменения частоты или подключения внешнего кварцевого резонатора, необходимо внести некоторые изменения во вкладке Fuses, путем установки галочек в соответственные чекбоксы CKSEL0… CKSEL3.

Подробно настройки данной вкладки мы рассмотрим в статье Fuses (биты настройки или биты защиты) микроконтроллера.

Скачать USBasp драйвер

Параметры запуска avrdude

Запустив в консоли программу avrdude без аргументов мы сможем увидеть список доступных опций для использования. Приведенную ниже информацию можно позже использовать как краткую справку по параметрам программы avrdude.

Рис. 2. Список параметров программы avrdude.

Рассмотрим все опции программы по порядку:

— является обязательной опцией, здесь мы в качестве

указываем краткий ;

  • -b — позволяет переопределить указанную для программатора в конфигурации программы скорость подключения по интерфейсу RS-232;
  • -B — указываем Bit Clock Period для интерфейса отладки JTAG или ISP Clock (только для JTAG ICE). Значение указывается в микросекундах, для JTAG ICE по умолчанию оно установлено в 1 микросекунду и подходит для МК работающих на частотах 4МГц и выше;
  • -C — в качестве указываем полный путь к файлу конфигурации с необходимыми нам настройками программы. По умолчанию используется файл /etc/avrdude.conf (Linux);
  • -c

    указываем , например «usbasp».

  • -D — опция запрещает автоматическое стирание Flash-памяти. Автоматическое стирание не используется в микроконтроллерах семейства ATxmega;
  • -i — установка паузы перед каждой отправкой каждого бита для bitbang-программаторов. В качестве указывается значение в микросекундах. Это бывает необходимо если для программирования используется компьютер с очень быстрым процессором или же микроконтроллер с низкой тактовой частотой (32КГц, 128КГц), позволяет соблюдать условие: частота ISP :r|w|v: — комплексная опция для указания (чтение. запись, проверка);
  • -n — запрет на запись в микроконтроллер, используется для отладки avrdude;
  • -V — отключение автоматической проверки записанной информации;
  • -u — отключить режим безопасной (safe mode) проверки и сопоставления ячеек конфигурации (fuse bits) до и по завершению программирования. Данная опция необходима если нужно изменить значения фьюзов (fuse bits), в противном случае avrdude в качестве меры безопасности изменит их значения на те которые были прочитаны перед программированием;
  • -s — запрет вывода запросов в безопасном режиме при работе с фьюзами;
  • -t — переводит avrdude в режим терминала (terminal mode);
  • -E — изменение после программирования на указанные в аргументах опции. По умолчанию устанавливаются те состояния линий что были до начала работы;
  • -x — позволяет указать дополнительный специальный параметр для используемого программатора;
  • -y — опция что включает сохранение количества стираний МК в последних 4-х байтах памяти EEPROM;
  • -Y — указанное значение будет сохранено в качестве числа циклов-стираний микроконтроллера в памяти EEPROM;
  • -v — расширенный вывод информации о работе программы (verbose);
  • -q — отключает отображение полоски прогресса при операциях с микроконтроллером. Для еще большого уменьшения отображаемой информации опцию следует указать дважды;
  • -l — перенаправление всего вывода для отладки в указанный файл, где — полный путь к файлу для сохранения данных;
  • ? — отображение справки.
  • Main features

    The major features of AVRDUDE include:

    • Command-line driven user interface for all downloading and
      uploading features (including handling fuse bytes), for easy
      automation e. g. by inclusion into Makefiles.
    • Interactive examination and modification of various memory
      regions in so-called terminal mode. Also offered is an
      option to modify the operational parameters of an Atmel STK500
      board (target voltage, VAref, master clock frequency).
    • Known to run on all major POSIX-style operating systems, as well as Win32 platforms. By using
      existing operating system drivers on the POSIX-style systems, secure parallel-port access
      without root privileges can be maintained. On Win32 platforms,
      parallel port access requires the previous installation of a driver
      (giveio.sys) that grants a user process direct access to
      the IO registers.

    Supports a wide range of programming hardware, from cheap ISP
    plugs that connect the AVR’s ISP interface directly to a
    computer’s parallel port (no additional circuitry) or serial port (some additional circuitry needed), more advanced
    ISP adapters using a buffer/driver chip (like a 74HC373), up to
    (more complex) serially connected programmers like AVR910-style
    ISP devices, the Atmel STK500 board, and the Atmel JTAG ICE mkII. Most popular adapters
    come pre-defined, adding a new parallel-port adapter is as simple
    as editing a configuration file (no recompilation needed).

  • Supports Intel Hex, Motorola S-Record, and raw binary files
    for input and output, as well as direct memory contents
    specification on the command-line (useful e. g. for fuse
    bytes). On input, the file format can be auto-detected.
  • In «terminal mode», the device’s memory areas can be
    examined, and possibly modified. This allows to set fuses
    interactively, or to modify a few EEPROM cells.
  • Типы программаторов (опция -c )

    Настройки всех программаторов содержатся в конфигурационном файле по умолчанию, полистать его содержимое в ОС Linux можно командой:

    Ниже представлены значения опции и соответствующие данные программаторов:

    Опция Программатор
    abcmini ABCmini Board, aka Dick Smith HOTCHIP
    alf Nightshade ALF-PgmAVR, http://nightshade.homeip.net/
    arduino Плата Arduino, протокол сходен с STK500 1.x
    atisp AT-ISP V1.1 кабель программирования для AVR-SDK1, 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
    avrisp Atmel AVR ISP (псевдоним для stk500)
    avrisp2 Atmel AVR ISP mkII (псевдоним для stk500v2)
    avrispmkII Atmel AVR ISP mkII (псевдоним для 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 в режиме ISP
    dragon_jtag AVR Dragon в режиме JTAG
    dragon_pp AVR Dragon in (high-voltage) parallel programming mode
    dt006 Dontronics DT006
    ere-isp-avr ERE ISP-AVR
    frank-stk200 Клон STK200 от Frank’а, http://electropol.free.fr/spip/spip.php?article15
    futurlec Кабель программирования Futurlec.com
    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 в режиме высоковольтного последовательного программирования (high-voltage serial programming mode), только для прошивок версии 2.x
    stk500pp Atmel STK500 в режиме параллельного программирования (parallel programming) , только прошивка версии 2.x
    stk500v1 Atmel STK500, с версией прошивки 1.x
    stk500v2 Atmel STK500, с версией прошивки 2.x
    stk600 Atmel STK600 в режиме ISP или в PDI режиме для устройств ATxmega
    stk600hvsp Atmel STK600 в режиме высоковольтного последовательного программирования (high-voltage serial programming mode)
    stk600pp Atmel STK600 в режиме параллельного программирования (parallel programming)
    usbasp USBasp, http://www.fischl.de/usbasp/
    usbtiny USBtiny — простой USB программатор, http://www.ladyada.net/make/usbtinyisp/
    xil Xilinx JTAG кабель

    Заключение

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

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

    Для быстрого чтения документации по avrdude в Linux можно обратиться к родной MAN-системе (мануалы, manuals):

    В следующей статье мы разберемся с настройкой avrdude для работы с микроконтроллерами на Linux, решим проблему ограничения прав запуска от обычного пользователя. Проведем первые испытания программатора в рабочей обстановке и на реальном микроконтроллере.

    Начало цикла статей: Программирование AVR микроконтроллеров в Linux на языках Asembler и C.

    Источник

    Читайте также:  Windows 64 bit зверь
    Оцените статью