Modalità di programmazione Arduino, Bootloader, Arduino AS ISP
-
21-12-2019 - |
Domanda
Attualmente sto lavorando su un progetto utilizzando una scheda Arduino UNO (Rev3). Alla fine potrei lasciarlo correre in modo indipendente da Arduino e questo mi ha fatto pensare come funziona l'intera programmazione e bootloader.
Ecco cosa so / assumere finora:
- .
-
La scheda ha due chips: l'ATMEGA328 (chip principale) e l'ATMEGA16U2 (utilizzato come un bidge USB-to-seriale).
-
Il firmware dell'ATMEGA16U2 può essere modificato attivando la modalità DFU e utilizzando E.G. DFU-Programmer. L'Arduino può quindi essere riconosciuto come un dispositivo HDI / MIDI ma non è più programmabile.
-
Quando si programma l'ATMEGA328, il chip viene ripristinato e il riavvio del bootloader caricherà e scrive il nuovo programma tramite la sua connessione seriale e il ponte ATmega16U2. L'interfaccia ISP del chip non viene utilizzata per il caricamento del nuovo programma. Chi sta iniziando il reset in primo luogo?
-
L'Arduino può essere utilizzato come programmatore ISP per programmare altre chip esterne. Per questo il firmware viene caricato sull'Atmega328, i pin ISP del chip da programmare sono collegati a quello sulla scheda Arduino. Quindi l'Arduino-IDE è configurato per utilizzare ATMEGA328 come programmatore anziché riprogrammarlo.
Spero, almeno la maggior parte di ciò che ho scritto è corretto. Le mie domande allora sono:
Se metto un nuovo / vuoto AVR sulla mia scheda, come fa il bootloader su quel chip? Come funziona il comando "Burn Bootloader"?
È possibile caricare un file esagonale in ATMEGA328 senza caricare prima un bootloader? Può essere fatto usando il firmware Speciaf su ATMEGA16U2?
Grazie!
Johannes
Soluzione
Un programmatore ISP (ARDUINOP o un programmatore discreto come USBASP) può essere utilizzato per programmare il flash, la EEPROM, i bit del fusibile e il blocco dei bit di un AVR senza richiedere un bootloader preesistente.Utilizza i perni SPI sul dispositivo per inviare comandi al dispositivo per manipolare i contenuti di stoccaggio non volatili.
L'ATMEGA16U2 ha solo le connessioni UART con il '328;Non c'è modo di programmare utilizzando l'UART senza un bootloader sul '328.