Hur bränner jag startladdaren?

Jag fick instruktioner om att ”bränna startladdaren” till min Arduino för att åtgärda ett fel jag fick. Hur kan jag göra detta? (Och vad är startladdaren exakt?)

Kommentarer

Svar

Bootloader är ett litet program som (nästan) alltid är på en Arduino. Den hanterar uppladdning och start av skisserna du gör och blinkar stift 13-lysdioden när styrelsen återställs.


Att bränna bootloader:

  1. Skaffa en AVR ISP, USBtinyISP , ParallelProgrammer eller liknande; eller använd ett annat Arduino-kort . Detta kommer att vara din ISP.
  2. Anslut ISP till ICSP-stiften på kortet om inget annat anges,
  3. Ström ditt kort med antingen en USB-kabel eller en extern strömförsörjning.
  4. Öppna Arduino IDE.
  5. Se till att du valde rätt kort som du bränner till vid Tools ► Board ► i IDE. Dubbelkolla detta även om du kunde ladda upp program korrekt; uppladdning kräver inte alltid rätt kort.
  6. Välj lämplig programmerare vid Tools ► Programmer ►.
  7. Klicka på Tools ► Burn Bootloader och vänta. Det borde inte ta mer än en minut och tar ofta bara några sekunder.

Källor:

Kommentarer

  • AVRISP är ganska mycket EOL (livets slut) vid denna tidpunkt. Du vill åtminstone ha en AVRISPmk2. Det finns också många andra, snyggare verktyg (AVR One! Till exempel). Du borde nog bara säga {line 1} or other dedicated ISP programmer.
  • På brädor som Arduino Yun, varje gång du " laddar upp via wifi ", du ' som bränner startladdaren slogs samman med din skiss. Detta tack vare att Linux-CPU: n är ansluten till AVR MCU via SPI, så att du kan efterlikna en ISP med programvara.
  • @FedericoFissore – är det därför det tar så lång tid?
  • Ja, det och det faktum att GPIO bitbanging går långsammare. Det pågår ett ständigt försök att påskynda det.

Svar

Vad är en bootloader?

Och vad är startladdaren exakt?

Bootloader är en liten kod som finns i den ”höga” delen av programminnet. Normalt raderas det inte när du laddar upp nya skisser. Dess syfte är att den ska aktiveras omedelbart efter en återställning (säkringarna är konfigurerade för att påbörja koden vid bootloader-adressen snarare än adressen 0x0000). Bootloader väntar en kort stund (t.ex. en sekund) för att se om ”programmeringsdata” kommer till den seriella porten.

  • Om så är fallet läser den informationen och avkodas för att omprogrammera resten av flashminnet. I samband med uppladdningsprogrammet (normalt avrdude) skickas den nya skissen via den seriella porten. Bootloader raderar sidor med flashminne och ersätter dem med den nya koden. När det är klart körs den nya koden.

  • Om inga instruktioner kommer, hoppar startladdaren till adressen 0x0000 för att utföra den befintliga skissen på tavlan.


Hur man byter ut bootloader

En alternativ metod för att programmera en bootloader är att använda en skiss som jag skrev för en tid sedan och körs på en:

  • Uno (eller liknande, som Duemilanove)
  • Leonardo
  • Mega2560

”programmerings” -tavlan kör skissen som har bootloaders för ett antal kort som är hårdkodade i den. Du ansluter programmeringskortet till målkortet (kortet som vill ha startladdaren) med sex anslutningsledningar som visas.

Bootloader-programmerare för Uno

Det specifika fotot illustrerar en Uno-programmering av en annan.

Du kör skissen (fungerar via Serial Monitor för att ge den kommandon). Först identifierar det målchipet:

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

Du trycker på G för att programmera det.

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

För en Uno tar det en sekund. Att programmera en Mega2560 tar 3 sekunder.

Detaljerade instruktioner på Atmega bootloader programmerare

Koden kan laddas ner från Github: nickgammon / arduino_sketches

Kommentarer

  • Måste du välja typ av chip du brinner till (Verktyg- > Board ..)?Vilket kort väljer jag när jag bränner bootloader för att stå fristående chip?
  • Du väljer vilken typ av kort du använder för att bränna bootloader i IDE. Bootloader-skissen känner automatiskt av typ av målkort.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *