Hvordan brenner jeg opplasteren?

Jeg fikk beskjed om å «brenne bootloader» til min Arduino for å fikse en feil jeg fikk. Hvordan kan jeg gjøre dette? (Og hva er opplasteren nøyaktig?)

Kommentarer

Svar

Bootloader er et lite program som er (nesten) alltid på en Arduino. Den klarer å laste opp og starte skissene du lager, og blinker pinnen 13 LED når kortet tilbakestilles.


For å brenne bootloader:

  1. Få en AVR ISP, USBtinyISP , ParallelProgrammer , eller lignende; eller bruk et annet Arduino-kort . Dette vil være din ISP.
  2. Med mindre annet er instruert, koble ISP til ICSP-pinnene på kortet ditt.
  3. Strøm kortet ditt med enten en USB-kabel eller en ekstern strømforsyning.
  4. Åpne Arduino IDE.
  5. Forsikre deg om at du valgte riktig tavle du brenner til på Tools ► Board ► i IDE. Dobbeltsjekk dette selv om du kunne laste opp programmer riktig; opplasting krever ikke alltid riktig tavle.
  6. Velg riktig programmerer på Tools ► Programmer ►.
  7. Klikk Tools ► Burn Bootloader, og vent. Det skal ikke ta mer enn et minutt, og tar ofte bare noen få sekunder.

Kilder:

Kommentarer

  • AVRISP er ganske mye EOL (livets slutt) på dette punktet. I det minste vil du ha en AVRISPmk2. Det er også mange andre, mer avancerte verktøy (AVR One! For eksempel). Du bør nok bare si {line 1} or other dedicated ISP programmer.
  • På tavler som Arduino Yun, hver gang du " laster opp via wifi ", du ' du brenner opp bootloaderen, fusjonerte med skissen din. Dette takket være at Linux-prosessoren er koblet til AVR MCU gjennom SPI, slik at du kan etterligne en ISP med programvare.
  • @FedericoFissore – er det derfor det tar så lang tid?
  • Ja, det og det faktum at GPIO bitbanging er tregere. Det arbeides kontinuerlig for å øke hastigheten.

Svar

Hva er en bootloader?

Og hva er opplasteren nøyaktig?

Bootloader er et lite stykke kode som ligger i den «høye» delen av programminnet. Normalt slettes det ikke når du laster opp nye skisser. Hensikten er at den skal aktiveres umiddelbart etter en tilbakestilling (sikringene er konfigurert til å starte koden på bootloader-adressen i stedet for adressen 0x0000). Bootloaderen vil vente en kort stund (for eksempel ett sekund) for å se om «programmeringsdata» kommer til den serielle porten.

  • I så fall leser den dataene og dekoder. det for å omprogrammere resten av flashminnet. Arbeidet i forbindelse med opplastingsprogrammet (normalt avrdude) blir den nye skissen sendt via serieporten. Bootloaderen sletter sider med flashminne og erstatter dem med den nye koden. Når det er gjort, kjører den den nye koden.

  • Hvis ingen instruksjoner kommer, hopper bootloaderen til adressen 0x0000 for å utføre den eksisterende skissen på tavlen.


Hvordan bytte ut bootloader

En alternativ metode for å programmere en bootloader er å bruke en skisse jeg skrev for en stund siden som kjører på en:

  • Uno (eller lignende, for eksempel Duemilanove)
  • Leonardo
  • Mega2560

«programmering» -brettet kjører skissen som har bootloaders for en rekke kort som er hardkodet i den. Du kobler programmeringskortet til målkortet (kortet som ønsker bootloader) med 6 tilkoblingskabler som vist.

Bootloader programmerer for Uno

Det bestemte bildet illustrerer en Uno-programmering av en annen.

Du kjører skissen (opererer via Serial Monitor for å gi den kommandoer). Først identifiserer 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 å 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 tar dette ett sekund. Å programmere en Mega2560 tar 3 sekunder.

Detaljerte instruksjoner på Atmega bootloader programmer

Koden kan lastes ned fra Github: nickgammon / arduino_sketches

Kommentarer

  • Må du velge typen av brikken du brenner til (Verktøy- > Board ..)?Hvilket brett velger jeg når jeg brenner bootloader for å stå alene?
  • Du velger typen brett du bruker til å brenne bootloader i IDE. Bootloader-skissen oppdager automatisk målkorttypen.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *