Vraag:
Hoe brand ik de bootloader?
The Guy with The Hat
2014-02-27 04:09:57 UTC
view on stackexchange narkive permalink

Ik kreeg de opdracht 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?)

Het is vrij eenvoudig om de bootloader naar arduino te branden, op voorwaarde dat je de juiste stappen volgt. Deze video kan je misschien helpen: [YouTube - Bootloader branden op ATMEGA328P-AU (SMD) | Zelfgemaakte ARDUINO MINI] (https://youtu.be/mIq3ZsKPlTo)
Twee antwoorden:
#1
+18
The Guy with The Hat
2014-02-27 04:09:57 UTC
view on stackexchange narkive permalink

De bootloader is een klein programma dat (bijna) altijd op een Arduino staat. 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 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 bij Tools ► Board ► in de IDE. Controleer dit nogmaals, zelfs als u programma's correct zou kunnen uploaden; uploaden vereist niet altijd het juiste bord.
  6. Selecteer de juiste programmeur onder Tools ► Programmer ► .
  7. Klik op Tools ► Burn Bootloader , en wacht. Het duurt niet langer dan een minuut en duurt vaak maar een paar seconden.

Bronnen:

De AVRISP is op dit moment vrijwel EOL (end-of-life). U wilt minimaal een AVRISPmk2. Er zijn ook tal van andere, fijnere tools (bijvoorbeeld AVR One!). U moet waarschijnlijk gewoon '{regel 1} of een andere toegewijde ISP-programmeur' zeggen
Op boards zoals de Arduino Yun brand je elke keer dat je "uploadt via wifi" de bootloader samengevoegd met je sketch. Dit dankzij het feit dat de Linux CPU via SPI met de AVR MCU is verbonden, zodat je met software een ISP kunt nabootsen.
@FedericoFissore - duurt het daarom zo lang?
Ja, dat en het feit dat GPIO-bitbanging langzamer is. Er is een voortdurende inspanning om het te versnellen.
#2
+9
Nick Gammon
2015-07-21 02:11:40 UTC
view on stackexchange narkive permalink

Wat is een bootloader?

En wat is de bootloader precies?

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 op 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 pagina's 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 door 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 programmer for Uno

Die specifieke foto illustreert de ene Uno die een andere programmeert een.

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

  Atmega-chipprogrammeur.Geschreven door Nick Gammon.Entered programmeermodus OK.Signature = 0x1E 0x95 0x0F Processor = ATmega328PFlash-geheugengrootte = 32768 bytes.LFuse = 0xFF HFuse = 0xDE EFuse = 0xFD Lock byte = 0xCF Bootloader adres = 0x7E00 Bootloader lengte = 512 bytes.
Typ 'L' om Lilypad (8 MHz) loader te gebruiken, of 'U' voor Uno (16 MHz) loader ... Type 'G' om de chip met de bootloader te programmeren ...  

Je drukt op G om het te programmeren.

  Chip wissen ... Bootloader schrijven ... Committing pagina beginnend bij 0x7E00 Committing pagina beginnend bij 0x7E80 Committing pagina beginnend bij 0x7F00 pagina begint bij 0x7F80Written.Verifying ... Geen fouten gevonden.Zekeringen schrijven ... LFuse = 0xFF HFuse = 0xDE EFuse = 0xFD Lock byte = 0xCF Klaar.Type 'C' als je klaar bent om verder te gaan met een andere 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

Moet je het type chip selecteren waarop je brandt (Tools-> Bord ..)? Welk bord selecteer ik als ik de bootloader brand als zelfstandige chip?
Je selecteert het type bord * dat je gebruikt om de bootloader * in de IDE te branden. De bootloader-schets detecteert automatisch het doelbordtype.


Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 3.0-licentie waaronder het wordt gedistribueerd.
Loading...