Come posso masterizzare il bootloader?


15

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


È abbastanza facile masterizzare bootloader su arduino purché tu segua i passi giusti. Questo video potrebbe aiutarti: YouTube - Come masterizzare Bootloader su ATMEGA328P-AU (SMD) | ARDUINO MINI fatto in casa
Sandesh HS,

Risposte:


15

Il bootloader è un piccolo programma che è (quasi) sempre su un Arduino. Gestisce il caricamento e l'avvio degli schizzi realizzati e fa lampeggiare il LED del pin 13 ogni volta che la scheda viene ripristinata.


Per masterizzare il bootloader:

  1. Ottieni un ISP AVR , USBtinyISP , ParallelProgrammer o un'altra scheda Arduino . Questo sarà il tuo ISP.
  2. Salvo diversa indicazione, collegare l'ISP ai pin ICSP sulla scheda.
  3. Alimenta la tua scheda con un cavo USB o un alimentatore esterno.
  4. Apri l'IDE di Arduino.
  5. Assicurati di aver selezionato la scheda corretta su cui stai bruciando Tools ► Board ►nell'IDE. Ricontrolla anche se puoi caricare correttamente i programmi; il caricamento non richiede sempre la scheda giusta.
  6. Selezionare il programmatore appropriato su Tools ► Programmer ►.
  7. Fai clic Tools ► Burn Bootloadere attendi. Non dovrebbe richiedere più di un minuto e spesso richiede solo pochi secondi.

fonti:


1
L'AVRISP è praticamente EOL (fine vita) a questo punto. Come minimo, vuoi un AVRISPmk2. Ci sono anche molti altri strumenti più elaborati (ad esempio AVR One!). Probabilmente dovresti semplicemente dire{line 1} or other dedicated ISP programmer.
Connor Wolf,

Su schede come Arduino Yun, ogni volta che "carichi tramite wifi", stai bruciando il bootloader unito al tuo schizzo. Questo grazie al fatto che la CPU Linux è connessa all'AVR MCU tramite SPI, in modo da poter imitare un ISP con il software.
Federico Fissore,

@FedericoFissore - è per questo che ci vuole così tanto tempo?
TheDoctor

Sì, questo e il fatto che il bitbanging GPIO è più lento. C'è uno sforzo in corso per accelerarlo.
Federico Fissore

8

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 si caricano nuovi schizzi. Ha lo scopo di attivarsi immediatamente dopo un reset (i fusibili sono configurati per iniziare il codice all'indirizzo del bootloader anziché all'indirizzo 0x0000). Il bootloader attenderà brevemente (ad esempio un secondo) per vedere se i dati di "programmazione" arrivano sulla porta seriale.

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

  • Se non arrivano istruzioni, il bootloader passa all'indirizzo 0x0000 per eseguire lo schizzo esistente sulla scheda.


Come sostituire il bootloader

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

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

La scheda "programmazione" esegue lo schizzo che contiene bootloader per un certo numero di schede codificate al suo interno. Si collega la scheda di programmazione alla scheda di destinazione (la scheda che desidera il bootloader) con 6 cavi di aggancio come mostrato.

Programmatore di bootloader per Uno

Quella foto particolare illustra uno Uno che ne sta programmando un altro.

Esegui lo schizzo (operando tramite il monitor seriale per dare i comandi). Innanzitutto identifica il chip target:

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

Si preme 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 Uno ci vuole un secondo. Per programmare un Mega2560 ci vogliono 3 secondi.

Istruzioni dettagliate sul programmatore del bootloader Atmega

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


Devi selezionare il tipo di chip su cui stai masterizzando (Strumenti-> Scheda ...)? Quale scheda seleziono quando sto masterizzando il bootloader per il chip autonomo?
Camilo,

Seleziona il tipo di scheda che stai utilizzando per masterizzare il bootloader nell'IDE. Lo schizzo del bootloader rileva automaticamente il tipo di scheda di destinazione.
Nick Gammon
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.