Hoe brand ik de bootloader?

Ik kreeg de instructie om “de bootloader te branden” op mijn Arduino om een fout die ik kreeg op te lossen. Hoe kan ik dit doen? (En wat is precies de bootloader?)

Reacties

Answer

De bootloader is een klein programma dat (bijna) altijd op een Arduino. Het beheert het uploaden en starten van de schetsen die je maakt, en knippert de pin 13 LED wanneer het bord reset.


Om de bootloader te branden:

  1. Verkrijg een AVR ISP, USBtinyISP , ParallelProgrammer , of iets dergelijks; of gebruik een ander Arduino-bord . Dit wordt je ISP.
  2. Tenzij anders aangegeven, sluit je de ISP aan op de ICSP-pinnen op je board.
  3. Voorzie je board van stroom met een USB-kabel of een externe voeding.
  4. Open de Arduino IDE.
  5. Zorg ervoor dat je het juiste board hebt geselecteerd waarnaar je brandt op Tools ► Board ► in de IDE. Controleer dit nogmaals, zelfs als u programmas correct zou kunnen uploaden; uploaden vereist niet altijd het juiste bord.
  6. Selecteer de juiste programmeur op Tools ► Programmer ►.
  7. Klik op Tools ► Burn Bootloader, en wacht. Het mag niet langer dan een minuut duren, en duurt vaak maar een paar seconden.

Bronnen:

Reacties

  • De AVRISP is vrijwel EOL (einde levensduur) op dit punt. U wilt minimaal een AVRISPmk2. Er zijn ook tal van andere, fijnere tools (bijvoorbeeld AVR One!). Je moet waarschijnlijk gewoon zeggen {line 1} or other dedicated ISP programmer.
  • Op boards zoals de Arduino Yun, elke keer dat je " uploadt via wifi ", je ' brandt de bootloader samengevoegd met je schets. Dit dankzij het feit dat de Linux CPU via SPI is verbonden met de AVR MCU, zodat je een ISP kunt nabootsen met software.
  • @FedericoFissore – is dat waarom het zo lang duurt?
  • Ja, dat en het feit dat GPIO-bitbanging langzamer is. Er is een voortdurende inspanning om het te versnellen.

Antwoord

Wat is een bootloader?

En wat is precies de bootloader?

De bootloader is een klein stukje code dat zich in het “hoge” deel van het programmageheugen bevindt. Normaal gesproken wordt het niet gewist wanneer u nieuwe schetsen uploadt. Het doel ervan is om onmiddellijk na een reset te worden geactiveerd (de zekeringen zijn geconfigureerd om code te starten bij het bootloader-adres in plaats van het adres 0x0000). De bootloader wacht een korte tijd (zoals een seconde) om te zien of “programmeer” -gegevens op de seriële poort aankomen.

  • Als dat het geval is, leest het die gegevens en decodeert om de rest van het flashgeheugen te herprogrammeren. In samenwerking met het uploadprogramma (normaal gesproken avrdude) wordt de nieuwe schets via de seriële poort verzonden. De bootloader wist paginas met flash-geheugen en vervangt ze door de nieuwe code. Als het klaar is, voert het de nieuwe code uit.

  • Als er geen instructies aankomen, springt de bootloader naar adres 0x0000 om de bestaande sketch op het bord uit te voeren.


Hoe de bootloader te vervangen

Een alternatieve methode om een bootloader te programmeren is om een sketch te gebruiken die ik een tijdje geleden heb geschreven en die draait op een:

  • Uno (of vergelijkbaar, zoals Duemilanove)
  • Leonardo
  • Mega2560

Het “programmeer” -bord voert de schets uit die heeft bootloaders voor een aantal boards die er hard in zijn gecodeerd. Je verbindt het programmeerbord met het doelbord (het bord dat de bootloader wil) met 6 aansluitdraden zoals getoond.

Bootloader programmeur voor Uno

Die specifieke foto illustreert een Uno die een andere programmeert.

Je voert de sketch uit (opererend via de Serial Monitor om hem commandos te geven). Eerst identificeert het de doelchip:

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

De u drukt op G om het te programmeren.

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

Voor een Uno duurt dit een seconde. Het programmeren van een Mega2560 duurt 3 seconden.

Gedetailleerde instructies op Atmega bootloader programmeur

Code kan worden gedownload van Github: nickgammon / arduino_sketches

Reacties

  • Moet je het type selecteren van de chip waarnaar u brandt (Tools- > Board ..)?Welk bord selecteer ik als ik de bootloader als zelfstandige chip brand?
  • Je selecteert het type bord dat je gebruikt om de bootloader in de IDE te branden. De bootloader-sketch detecteert automatisch het doelbordtype.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *