Avrdude - опції запуску і приклади використання, графічна оболонка для linux

Перш ніж перейти до тестування програматора разом з мікро контролером (МК) давайте спочатку розберемося з можливостями програми avrdude, яка дуже часто є основою при прошивці AVR кристалів як в Linux, так і в інших операційних системах. Наведено список всіх параметрів запуску програми avrdude, розглянемо графічну оболонку, а також приклади використання avrdude.

програма AVRDude

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

Avrdude - опції запуску і приклади використання, графічна оболонка для linux

Мал. 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.

Avrdude - опції запуску і приклади використання, графічна оболонка для linux

Мал. 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, перевірка).

В полі вказується повний або відносний шлях до файлу що використовується для запису або читання даних. Поле ": 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).

Стан ліній паралельного порту (-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

Avrdude - опції запуску і приклади використання, графічна оболонка для linux

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

Avrdude - опції запуску і приклади використання, графічна оболонка для linux

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

Avrdude - опції запуску і приклади використання, графічна оболонка для linux

Мал. 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, вирішимо проблему обмеження прав запуску від звичайного користувача. Проведемо перші випробування програматора в робочій обстановці і на реальному микроконтроллере.