104-Прошивка будь-якого hex-файлу в arduino за допомогою штатного завантажувача (bootloader)

Давайте трохи відвернемося від створення нашого робота і поговоримо про те, як ми будемо записувати прошивку в Arduino.

Нас, перш за все, цікавлять три плати Arduino:
- Arduino Uno - як найпоширеніший варіант
- Arduino Nano - компактний варіант, зручний для застосування в невеликих конструкціях
- Arduino Pro Mini - дешевий компактний варіант без вбудованого USB-UART перетворювача (для роботи з ним знадобиться зовнішній USB-UART перетворювач), але зручний в разі застосування мережі пристроїв.

104-Прошивка будь-якого hex-файлу в arduino за допомогою штатного завантажувача (bootloader)
104-Прошивка будь-якого hex-файлу в arduino за допомогою штатного завантажувача (bootloader)
104-Прошивка будь-якого hex-файлу в arduino за допомогою штатного завантажувача (bootloader)

У всіх вищеописаних платах використовується мікроконтролер ATmega328 (в старіших версіях ATmega168).

ATmega48_88_168_328.pdf - даташіте на ATmega48A-48PA-88A-88PA-168A-168PA-328-328P

Однією з головних причин вибору плати Arduino для проекту робота була можливість записувати прошивку пристрою в МК не застосовуючи програматора і будь-яких додаткових пристроїв. Все що потрібно для прошивки мікроконтролера Arduino - це стандартний USB шнур (який входить в комплект Arduino).

104-Прошивка будь-якого hex-файлу в arduino за допомогою штатного завантажувача (bootloader)

Це означає, якщо Ви маєте Ардуіно - Ви маєте будь-який пристрій ZiChip!

Запис програми в МК через USB відбувається через спеціальний завантажувач (Bootloader), який записаний в МК при виготовленні плати. Взагалі, завантажувач призначений для роботи зі своїм спеціальним програмним забезпеченням Arduino IDE, але в разі, коли необхідно прошити в Ардуіно щось стороннє (свій Hex-файл), є програми дозволяє це реалізувати.

104-Прошивка будь-якого hex-файлу в arduino за допомогою штатного завантажувача (bootloader)

GC Uploader.zip - автоматичний завантажувач HEX-файлів для Arduino

Програма цікава тим, що обраний HEX-файл буде заливатися в Ардуіно автоматично після кожного його зміни. Це зручно, так як при розробці проекту кожна компіляція (оновлення Хекса) ініціюватиме прошивку Ардуіно - Вам нічого не доведеться робити самому! Крім того в програмі є і ручний режим прошивки.

104-Прошивка будь-якого hex-файлу в arduino за допомогою штатного завантажувача (bootloader)

XLoader.zip - Програма для запису Hex-файлу в Arduino

Програма має аскетичний інтерфейс і працювати з нею гранично просто:
- підключаємо Arduino в USB-порт (окремого харчування не потрібно)
- вибираємо Hex файл
- вибираємо тип Вашого Arduino
- вибираємо COM порт, який створився при підключенні Arduino до USB (швидкість порту автоматично підставить при виборі типу Arduino)
- тиснемо Upload

Це все! Нічого складного. Прошивка через кілька секунд буде записана в МК і автоматично запуститься. Один мінус - програма ніяк не повідомляє про те, що прошивка вже записана, але це можна побачити по припиненню мерехтіння світлодіодів RXD і TXD на Ардуіно.

XLoader використовує для запису прошивки AVR Dude і в якості протоколу програмування використовується STK500. Але, схоже, в настройках AVR Dude, проведена корекція, так як використання стандартного AVR Dude з такими ж налаштуваннями не дає результатів.

При розробці ПО для мікроконтролера проводиться дуже багато прошивок і завжди потрібно прагнути автоматизувати цей процес після складання проекту - це економить час і нерви. В даному випадку автоматизація ускладнена, так як програма не вказує командний рядок для AVR Dude (хіба що підбирати досвідченим шляхом), але деяке спрощення процесу можливо. Робиться це в такий спосіб - після першої прошивки не закриваємо вікно програми (COM порт після прошивки програма відпускає) і після наступної збірки проекту просто тиснемо кнопку «Upload». Звичайно, збірка повинна здійснюватися в один і той же Hex-файл.

104-Прошивка будь-якого hex-файлу в arduino за допомогою штатного завантажувача (bootloader)

ArduinoUploader.zip - Програма для запису Hex-файлу в Arduino

