Режими на програмиране на Arduino, буутлоудър, Arduino като ISP

В момента работя върху проект, използващ платка Arduino Uno (rev3). В крайна сметка може да го оставя да работи независимо от Arduino и това ме накара да се замисля как работи цялото програмиране и зареждане на системата.

Ето какво знам/предполагам досега:

  1. Платката има два чипа: ATmega328 (основен чип) и ATmega16u2 (използван като USB-към-сериен бидж).

  2. Фърмуерът на ATmega16u2 може да бъде променен чрез активиране на DFU-режим и използване на напр. DFU-програмист. След това Arduino може да бъде разпознат като HDI / Midi устройство, но вече не е програмируем.

  3. Когато програмирате ATmega328, чипът се нулира и при рестартиране буутлоудърът ще зареди и запише новата програма чрез своята серийна връзка и моста ATmega16u2. ISP-интерфейсът на чипа не се използва за качване на новата програма. Кой инициира нулирането на първо място?

  4. Arduino може да се използва като ISP-програматор за програмиране на други външни чипове. За тази цел някакъв фърмуер се зарежда на AATmega328 и ISP-пиновете на чипа, който ще се програмира, са свързани към този на платката Arduino. Тогава Arduino-IDE е конфигуриран да използва Atmega328 като програмист, вместо да го препрограмира.

Надявам се поне повечето от написаното от мен да е вярно. Въпросите ми тогава са:

Ако сложа нов/празен AVR на моята платка, как буутлоудърът ще влезе в този чип? Как работи командата "Burn Bootloader"?

Възможно ли е да качите шестнадесетичен файл в ATmega328 БЕЗ първо да качите буутлоудър? Може ли това да стане с помощта на специален фърмуер на ATmega16u2?

Благодаря!

Йоханес


person jfrohnhofen    schedule 12.04.2014    source източник


Отговори (1)


ISP програматор (или ArduinoISP, или отделен програматор като USBasp) може да се използва за програмиране на флаш, EEPROM, битове за предпазители и битове за заключване на AVR, без да се изисква предварително съществуващ буутлоудър. Той използва SPI щифтовете на устройството, за да изпраща команди до устройството за манипулиране на енергонезависимото съдържание за съхранение.

ATmega16U2 има само UART връзки към '328; няма начин да програмирате с помощта на UART без буутлоудър на '328.

person Ignacio Vazquez-Abrams    schedule 12.04.2014