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?)
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?)
Risposte:
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:
Tools ► Board ►
nell'IDE. Ricontrolla anche se puoi caricare correttamente i programmi; il caricamento non richiede sempre la scheda giusta.Tools ► Programmer ►
.Tools ► Burn Bootloader
e attendi. Non dovrebbe richiedere più di un minuto e spesso richiede solo pochi secondi.fonti:
{line 1} or other dedicated ISP programmer.
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.
Un metodo alternativo per programmare un bootloader è usare uno schizzo che ho scritto qualche tempo fa che gira su un:
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.
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