Wie brenne ich den Bootloader?

Ich wurde angewiesen, den Bootloader auf mein Arduino zu „brennen“, um einen Fehler zu beheben, den ich bekam. Wie kann ich das machen? (Und was genau ist der Bootloader?)

Kommentare

Antwort

Der Bootloader ist ein kleines Programm, das (fast) immer ist auf einem Arduino. Es verwaltet das Hochladen und Starten der von Ihnen erstellten Skizzen und blinkt die Pin 13-LED, wenn die Karte zurückgesetzt wird.


So brennen Sie den Bootloader:

  1. Besorgen Sie sich einen AVR ISP, USBtinyISP , ParallelProgrammer oder ähnliches; oder verwenden Sie ein anderes Arduino-Board . Dies ist Ihr ISP.
  2. Wenn nicht anders angegeben, verbinden Sie den ISP mit den ICSP-Pins auf Ihrer Karte.
  3. Versorgen Sie Ihre Karte entweder mit einem USB-Kabel oder einem externen Netzteil.
  4. Öffnen Sie die Arduino-IDE.
  5. Stellen Sie sicher, dass Sie unter Tools ► Board ► in der IDE die richtige Karte ausgewählt haben, auf die Sie brennen. Überprüfen Sie dies noch einmal, auch wenn Sie Programme korrekt hochladen können. Für das Hochladen ist nicht immer die richtige Karte erforderlich.
  6. Wählen Sie unter Tools ► Programmer ► den entsprechenden Programmierer aus.
  7. Klicken Sie auf und warten. Es sollte nicht länger als eine Minute dauern und dauert oft nur einige Sekunden.

Quellen:

Kommentare

  • Der AVRISP ist so ziemlich EOL (Lebensende) zu diesem Zeitpunkt. Zumindest möchten Sie einen AVRISPmk2. Es gibt auch viele andere, schickere Tools (zum Beispiel AVR One!). Sie sollten wahrscheinlich nur {line 1} or other dedicated ISP programmer.
  • auf Boards wie dem Arduino Yun sagen, jedes Mal, wenn Sie " über WLAN ", Sie ' brennen den mit Ihrer Skizze zusammengeführten Bootloader. Dies dank der Tatsache, dass die Linux-CPU über SPI mit der AVR-MCU verbunden ist, sodass Sie einen ISP mit Software nachahmen können.
  • @FedericoFissore – dauert das deshalb so lange?
  • Ja, das und die Tatsache, dass GPIO-Bitbanging langsamer ist. Es wird ständig versucht, dies zu beschleunigen.

Antwort

Was ist ein Bootloader?

Und was genau ist der Bootloader?

Der Bootloader ist ein kleiner Code, der sich im „hohen“ Teil des Programmspeichers befindet. Normalerweise wird es nicht gelöscht, wenn Sie neue Skizzen hochladen. Es soll unmittelbar nach einem Reset aktiviert werden (die Sicherungen sind so konfiguriert, dass der Code an der Bootloader-Adresse und nicht an der Adresse 0x0000 beginnt). Der Bootloader wartet eine kurze Zeit (z. B. eine Sekunde), um festzustellen, ob „Programmier“ -Daten an der seriellen Schnittstelle ankommen.

  • Wenn ja, liest er diese Daten und decodiert sie es, um den Rest des Flash-Speichers neu zu programmieren. In Verbindung mit dem Upload-Programm (normalerweise avrdude) wird die neue Skizze über die serielle Schnittstelle gesendet. Der Bootloader löscht Seiten des Flash-Speichers und ersetzt sie durch den neuen Code. Sobald dies erledigt ist, wird der neue Code ausgeführt.

  • Wenn keine Anweisungen eintreffen, springt der Bootloader zur Adresse 0x0000, um die vorhandene Skizze auf der Karte auszuführen.


So ersetzen Sie den Bootloader

Eine alternative Methode zum Programmieren eines Bootloaders besteht darin, eine Skizze zu verwenden, die ich vor einiger Zeit geschrieben habe und die auf einem:

  • Uno (oder ähnliches wie Duemilanove)
  • Leonardo
  • Mega2560
  • Auf der „Programmierkarte“ wird die Skizze ausgeführt, die hat Bootloader für eine Reihe von Boards, die fest codiert sind. Sie verbinden die Programmierkarte mit 6 Anschlusskabeln wie gezeigt mit der Zielkarte (die Karte, die den Bootloader haben möchte).

    Bootloader-Programmierer für Uno

    Dieses bestimmte Foto zeigt, wie ein Uno ein anderes programmiert.

    Sie führen die Skizze aus (über den seriellen Monitor, um Befehle zu erteilen). Zuerst wird der Zielchip identifiziert:

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

    Wenn Sie G , um es zu programmieren.

    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 ein Uno dauert dies eine Sekunde. Das Programmieren eines Mega2560 dauert 3 Sekunden.

    Detaillierte Anweisungen unter Atmega-Bootloader-Programmierer

    Code kann von Github: nickgammon / arduino_sketches

    Kommentare

    • Müssen Sie den Typ auswählen? von Chip, auf den Sie brennen (Tools- > Board ..)?Welche Karte wähle ich aus, wenn ich den Bootloader brenne, um einen eigenständigen Chip zu erhalten?
    • Sie wählen den Board-Typ aus, den Sie zum Brennen des Bootloaders in der IDE verwenden. Die Bootloader-Skizze erkennt automatisch den Zielkartentyp.

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.