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:

    .
  1. La scheda ha due chips: l'ATMEGA328 (chip principale) e l'ATMEGA16U2 (utilizzato come un bidge USB-to-seriale).

  2. 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.

  3. 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?

  4. 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.

  5. 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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top