Як і попередня, програма має простий інтерфейс.
Процес прошивки той же:
- підключаємо Arduino в USB-порт (окремого харчування не потрібно)
- вибираємо Hex файл
- вибираємо тип Вашого Arduino
- вибираємо COM порт
- тиснемо Upload

Програма під час запису відкриває додаткові вікна і візуально відображає свої дії, що дозволяє стежити за процесом запису.

При спробі прошити Arduino Nano програма відмовлялася бачити МК. Причиною стала неправильна установка швидкості COM порту. За замовчуванням швидкість варто 19200, а потрібно 57600. Швидкість порту в програмі не задається явно, вона прописується в рядку «AVR Dude Params» - поміняйте в ній значення 19200 на 57600.

Автоматизація ARP Uploader.
ARP Uploader як і XLoader працює через AVR Dude, але, на відміну від XLoader, показує командний рядок. Це дає можливість використовувати AVR Dude безпосередньо в Make або Bat файлі.

Додаткові матеріали.
Драйвера Arduino.

Вважаю не зайвим нагадати, що для зв'язку Arduino з комп'ютером в останньому повинні бути присутніми драйвера. Залишаю тут архів з драйверами для Arduino (включаючи і старі драйвера в Old_Arduino_Drivers.zip і драйвера для FTDI-чіпа в папці «FTDI USB Drivers»

Arduino_drivers.zip - Драйвера для Arduino

Стали з'являтися недорогі китайські Ардуіно з драйвером CH340G
Driver CH340G.zip - Драйвер для перетворювача USB-UART

Якщо Ви вирішите зібрати свою плату Arduino (а складного там нічого немає, фактично, це голий ATmega328 або ATmega168), Вам знадобиться завантажувач Bootloader який повинен містити МК для роботи з середовищем (або програмами для заливки Hex-файлів). Звичайно, Вам для запису Hex-файлів в чистий МК знадобиться програматор і доведеться виставити фьюз.

ATmegaBOOT_168_atmega328.hex - Bootloader для ATmega328
Для правильної роботи потрібно встановити фьюз наступним чином Low: FF High: DA Ext: 05

ATmegaBOOT_168_diecimila.hex - Bootloader для ATmega168
Фьюз Low: FF High: DD Ext: 00

Схема вищеописаних Ардуіно.
Arduino_Uno_Rev3-schematic.pdf - Схема Arduino Uno
ArduinoNano30Schematic.pdf - Схема Arduino Nano
Arduino-Pro-Mini-schematic.pdf - Схема Arduino Pro Mini

Фьюз встановлені за замовчуванням в Arduino (тільки з ATmega328)
Arduino Uno
Low Fuse 0xFF
High Fuse 0xDE
Extended Fuse 0x05

Arduino Duemilanove or Nano w / ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05

Arduino BT w / ATmega328
Low Fuse 0xFF
High Fuse 0xD8
Extended Fuse 0x05

LilyPad Arduino w / ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05

Arduino Pro or Pro Mini (5V, 16 MHz) w / ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05

(Visited 61 126 times, 5 visits today)

Навігація по публікаціям

У мене 4 плати з мега168 від одного виробника і одна з мега 328 від іншого. Причому, мікросхеми теж різних виробників. 328-я з логотипом Атмел, a 168-я теж з написом Атмел, але не такий, як у Атмел. Що ж, вони все бракованих?
Світлодіод блимає - значить заводська прошивка працює. Якби були бракованих, то і заводська прошивка не запрацювала б. Малоймовірно, що вони якісь частково бракованих або для застосування виключно в Ардуіно.
Коли я їх купував, то теж думав, що там все відкрито і можна буде легко перепрошити. Навіщо секретити програму, яка в бібліотеці з Ардуіно у відкритому доступі? І в описі було сказано, що підходить в тому числі і для Ардуіно.
Дивно що ні Xloader ні Uploader не працюють. Може десь в комп'ютері потрібно щось перевірити? Пташки якісь десь поставити?

Якщо мікроконтролери не виходить прошити через звичайний програматор (з того-ж білдера) то проблема або з самим МК або з установкою фьюз / лок-біт в ньому.

ще може бути порушений завантажувач (при цьому основна програма може працювати)
або швидкість порту для завантажувача потрібна інша (спробувати поміняти з лінійки стандартних)

як варіант можна спробувати встановити ардуіновское IDE і попитатся прошити з нього

Схоже на те, що під час прошивки щось збилося і пішло не так.

Схожі статті