Прошивка avr через бутлоадер

Так як USB програматор у мене з'явився не відразу, а шити через com порт було повільно і незручно, довелося шукати вихід з ситуації, що склалася і полягав він у використанні бутлоадер. Бутлоадер - це програма, яка отримує прошивку за обраним інтерфейсу, наприклад uart, і зашиває її в мікроконтролер.

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

Спочатку треба вибрати бутлоадер. для AVR підійде chip45boot2. нижче список підтримуваних їм контролерів на поточний момент.

Прошивка avr через бутлоадер


Качаємо hex бутлоадер для нашого мікроконтролера і програму тут.

Прошивка avr через бутлоадер


Отже, коли у нас є всі необхідні інструменти, можна приступати. В папці з бутлоадер знаходимо hex в якому присутня назва нашого МК, у мене Atmega16, і зашиваємо його попередньо виставивши фьюз BOOTSZ і BOORST.

Прошивка avr через бутлоадер


BOOTSZ - визначає розмір завантажувача, а BOORST - звідки стартуватиме МК після скидання.

У мене в Atmel Studio фьюз виглядають так.

Прошивка avr через бутлоадер


Але в інших програмах, фьюз можуть бути інвертовані, для того щоб зрозуміти чи так це, можна вважати поточне значення фьюз і подивитися чого равени SPIEN і JTAGEN - біти дозволяють прошивку МК по SPI і JTAG. вже якщо ти зміг підключитися до МК, то напевно по одному з цих інтерфейсів. За умовчанням вони встановлені і галочки повинні стояти, якщо ж навпаки фьюз інтерфейсу, по якому ти підключився, галочка не варто, фьюз треба інвертувати.

Тепер після скидання МК стартуватиме з завантажувального секції, там де знаходиться бутлоадер, він в свою чергу буде чекати, що йому передадуть прошивку, яку він повинен буде зашити в МК. На очікування виділено певний проміжок часу, кілька секунд, якщо протягом цього проміжку часу до нього не звертаються, МК переходить до виконання основної програми. Давайте підключимося до нього по uart. для цього нам знадобиться перехідник usb-uart. висновок RX перехідника з'єднується з виводом TX мікроконтролера, а висновок TX перехідника з висновком RX мікроконтролера.

Прошивка avr через бутлоадер


Відкриваємо програму chip45boot2. вибираємо com port. під яким визначився наш перехідник usb-uart. швидкість визначиться сама, скидаємо МК і натискаємо Connect to Bootloader. У разі успішного підключення лампочка Status зміниться на Connected і стане яскраво зеленої.

Прошивка avr через бутлоадер


Тепер вибираємо hex і / або eeprom файл і тиснемо кнопку Program Flash і / або Program Eeprom. Все, процедура прошивки закінчена, якщо помилково прошити МК программатором бутлоадер "злетить" і для його відновлення процедуру доведеться повторити.

І те ж саме на асемблері

Прошивка avr через бутлоадер


Тепер не треба скидати МК для з'єднання з бутлоадер, досить просто відправити йому букву b.

Схожі статті