AVRDudeR - вбудовуємо avrdude в IDE

Arduino - хороша платформа для саморобкіних на кшталт мене. Зручна, все в ній вже є.

В чому проблема?

Програмна частина мені не всім подобається. Особливо жахлива Arduino IDE. Кожен файл відкривається у новому вікні, залишаючи порожнє запущене вікно IDE. І інші дрібні дурниці, які звикли до зручності Visual Studio, Borland/Embarcadero RAD IDE засмучують і викликають невдоволення. На щастя, ми можемо використовувати будь-яку IDE яка сподобається. Для готових проектів, які тільки скомпілювати та прошити чи власних пробних виробів цілком годиться той огризок Wiring, який компілюється Arduino IDE. Для зручності роботи я використовую Visual Micro Arduino - зручність Visual Studio, швидка компіляція, прошивка стандартними засобами.

Arduino без Arduino IDE

Сходинкою вище стоїть пряма робота з мікроконтролером, тут вже у вільні робити що захочете. Часто це зручніше, ніж розбиратися в начинці бібліотек Arduino. Але доводиться використовувати AVR Studio або сторонню IDE і компілятор від Atmel (благо, він абсолютно безкоштовний і входить в AVR Tools). Все б добре, але про Arduino вони нічого не знають і прошити її не можуть. І ось тут починаються незручності. Кому нецікаві деталі, переходьте відразу до справи, завантажуємо та налаштовуємо :)

AVR Studio непогане середовище, правда версія 4 досить примітивна, а 5-я важковагова. Ні та ні інша крім як через фірмовий програматор прошивати не вміють. Засідка. Я взяв проект бутлоадера, який сумісний з AVR Studio, прикидаючись програмістом AVRISP. Інтерфейс же з ним в AVR Studio виявився далеко не вдалим.

Що робити?

Є AVRDUDE – безкоштовний прошивальник, який працює майже з усіма програматорами для ATMEL мікроконтролерів. Алевін консольний. Начебто не проблема, написав cmd або bat файл і всі справи, запускай його після компіляції та всього ділу. Але в мене, як, мабуть, у багатьох не одна плата. Кожна плата Arduino бачиться в системі як окремий COM-порт. Кожен програматор також. У платах встановлені різні мікроконтролери (Atmega168P, Atmega328P). Крім саморобних Arduino-сумісних плат або взагалі з голим мікроконтролером і обв'язкою. Щоразу лазити в bat файл і правити налаштування під різні плати або перемикатися в інший додаток щоб його запустити для прошивки, щоб перевірити роботу коли я поміняв пару байт у коді, особисто мені набридає, та й помилок виникає чимало, так і контролер вбити недовго. Гірше того, з FTBB програматором працює лише окрема версія avrdude, пропатчена під нього і нічого не знає про arduino. А значить, якщо ми прошиємо через нього, потрібно тримати ще один bat файл. У Code::Blocks IDE, яка мені більше сподобалася за можливостями форматування та зручності роботи з кодом, ситуація трохи краща, хіба що можна передавати зовнішній утиліті параметри.

Автоматизація запуску avrdude з потрібними параметрами

Мені ця ситуація набридла і я написав невелику програму, яка отримує в командному рядку 2 параметри: - ім'я конфігураційного файлу - ім'я файлу прошивки

Утиліта сама запускає avrdude з параметрами, вказаними в конфігураційному файлі, чекає на прошивку і закривається. Це дозволяє прошивати проект у будь-який наявний мікроконтролер у процесі налагодження в 2 кліки прямо з Code::Blocks. Якщо запустити з одним параметром, відкриє відповідний конфігураційний файл, якщо з двома, спробує автоматично залити прошивку з другого параметра.

Якщо зацікавило, качаємо AVRDudeR

Вбудовується в IDE дуже просто (довше розповідати, ніж зробити): Додаємо в меню Tools два пункти меню - для зміни налаштувань і для прошивки По суті в налаштуваннях прописані:перший параметр- файл avrdude.ini, який ми зберігаємо при налаштуванні в папку проекту,другий параметр- ім'я файлу мікропрограми.

Процес налаштування виглядає так:

  • Підключаємо програматор або плату Arduino з якою працюватимемо, щоб у системі з'явився потрібний COM порт.
  • Запускаємо Tools->R AVRduder: Setup, вибираємо налаштування та зберігаємо файл з налаштуваннями в каталозі свого проекту під ім'ям avrduder.ini (або те, яке вказали в налаштуваннях). Закриваємо утилітку

Тепер скомпілювавши проект, вибираємо в меню Tools-R AVRDudeR: Flash і готово.

Обидві версії avrdude вже лежать в архіві, нічого налаштовувати та прописувати в AVRDudeR не потрібно.

Трохи про налаштування:

Саму програму можна використовувати для заливки прошивки безпосередньо, не вбудовуючи. просто двічі клацаємо в полі Firmware, вибираємо файл прошивки (або просто вставляємо шлях до файлу руками) і тиснемо Flash Firmware. Файл конфігурації працює і в цьому випадку.

Якщо змінився контролер або підключили до іншого порту, через інший програматор, просто вибираємо Tools->R AVRDuder: Setup і відкривається файл з налаштуваннями цього проекту (або налаштуваннями за замовчуванням, якщо в папці з проектом avrduder.ini відсутня). Змінюємо порт чи програматор, контролер або що там у нас змінилося і зберігаємо назад avrduder.ini у папку проекту. Всі.

Так, avrdude.ini можна просто тягати з проекту до проекту, якщо працюєте з однаковими платами/програматорами. Просто скопіюйте його в папку нового проекту і можна нічого не налаштовувати взагалі. Ах так, трохи забув, в Code:Blocks я вибрав GNU AVR GCC Compiler і вказав тільки папку до AVR Tools. А проект налаштував так: Тоді компілятор створює файл .elf.hex, який ми і прошиваем. Якщо у вас по-іншому, змініть другий параметр, який передається в AVRDudeR, щоб він передавав ім'я файлу прошивки.

Сподіваюся, комусь це збереже нерви, підвищить продуктивність і дозволить зосередитися на роботі над ідеєю, а не возитися з купою приблуд при кожній компіляції та заливанні проекту. Якщо утиліта виявиться корисною, користуйтеся на здоров'я.