Come masterizzo il bootloader?

Mi è stato chiesto di “masterizzare il bootloader” sul mio Arduino per correggere un errore che stavo ricevendo. Come posso fare questo? (E cosè esattamente il bootloader?)

Commenti

Risposta

Il bootloader è un piccolo programma che è (quasi) sempre su un Arduino. Gestisce il caricamento e lavvio degli schizzi che fai e fa lampeggiare il LED del pin 13 ogni volta che la scheda si resetta.


Per masterizzare il bootloader:

  1. Procurati un AVR ISP, USBtinyISP , ParallelProgrammer o simili; oppure utilizza unaltra scheda Arduino . Questo sarà il tuo ISP.
  2. Se non diversamente indicato, collega lISP ai pin ICSP sulla tua scheda.
  3. Alimenta la tua scheda con un cavo USB o un alimentatore esterno.
  4. Apri lIDE di Arduino.
  5. Assicurati di aver selezionato la scheda corretta su cui stai masterizzando in Tools ► Board ► nellIDE. Ricontrolla questo anche se puoi caricare i programmi correttamente; il caricamento non richiede sempre la scheda giusta.
  6. Seleziona il programmatore appropriato in Tools ► Programmer ►.
  7. Fai clic su Tools ► Burn Bootloader e aspetta. Non dovrebbe “t richiedere più di un minuto e spesso richiede solo pochi secondi.

Fonti:

Commenti

  • AVRISP è praticamente EOL (fine vita) a questo punto. Come minimo, vuoi un file AVRISPmk2. Ci sono anche molti altri strumenti più elaborati (AVR One! Per esempio). Probabilmente dovresti semplicemente dire {line 1} or other dedicated ISP programmer.
  • Su schede come Arduino Yun, ogni volta che " carichi tramite Wi-Fi ", ' stai masterizzando il bootloader unito al tuo schizzo. Questo grazie al fatto che la CPU Linux è collegata allMCU AVR tramite SPI, in modo da poter imitare un ISP con il software.
  • @FedericoFissore – è per questo che ci vuole così tanto tempo?
  • Sì, questo e il fatto che il bitbanging GPIO sia più lento. È in corso uno sforzo per accelerarlo.

Risposta

Che cosè un bootloader?

E cosè esattamente il bootloader?

Il bootloader è un piccolo pezzo di codice che risiede nella parte “alta” della memoria del programma. Normalmente non viene cancellato quando carichi nuovi schizzi. Il suo scopo è di essere attivato immediatamente dopo un reset (i fusibili sono configurati per iniziare il codice allindirizzo del bootloader piuttosto che allindirizzo 0x0000). Il bootloader attenderà un breve periodo (ad esempio un secondo) per vedere se i dati di “programmazione” stanno arrivando sulla porta seriale.

  • In tal caso, legge quei dati e decodifica per riprogrammare il resto della memoria flash. Lavorando insieme al programma di caricamento (normalmente avrdude) il nuovo sketch viene inviato tramite la porta seriale. Il bootloader cancella le pagine della memoria flash e le sostituisce con il nuovo codice. Una volta terminato, esegue il nuovo codice.

  • Se non arrivano istruzioni, il bootloader salta allindirizzo 0x0000 per eseguire lo sketch esistente sulla scheda.


Come sostituire il bootloader

Un metodo alternativo per programmare un bootloader è usare uno schizzo che ho scritto tempo fa che gira su un:

  • Uno (o simile, come Duemilanove)
  • Leonardo
  • Mega2560

La scheda di “programmazione” esegue lo schizzo che ha bootloader per un certo numero di schede hard-coded in esso. Si collega la scheda di programmazione alla scheda di destinazione (la scheda che desidera il bootloader) con 6 cavi di collegamento come mostrato.

Programmatore bootloader per Uno

Quella foto in particolare illustra uno Uno che ne programma un altro.

Si esegue lo sketch (operando tramite il monitor seriale per impartirgli i comandi). Innanzitutto identifica il chip di destinazione:

Atmega chip programmer. Written by Nick Gammon. Entered programming mode OK. Signature = 0x1E 0x95 0x0F Processor = ATmega328P Flash memory size = 32768 bytes. LFuse = 0xFF HFuse = 0xDE EFuse = 0xFD Lock byte = 0xCF Bootloader address = 0x7E00 Bootloader length = 512 bytes. Type "L" to use Lilypad (8 MHz) loader, or "U" for Uno (16 MHz) loader ... Type "G" to program the chip with the bootloader ... 

Poi premi G per programmarlo.

Erasing chip ... Writing bootloader ... Committing page starting at 0x7E00 Committing page starting at 0x7E80 Committing page starting at 0x7F00 Committing page starting at 0x7F80 Written. Verifying ... No errors found. Writing fuses ... LFuse = 0xFF HFuse = 0xDE EFuse = 0xFD Lock byte = 0xCF Done. Type "C" when ready to continue with another chip ... 

Per Uno questo richiede un secondo. Per programmare un Mega2560 occorrono 3 secondi.

Istruzioni dettagliate su Programmatore bootloader Atmega

Il codice può essere scaricato da Github: nickgammon / arduino_sketches

Commenti

  • Devi selezionare il tipo di chip su cui stai bruciando (Tools- > Board ..)?Quale scheda seleziono quando masterizzo il bootloader in un chip autonomo?
  • Seleziona il tipo di scheda che stai utilizzando per masterizzare il bootloader nellIDE. Lo sketch del bootloader rileva automaticamente il tipo di scheda di destinazione.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *