Kochbuch LEONARDO Bootloader flashen

 

 

 

 

 

Vor einigen Tagen hatte ich es irgendwie geschafft, mein Leonardo Board zu killen. Der USB COM-Port war sowohl in meiner Arduino IDE als auch mit allen anderen Tools vom PC aus nicht mehr erreichbar. Bei der Programmierung eines Sketches hatte ich vermutlich einmal ein falsches Board gewählt, zum falschen Zeitpunkt das USB-Kabel vom Leonardo gezogen oder irgendetwas ähnlich Ungeschicktes getan. Die LEDs auf dem Board blinkten vom letzten Sketch zwar noch vor sich hin, aber ansonsten war das Board nicht mehr zu gebrauchen, da über USB schlichtweg nicht mehr zu erreichen. Leonardo_FrontDa auch Google mir erst einmal nicht weiterhalf, legte ich alles an die Seite, bis heute.

Da ich schon mehrfach für diverse Barebones den Bootloader eines auf dem Arduino Uno basierenden Atmega328 Controllers mit meinem Uno geflasht hatte, hoffte ich beim Leonardo ähnlich vorgehen zu können. Und tatsächlich funktioniert es ähnlich.

Acht SchritteSketch Arduino ISP

1. Wir verbinden den PC über ein USB-Kabel mit unserem Arduino Uno, den wir gleich als sogenannten ISP (In-System-Programmer) verwenden werden. In der Arduino IDE (bei mir Release 1.0.5) finden wir unter Datei und Beispiele den passenden Sketch ArduinoISP.

2. Als nächstArduino_ICSP_Headeres wählen wir unter Tools und Board unseren Arduino Uno aus, der nun in Kürze den Serial Peripheral Interface (SPI) Programmer spielen darf. Weiterhin muss im Menü unter Tools und  Serieller Port natürlich der richtige COM-Port ausgewählt werden.

3. Als nächstes den Programmer-Sketch über Datei und Upload oder das entsprechende Upload-Symbol auf das Uno-Board hochladen.

4. Nachdem wir die USB-Verbindung und ggf. auch die Stromversorgung des Arduino UNO wieder getrennt haben, erfolgt die Verkabelung mit dem zu programmierenden LEONARDO. Dazu habe ich in den Sparkfun Tutorials nebenstehendes anschauliches Bild gefunden, dass die Positionen der ggf. vorhandenen ICSP-Header eines UNOs beschreibt. Links oben ist der ICSP-Header (In-Circuit Serial Programming) des USB-Controllers zu finden, rechts außen der des embedded Controllers Atmega328 oder wie beim Leonardo der Atmega32U4. Der 6-Pin ICSP-Header des LEONARDO muss nun mit dem UNO SPI-ProgrammerArduino_6Pin_ICSP_Header verbunden werden. Links in nachfolgendem Bild ist der UNO als Programmer zu sehen, rechts davon wird unser LEONARDO werden, dessen Bootloader neu geflasht werden soll.

In meinem Testaufbau sieht das wie folgt aus:

Testaufbau_588x331

 

Auch hier links auf dem Foto ist der UNO zu sehen, der nun als SPI-Programmer fungiert. Rechts davon der LEONARDO, der über den 6-Pin ICSP-Header mit dem Bootloader programmiert werden soll. Beim LEONARDO ist unbedingt zu beachten, da6Pin_ICSP_Pinoutss das SPI-Interface nicht über die üblichen Digital Pins D11 , D12 und D13 herausgeführt ist, sondern nur über den 6-poligen ICSP-Header!

Der 6-Pin ICSP-Header hat generell die folgende Belegung.

.

Arduino as ISP AVR Programmer ISP Header ATmega328 ATmega32U4 ATmega2560

Vcc/5V              5V                         Pin 2           Vcc               Vcc                 Vcc
GND                 GND                      Pin 6           GND             GND               GND
MOSI/D11        MOSI                     Pin 4           D11               D16                Pin 51
MISO/D12        MISO                     Pin 1           D12               D14                Pin 50
SCK/D13         SCK/CLK              Pin 3           D13               D15                Pin 52
D10                  Reset                    Pin 5           Reset            Reset             Pin 53

5. Nach der SPI-Verkabelung des LEONARDO mit dem UNO stellen wir den USB-Anschluss zum PC wieder her.

6. Als nächstes müssen wir entscheiden, welcher Bootloader auf unser LEONARDO Board geladen wird. Dazu wählen wir einfach unter Tools und Board den LEONARDO aus. Zur Sicherheit überprüfen wir auch gleich noch den COM-Port. Dieser muss dem UNO ISP-Programmer entsprechen.

6. Unter Tools und Programmer wählen wir als nächstes den Menüpunkt Arduino as ISP aus. Damit wird der UNO nun als Programmer ausgewählt.

7. Nun müssen wir nur noch unter Tools den Punkt Bootloader installieren auswählen. Die LED an Pin 13 wie auch die beiden RX/TX LEDs auf Bootloader installiertdem UNO blinken nun eine ganze Weile. Dann erfolgt die Meldung in der Arduino IDE: „Bootloader wurde installiert“. Das war es bereits. Die LED auf dem LEONARDO sollte nun im Sekundentakt blinken.

8. Optional können an die Arduino Uno Digital Pins D7, D8 und D9 noch LEDs über entsprechende Vorwiderstände (330 Ohm) angeschlossen.

Arduino  Funktion
D7           Heartbeat
D8           Error
D9           Programming


9 Gedanken zu „Kochbuch LEONARDO Bootloader flashen

  1. Vielen Dank!
    Hat auf meinem gebricktem Arduino Micro prima funktioniert und ihn wieder zum Leben erweckt.
    Nur die Pin Belegung für den ICSP am Micro war zuerst etwas verwirrend. Offenbar ist die Seite mit dem Micro USB Anschluss OBEN. Das sollte beim anschließen der ICSP Pins an den ISP Arduino beachtet werden.
    Ich habe mich zunächst vom aufgedruckten „ICSP“ verwirren lassen und es falsch herum angeschlossen. Hat dem Board zwar nicht geschadet, aber hat eben auch nicht funktioniert. 😉

  2. Hallo,
    (falls hier noch jemand ist), ich bekomme beim Anklicken von „Bootloader brennen“ eine Fehlermeldung:
    „Fehler beim Brennen des Bootloaders
    avrdude: stk500_getsync(): not in sync: resp=0x00“
    Ansonsten habe ich alles so gemacht, wie es in der feinen Beschreibung aufgeführt ist.
    Gibt es eine Lösung für mein Problem?
    Vielen Dank!

    • Ich habe mich auch an die tolle Anleitung hier gehalten und hatte dann auch Fehlermeldungen wie etwa diese hier:
      avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x01

      Das Problem ließ sich beheben, indem ich auf dem als ISP verwendeten Arduino Uno einen 10uF-Kondensator zwischen Reset und GND angeschlossen habe. Das Problem tritt unter Linux auf, weil dort das erste Ansprechen der seriellen Schnittstelle via USB zum Reset des Arduino (hier des ISP) führt (glaube ich zumindest). Unter Windows sollte das Problem nicht auftreten. Der Kondensator verhindert den Reset und dann hat es auch bei mir geklappt.

  3. Danke,
    Hat alles Super funktioniert ich hab´s mit dem Arduino Uno gemacht. Also mit dem Arduino Uno den Bootloader von nem Arduino Uno aufgesetzt.
    Nochmal vielen Danke!

  4. Der Arduino Leonardo kann man auch noch über den „Arduino Leonardo bootloader“ USB-Gerät retten. Ich hatte meinen Leonardo leider auch in „den Tod“ geschickt .. aber wusste das der Leonardo sich zu allererst mit dem oben genannten USB-Gerät anmeldet (einfach mal im Geräte-Manger unter Windows die ausgeblendeten Geräte anzeigen lassen, dann sieht man es). Zum retten einfach den Leonardo resetten und auf „Port“ im Arduino-IDE achten, dort taucht der Leonardo Bootloader auf und verschwindet dann gleich wieder, danach taucht der normale Leonardo auf. Also einen leeren Sketch erstellen, Leonardo resetten und wenn der Bootloader im IDE auftaucht den auswählen. Dann nochmal resetten und Ctrl+U (upload) im IDE drücken, klappt vielleicht nicht beim allerersten mal, evtl. etwas später Ctrl+U drücken, aber spätestens nach dem dritten versuch sollte der Leonardo gerettet sein. 😀

  5. Als Arduino Einsteiger den LEONARDO Bootloader offensichtlich gleich geschrottet. Dank dieser Anleitung konnte ich die Platine wiederbeleben! Der COM-Port wurde nun auch endlich wieder erkannt und die Kommunikation mit der IDE klappt
    nach einem einmaligen Rest tadellos. I’m happy. Vielen Dank an dieser Stelle.

Schreibe einen Kommentar

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

I accept that my given data and my IP address is sent to a server in the USA only for the purpose of spam prevention through the Akismet program.More information on Akismet and GDPR.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.