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

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

FT2232D based generic programmer
FT2232H based generic programmer
FT232H based module from FTDI and Glyn.com.au
Amontec JTAGKey, JTAGKey-Tiny and JTAGKey2
Atmel AVR ISP
Atmel AVR ISP V2
Atmel AVR ISP mkII
The Bus Pirate
Atmel STK500
Crossbow MIB510 programming board
Atmel STK600
Avr910
USBasp
USBtiny simple USB programmer
Atmel Butterfly Development Board
Atmel AppNote AVR109 Boot Loader
Atmel AppNote AVR911 AVROSP
Mikrokopter.de Butterfly
Mikrokopter.de Butterfly
Atmel JTAG ICE (mkI)
Atmel JTAG ICE mkII in ISP mode
Atmel AVR Dragon
Jason Kyle`s pAVR Serial Programmer
Brian Dean`s Programmer
STK200
Pony Prog STK200
Dontronics DT006
Bascom SAMPLE programming cable
Nightshade ALF-PgmAVR
Steve Bolt`s Programmer
Picoweb Programming Cable
ABCmini Board, aka Dick Smith HOTCHIP
Futurlec.com programming cable.
Xilinx JTAG cable
Direct AVR Parallel Access cable
AT-ISP V1.1 programming cable for AVR-SDK1
ERE ISP-AVR
Altera ByteBlaster
Frank STK200
Atmel at89isp cable
design ponyprog serial
Lancos SI-Prog
serial port banging

Как использовать 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])

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

  • 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 — прочитать указанную область памяти и записать в указанный файл <filename>;
  • w — прочитать данные из файла <filename> и записать в указанную память устройства;
  • v — прочитать данные из указанного файла <filename> и из указанной области памяти (verify, проверка).

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

  • i — Intel HEX;
  • s — Motorola S-record;
  • r — raw binary (RAW формат);
  • e — ELF (Executable and Linkable Format);
  • m — занчения байтов для записи указываются непосредственно в командной строке в поле <filename> и разделяются пробелами или запятыми. По умолчанию байты пишутся в десятичной системе, если указать 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 без аргументов мы сможем увидеть список доступных опций для использования. Приведенную ниже информацию можно позже использовать как краткую справку по параметрам программы avrdude.

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

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

  • -p <partno> — является обязательной опцией, здесь мы в качестве <partno> указываем краткий ;
  • -b <baudrate> — позволяет переопределить указанную для программатора в конфигурации программы скорость подключения по интерфейсу RS-232;
  • -B <bitclock> — указываем Bit Clock Period для интерфейса отладки JTAG или ISP Clock (только для JTAG ICE). Значение <bitclock> указывается в микросекундах, для JTAG ICE по умолчанию оно установлено в 1 микросекунду и подходит для МК работающих на частотах 4МГц и выше;
  • -C <config-file> — в качестве <config-file> указываем полный путь к файлу конфигурации с необходимыми нам настройками программы. По умолчанию используется файл /etc/avrdude.conf (Linux);
  • -c <programmer> — в качестве <programmer> указываем , например «usbasp».
  • -D — опция запрещает автоматическое стирание Flash-памяти. Автоматическое стирание не используется в микроконтроллерах семейства ATxmega;
  • -i <delay> — установка паузы перед каждой отправкой каждого бита для bitbang-программаторов. В качестве <delay> указывается значение в микросекундах. Это бывает необходимо если для программирования используется компьютер с очень быстрым процессором или же микроконтроллер с низкой тактовой частотой (32КГц, 128КГц), позволяет соблюдать условие: частота ISP < 1/4 частоты процессора;
  • -P <port> — в качестве значения <port> указываем используемый программатором порт. По умолчанию используются /dev/ppi0 (параллельный порт) и /dev/cuaa0 (последовательный порт) в зависимости от программатора;
  • -F — опция для отключения проверки сигнатуры микроконтроллера. По умолчанию перед программированием avrdude проверяет сигнатуру микроконтроллера, которая в некоторых случаях может быть повреждена, при этом микроконтроллер может продолжать нормально функционировать;
  • -e — стирает содержимое FLASH и EEPROM памяти (заполнение значениями 0xFF), очищаются fuse-bits (биты защиты). Исключением являются микроконтроллеры семейства ATxmega в которых используется постраничная запись;
  • -O — опция для калибровки RC-генератора в соответствии с примечанием AVR053 от Atmel. Поддерживается только на программаторах STK500v2, AVRISP mkII, и JTAG ICE mkII. Результат будет сохранен в EEPROM памяти в ячейке с адресом 0;
  • -U <memtype>:r|w|v:<filename> — комплексная опция для указания (чтение. запись, проверка);
  • -n — запрет на запись в микроконтроллер, используется для отладки avrdude;
  • -V — отключение автоматической проверки записанной информации;
  • -u — отключить режим безопасной (safe mode) проверки и сопоставления ячеек конфигурации (fuse bits) до и по завершению программирования. Данная опция необходима если нужно изменить значения фьюзов (fuse bits), в противном случае avrdude в качестве меры безопасности изменит их значения на те которые были прочитаны перед программированием;
  • -s — запрет вывода запросов в безопасном режиме при работе с фьюзами;
  • -t — переводит avrdude в режим терминала (terminal mode);
  • -E <exitspec> — изменение после программирования на указанные в аргументах опции. По умолчанию устанавливаются те состояния линий что были до начала работы;
  • -x <extended_param> — позволяет указать дополнительный специальный параметр для используемого программатора;
  • -y — опция что включает сохранение количества стираний МК в последних 4-х байтах памяти EEPROM;
  • -Y <number> — указанное значение <number> будет сохранено в качестве числа циклов-стираний микроконтроллера в памяти EEPROM;
  • -v — расширенный вывод информации о работе программы (verbose);
  • -q — отключает отображение полоски прогресса при операциях с микроконтроллером. Для еще большого уменьшения отображаемой информации опцию следует указать дважды;
  • -l <logfile> — перенаправление всего вывода для отладки в указанный файл, где <logfile> — полный путь к файлу для сохранения данных;
  • ? — отображение справки.

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.

Оцените статью:
Оставить комментарий