Avrdude - опції запуску і приклади використання, графічна оболонка для linux
Перш ніж перейти до тестування програматора разом з мікро контролером (МК) давайте спочатку розберемося з можливостями програми avrdude, яка дуже часто є основою при прошивці AVR кристалів як в Linux, так і в інших операційних системах. Наведено список всіх параметрів запуску програми avrdude, розглянемо графічну оболонку, а також приклади використання avrdude.
програма AVRDude
Програма AVRDude (AVRD ownloader-U ploade r) - це дуже потужний кросплатформенних інструмент, який дозволяє програмувати всю лінійку мікроконтролерів AVR, підтримуючи при цьому з коробки майже всі типи доступних зараз программаторов. Програма працює з консолі, що дозволяє добре автоматизувати процес прошивки мікроконтролерів але вимагає при цьому уважності і навичок роботи з терміналом.

Мал. 1. avrdude - кросплатформенних програма для прошивки мікроконтролерів фірми ATMEL.
Початковий код програми AVRDude був написаний англійським програмістом Брайеном Діном (Brian S. Dean) і мав назву AVRprog. Пізніше програма отримала великий інтерес з боку користувачів і Брайен вирішив відкрити її код для загального використання і доопрацювання, а для того щоб вона не плуталася з однойменною програмою з AVRStudio - AVRProg, програма отримала нове ім'я - AVRDude.
Програма AVRDude запускається і працює на ОС: Linux, Windows, MacOS X, FreeBSD та інших.
Для установки програми avrdude в Debian GNU Linux або Ubuntu слід встановити однойменний пакет за допомогою команди:
Після установки пакета програма готова до роботи з консолі.
Параметри запуску avrdude
Запустивши в консолі програму avrdude без аргументів ми зможемо побачити список доступних опцій для використання. Цю інформацію можна пізніше використовувати як коротку довідку по параметрах програми avrdude.

Мал. 2. Відомості про опції програми avrdude.
Розглянемо всі опції програми по порядку:
Моделі мікроконтролерів (опція -p )
Xilinx JTAG кабель
Робота з пам'яттю (опція -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, перевірка).
В полі
- 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).
Стан ліній паралельного порту (-E [,])
- reset - на лінії RESET будуть низький рівень, мікроконтролер залишиться в стані скидання;
- noreset - на лінію RESET надійде високий рівень для запуску МК після програмування;
- vcc - установка високого рівня на лінії порту VCC. яка може використовуватися для харчування МК;
- novcc - подача низького рівня на лінію VCC.
Допускається використання декількох значень через кому.
Приклади використання avrdude
З опціями запуску розібралися, тепер давайте подивимося як їх використовувати для виконання потрібних нам операцій з мікро контролером за допомогою програми avrdude.
Виконаємо тест зв'язки мікроконтролера ATtiny13 з програматором USBASP:
Зробимо читання Flash-пам'яті мікроконтролера ATmega88 в нікуди (/ dev / null), тест на Новомосковскемость флеш-пам'яті:
Виконаємо читання Flash-пам'яті чіпа ATmega8 в файл формату Intel HEX - /tmp/flash_dump.hex, причому зазначимо що для програматора потрібно використати саме USB-порт (-P usb) і виводити більше налагоджувальної інформації (-v):
Прочитаємо вміст EEPROM-пам'яті мікроконтролера ATtiny85 та збережемо його в файл RAW формату (/tmp/eeprom_dump.raw) за допомогою при цьому програматор USBTiny:
Зробимо запис даних їх HEX-файлу (/tmp/program_m8.hex) у FLASH-пам'ять мікроконтролера ATmega8, використовуючи програматор STK -500:
Зробимо запис даних у FLASH і EEPROM пам'ять однією командою, використовуючи як джерел даних для запису файли /tmp/flash_1.hex і /tmp/eeprom_1.hex:
Виконаємо читання фьюз з мікроконтролера atmega8 і збережемо дані у файли в шістнадцятковому форматі (hexadecimal, числа починаються з 0x):
Зробимо запис фьюз для мікроконтролера ATmeag32, встановлена частота внутрішнього RC-генератора на 4MHz (Low = 0xc3, High = 0x99):
Нині ж, запишемо значення бітів блокування (Lock Bits) для мікроконтролера ATTiny13, приєднаного до программатору USBASP, встановимо значення байта в 0xFC (11111100):
Про те, що таке фьюз і биті блокування в AVR мікроконтролері я детально описав в окремій статті - що таке Fuse і Lock біти і як з ними працювати.
Графічна оболонка для avrdude

Мал. 3. Про програму AVR8-Burn-O-Mat.

Мал. 4. Головне вікно програми AVR8-Burn-O-Mat.

Мал. 5. Вікно установки фьюз в програмі AVR8-Burn-O-Mat.
Завантажити програму версії 2.1.2 можна тут: avr8_burn-o-mat_2_1_2.zip (1,4Мб).
У попередній статті ми розбирали як налаштувати середу Greany для зручного програмування AVR мікроконтролерів під Linux, на одну з кнопок (наприклад Build) можна призначити команду для запуску програми AVR8 Burn-O-Mat - вийде дуже зручне рішення для установки фьюз (fuse bits)!
висновок
Як бачите у програми avrdude дуже потужний арсенал можливостей по роботі з AVR мікроконтролери. Для консольної версії avrdude є різноманітні графічні надбудови і оболонки, але все ж знаючи як використати цю програму в консолі ви завжди будете тримати процес прошивки МК під повним контролем, а також легко виробляти автоматизацію всіх необхідних дій.
Не варто забувати що з плином часу з'являються нові мікроконтролери від Atmel, програматори, а також програма avrdude в своєму розвитку не стоїть на місці, бажано час-від-часу звірятися з офіційною документацією по програмі, стежити за змінами в світі AVR мікроконтролерів.
Для швидкого читання документації по avrdude в Linux можна звернутися до рідної MAN-системі (мануали, man uals):
У наступній статті ми розберемося з налаштуванням avrdude для роботи з мікроконтролерами на Linux, вирішимо проблему обмеження прав запуску від звичайного користувача. Проведемо перші випробування програматора в робочій обстановці і на реальному микроконтроллере.