Hvordan brænder jeg bootloaderen?

Jeg blev bedt om at “brænde bootloaderen” til min Arduino for at rette en fejl, jeg fik. Hvordan kan jeg gøre dette? (Og hvad er bootloaderen nøjagtigt?)

Kommentarer

Svar

Bootloader er et lille program, der næsten altid er på en Arduino. Det styrer upload og start af de skitser, du laver, og blinker pin 13-LEDen, hver gang kortet nulstilles.


Sådan brænder du bootloader:

  1. Få en AVR ISP, USBtinyISP , ParallelProgrammer eller lignende; eller brug et andet Arduino-kort . Dette er din internetudbyder.
  2. Medmindre andet er angivet, skal du slutte internetudbyderen til ICSP-stifterne på dit kort.
  3. Tænd dit kort med enten et USB-kabel eller en ekstern strømforsyning.
  4. Åbn Arduino IDE.
  5. Sørg for, at du valgte det rigtige kort, som du brænder til, på Tools ► Board ► i IDE. Dobbelttjek dette, selvom du kunne uploade programmer korrekt; upload kræver ikke altid det rigtige board.
  6. Vælg den relevante programmør på Tools ► Programmer ►.
  7. Klik Tools ► Burn Bootloader, og vent. Det tager ikke mere end et minut og tager ofte kun et par sekunder.

Kilder:

Kommentarer

  • AVRISP er stort set EOL (livets afslutning) på dette tidspunkt. Som minimum vil du have en AVRISPmk2. Der er også mange andre mere avancerede værktøjer (f.eks. AVR One!). Du skal nok bare sige {line 1} or other dedicated ISP programmer.
  • På tavler som Arduino Yun, hver gang du " uploader via wifi ", du ' brænder bootloaderen sammen med din skitse. Dette takket være, at Linux-CPUen er tilsluttet AVR MCU gennem SPI, så du kan efterligne en internetudbyder med software.
  • @FedericoFissore – er det derfor, det tager så lang tid?
  • Ja, det og det faktum, at GPIO bitbanging er langsommere. Der er en løbende indsats for at fremskynde det.

Svar

Hvad er en bootloader?

Og hvad er bootloaderen nøjagtigt?

Bootloaderen er et lille stykke kode, der ligger i den “høje” del af programhukommelsen. Normalt slettes det ikke, når du uploader nye skitser. Dens formål er at blive aktiveret umiddelbart efter en nulstilling (sikringerne er konfigureret til at begynde koden ved bootloader-adressen i stedet for adressen 0x0000). Bootloaderen venter kort tid (såsom et sekund) for at se, om “programmering” -data ankommer til den serielle port.

  • Hvis det er tilfældet, læser det disse data og afkoder det til at omprogrammere resten af flashhukommelsen. I samarbejde med uploadprogrammet (normalt avrdude) sendes den nye skitse via den serielle port. Bootloaderen sletter sider med flash-hukommelse og erstatter dem med den nye kode. Når det er gjort, udfører den den nye kode.

  • Hvis der ikke kommer nogen instruktioner, springer bootloaderen til adresse 0x0000 for at udføre den eksisterende skitse på tavlen.


Sådan udskiftes bootloader

En alternativ metode til at programmere en bootloader er at bruge en skitse, jeg skrev for et stykke tid siden, og som kører på en:

  • Uno (eller lignende, såsom Duemilanove)
  • Leonardo
  • Mega2560

“programmering” -tavlen kører skitsen, som har bootloadere til et antal kort, der er hårdkodet i den. Du forbinder programmeringskortet til målkortet (kortet, der ønsker bootloader) med 6 tilslutningskabler som vist.

Bootloader-programmør til Uno

Det bestemte foto illustrerer en Uno-programmering af en anden.

Du kører skitsen (fungerer via Serial Monitor for at give den kommandoer). Først identificerer den målchippen:

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 trykker på G for at programmere 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 ... 

For en Uno tager dette et sekund. Det tager 3 sekunder at programmere en Mega2560.

Detaljerede instruktioner på Atmega bootloader programmer

Koden kan downloades fra Github: nickgammon / arduino_sketches

Kommentarer

  • Skal du vælge typen af chip, du brænder til (Værktøj- > Board ..)?Hvilket kort vælger jeg, når jeg brænder bootloaderen til at stå alene chip?
  • Du vælger den type kort du bruger til at brænde bootloader i IDE. Bootloader-skitsen registrerer automatisk målkorttypen.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *