|
 |
 |
 |
 | Wie brenne ich einen Arduino-Bootloader? |
|
Highli
Mitglied

Dabei seit: 23.12.2011
Beiträge: 24
Wohnort: Brühl
 |
|
Hallo liebe Freunde,
ich hatte es ja schon angedroht, dass ich ein Thema einstellen werde, das sich mit dem Brennen eines Arduino-Bootloaders befasst.
Jetzt ist es soweit
Wer noch nicht ein elektronisches Bauteil in die ewigen Jagdgründe geschickt hat, der möge die Hand heben... Na also, dacht' ich's mir
Es kann schnell passieren - aus Unachtsamkeit, aus Unwissenheit oder einfach nur, weil man mal Pecht hat - und das gute Stück gibt Rauchsignale von sich. Dann ist es gut, wenn man einen sogenannten AVR-Programmer zur Hand hat. Das ist ein Gerät, das an die ISP-Schnittstelle des Arduino-Boards angeschlossen wird und mit dem wir einen brandneuen Mikrocontroller mit einem Bootloader versehen können. Ein Bootloader ist ein kleines Programm, dass auf im Speicher des Mikrocontrollers dafür sorgt, dass wir unsere Sketche ganz einfach über die USB-Schnittstelle zum Board übertragen können. Also ganz ohne die Zuhilfenahme eines Programmers.

Ihr seht hier auf dem Bild, dass ich das Arduino-Board mit dem AVR-Programmer über die ISP-Schnittstelle verbunden habe, der seinerseits über meinen USB-Hub am PC hängt. Damit das Arduino-Board mit Spannung versorgt wird, müssen sich die DIP-Switches, die sich am Programmer befinden, in der folgenden Position befinden:

Wollten wir einen Sketch auf einen brandneuen Mikrocontroller ohne Bootloader schicken, dann geht das 100%ig schief. Hier seht Ihr die Reaktionen der Entwicklungsumgebung auf ein derartiges Vorhaben:

Der Compiler fängt an zu arbeiten...

und dann kommt doch tatsächlich die Meldung "Done Uploading", was natürlich absoluter Quatsch ist. Das Nachrichtenfenster zeigt aber etwas in roter Farbe an und das kann nichts Gutes bedeuten. Das Programm avrdude, was im Hintergrund für die Übertragung des Sketches zum Mikrocontroller verantwortlich ist, streikt und gibt eine Fehlermeldung aus.
Ok, dann wollen wir mal sehen, was zu tun ist. Hast Du das Arduino-Board wir hier gezeigt mit dem AVR-Programmer verbunden, dann musst Du herausfinden, welchen COM-Port er belegt. Das kannst Du über einen Blick in den Gerätemanager herausfinden.

Das war in meinem Fall der Port mit der Nummer 5. Genau diesen Port musst Du Dir merken und beim Start der Arduino-Entwicklungsumgebung bei der Konfiguration eintragen. Zu erst wählst Du das richtige Board aus. In meinem Fall arbeite ich mit dem Arduino-Uno.

Dann wähle ich den besagten COM-Port aus.

Und im Anschluss den verwendeten AVR-Programmer, der in meinem Fall AVRISP mkII kompatibel arbeitet.

Mein Programmer ist übrigens der DIAMEX USB ISP-Programmer für ATMEL AVR, STK500, ATmega, ATtiny, AT90, den es z.B. bei Reichelt für 21,50€ gibt. Also recht günstig, wie ich finde. Bevor Ihr jedoch den Programmer über die Entwicklungsumgebung ansprechen könnt, muss noch eine Datei angepasst werden, denn andernfalls erkennt sie den Programmer nicht.

Die Datei programmers.txt im gezeigten Verzeichnis beinhaltet einige Einträge, von denen Du die folgenden suchen musst:

Du muss den Eintrag von usb auf serial anpassen und dann die Entwicklungsumgebung starten. Jetzt kann Du den Menüpunkt Burn Bootloader wählen.

Danach kommen die beiden Meldungen - so Gott will - und Du hast einen neuen Bootloader auf einen frischen Mikrocontroller übertragen.

und endlich...

Ist also eigentlich ganz einfach, nicht wahr!?
Ich wünsche euch viel Spaß und viel Glück dabei...
Falls Ihr noch Fragen habt, dann schreibt einfach.
Bis dann
Euer Erik
|
|
11.03.2012 19:14 |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
Peter D
Mitglied
Dabei seit: 10.05.2008
Beiträge: 297
Wohnort: Middle Franconia
 |
|
Hallo elektrolutz,
ja das liegt an meinem Firefox-Browser, wie ich jetzt bemerkte.
Ich habe keinen deutschen Firefox. Dadurch bekomme ich dort nur 'Product not found'.
Die haben ihre Web-Site vermutlich nur für deutsche Kunde eingerichtet?
Gruß,
Peter
|
|
24.05.2012 00:31 |
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
Kaffeeholiker
Mitglied
Dabei seit: 05.05.2012
Beiträge: 179
Wohnort: Leipzig
 |
|
@Highli
In modernen Mikrocontroller werden Flash-Speicher verwendet, welsche natürlich programmiert werden und nicht etwa gebrannt wie die guten alten EEPROM !
|
|
10.08.2012 22:44 |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
Braun CC4
Mitglied

Dabei seit: 24.02.2013
Beiträge: 40
Wohnort: 33649 Bielefeld
 |
|
Moin Erik!
Ich habe mich am Wochenede das erste mal mit Prozessoren befasst und mir nen Wolf gesucht warum mein neuer Chip auf dem Uno keine Programme ladet.
Das ein Bootloader zwar auf dem Originalchip geladen war (oder überhaupt gebraucht wird) hab ich dann erst nach Stunden des studiums im Netz gefunden.
Einen ISP Programmer mit einem 10poligen Wannenstecker hatte ich mir auch zugelegt. Dann hin und her versucht um den Bootloader auf den neuen Chip zu bringen... alles erfolglos.
Dann fand ich Deinen tollen Bericht hier und baute mir einen 6-poligen Adapter auf dem Steckbrett um von 10 auf 6 zu kommen. Einen 6er Wannenstecker habe ich noch nicht aber der 10er passt auch und man muss nur noch auf die richtige Pinverbindung achten, dann hatte ich zumindestens die Hardware passend.
Das man die TXT Datei von USB nach serial umschreiben muss hätte ich wahrscheinlich nie herrausgefunden.... VIELEN DANK!
2 Fragen hab ich:
Warum ist der Eingriff in die TXT Datei nötig, der ISP Programmer läuft doch auch über USB?
Warum kann man den Bootloader nicht ohne ISP Programmer bootfähig machen und ihn direkt vom UNO-USB flashen?
"Blink" klappt nun auf 2 Chips und ich kann experimentieren, dank Deiner tollen Beschreibung!!
Vielen Dank nochmals.... Uli
|
|
02.04.2013 22:51 |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
Peter D
Mitglied
Dabei seit: 10.05.2008
Beiträge: 297
Wohnort: Middle Franconia
 |
|
| Zitat: |
Original von Braun CC4
2 Fragen hab ich:
Warum ist der Eingriff in die TXT Datei nötig, der ISP Programmer läuft doch auch über USB?
Warum kann man den Bootloader nicht ohne ISP Programmer bootfähig machen und ihn direkt vom UNO-USB flashen? |
Hallo Uli,
ich bin zwar nicht Erik, aber ich versuche mal zu erklären:
1: Der Eintrag in programmers.txt dient zur Identifizierung der angeschlossenen Hardware (Programmer).
Damit die Arduino Entwicklungsumgebung weiß, welche Hardware geschlossen ist (wie sie damit umgehen muss).
2: Der Atmega wird über die RXD, TXD Anschlüsse programmiert (seriell).
Das klappt jedoch nur über einen extra Programmer, nicht direkt über USB.
Damit der Arduino auch direkt über USB programmiert werden kann, ist auf dem Board ein USB-to-seriell-Konverter (FTDI-Chip oder ein weiterer kleiner Atmega) verbaut.
Für die Kommunikation zwischen Atmega und USB-to-Serial-Konverter ist ein Stück Software (Bootloader) nötig.
Und dieser Bootloader muss erst über einen extra Programmer auf den Controller übertragen werden.
Grüße, Peter
|
|
03.04.2013 01:49 |
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
Andre2
Mitglied
Dabei seit: 25.03.2013
Beiträge: 11
 |
|
Hallo liebe Arduino Freunde,
ich habe mir neulich einen Arduino Nano-328 bei Lipoly gekauft.
Was ich nicht wusste: darauf ist kein Bootloader vorhanden.
Ich habe exakt die Fehlermeldung, die Erik oben beschrieben hat, bekommen.
Frage:
Muss ich mir extra so einen AVR-Programmer zulegen, um den Bootloader zu brennen?,
oder geht das vielleicht auch mit einem weiteren Arduino Uno, den ich auch noch habe und bei dem der Bootloader schon drauf ist?
Öffnet man in der IDE Datei-->Beispiele-->ArduinoISP , dann öffnet sich ein Programm
"Arduino ISP". Geht das damit?
Vielleicht kann mir jemand hier wertvolle Tipps geben.
Vielen Dank schon mal im Voraus.
Liebe Grüße
Andre
|
|
19.05.2013 13:00 |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
Andre2
Mitglied
Dabei seit: 25.03.2013
Beiträge: 11
 |
|
Hallo Peter,
erst mal vielen Dank für deinen Tipp.
Leider bin ich damit nicht weiter gekommen. Es gab immer Fehlermeldungen.
Ich habe alles so angeschlossen, wie beschrieben.
Vielleicht findet sich hier jemand, der sowas schon mal gemacht hat,
und das Verfahren genauer beschreiben könnte.
Gruß
Andre
|
|
20.05.2013 12:58 |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
Andre2
Mitglied
Dabei seit: 25.03.2013
Beiträge: 11
 |
|
Hallo liebe Arduino Freunde,
nun habe ich mir doch so einen DIAMEX USB ISP-Programmer zugelegt, um auf meinen Arduino Nano 328 einen Bootloader zu installieren. Das klappte auch -dank Eriks Beschreibung- alles wunderbar.
Nach ca. 8 Sekunden kam die Meldung „Bootloader wurde installiert“
Alles super ! hab ich gedacht,
Danach habe ich meinen Arduino Nano 328 direkt über USB an den PC angeschlossen um einen Sketsch zu übertragen.
Aber daraufhin kam wieder die bekannte und gefürchtete rote Fehlermeldung:
avrdude: stk500_getsync(): not in sync: resp=0x00
Ich habe daraufhin im Gerätemanager nachgeschaut:
Dort wird mein Arduino Nano nur als „USB Serial Port (Com5) angezeigt.
Kann mir jemand vielleicht einen Tipp geben, was hier nicht in Ordnung ist?
Der Arduino ist nagelneu. Ich hoffe nicht, das er defekt ist.
Liebe Grüße
Andre
|
|
22.05.2013 22:27 |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
Humfrey
Mitglied
Dabei seit: 03.01.2009
Beiträge: 3.016
 |
|
Wurde beim erstmaligen Anstecken des Arduino an den Computer ein neues Gerät erkannt, und wenn ja, hast Du anschließend den entsprechenden Windows-Treiber für Deinen Arduino Nano 328 installiert?
|
|
23.05.2013 00:40 |
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
Andre2
Mitglied
Dabei seit: 25.03.2013
Beiträge: 11
 |
|
Hallo Humfrey,
Danke für deine Antwort.
Beim Anstecken meines Arduino Nano 328 hat mein Computer einen USB-Serial-Port erkannt.
Ich konnte keinen speziellen Treiber für den Nano 328 finden.
Wenn ich die Treibersoftware aktualisiere, bekomm ich die Meldung, dass die Software auf dem neuesten Stand ist.
Offenbar gibt es trotzdem ein Problem mit meinem Treiber für den Arduino Nano unter Windows 7, 64 bit.
Im Gegensatz zum UNO hat der Nano ein USB-Interface basierend auf dem FTDI FT232RL.
Das hab ich hier: http://www.kriwanek.de/arduino/boards/19...no-nano-30.html gelesen.
Dort steht auch, dass auf dem Nano im Auslieferungszustand das „Blink“ Programm installiert ist.
Ja stimmt. Die LED an D13 blinkt. Dann dürfte mein Nano ok sein.
Ich habe festgestellt, dass in dem Programmordner der Arduino Software „drivers“ kein Treiber für den Nano enthalten ist. Ich habe die neueste Version 1.0.5.
Hier: http://torrentula.to.funpic.de/dokumentation/tag/treiber/#4
wird beschrieben, dass statt dessen ein serieller USB-Port installiert werden soll, der sich im Ordner “drivers/FTDI USB Drivers” befindet.
Das habe ich getan, und tatsächlich wird er auch wie beschrieben im Gerätemanager angezeigt. „USB Serial Port (Com5)“
Dennoch bekomm ich keinen Sketsch auf meinen Arduino Nano übertragen. Ich habe auch schon andere Boards in der Arduino Software eingestellt, aber es hat nix gebracht.
Es kommt am Ende immer wieder die rote Fehlermeldung:
avrdude: stk500_getsync(): not in sync: resp=0x00
Falls jemand einen wertvollen Tipp für mich hat, wäre ich sehr dankbar.
Liebe Grüße
Andre
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Andre2: 23.05.2013 12:03.
|
|
23.05.2013 12:00 |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
Humfrey
Mitglied
Dabei seit: 03.01.2009
Beiträge: 3.016
 |
|
Hm.
Könntest Du bitte in der Arduino-Oberfläche beim Menüpunkt Datei => Einstellungen die erweiterten Debugausgaben fürs übertragen aktivieren? (Ca. etwas oberhalb der Mitte des Einstellungsdialoges, dort sollten zwei Checkboxen für die Debugausgaben des Compilers und des Übertragens zu finden sein)
Dann sollte im unteren Bereich etwas mehr als nur der Fehler erscheinen, diverses Geblubber der Handshake-Versuche von Programmier-Software und serieller Datenübertragung usw.
Und nimm bitte ein ganz simples Beispiel, ich glaube (aus dem Kopf) 0.1 Basic => BareMetal sollte nur ca. 400 Byte groß werden, Blink ca. 1200 Byte.
Das erste Beispiel sollte leere setup- und loop-Funktionen enthalten, Blink entspricht dem Auslieferungszustand und lässt die LED13 im Sekundentakt blinken.
Ich hatte auf einem Computer das Problem, das ich nur wenige Sekunden nach dem Anstecken des Arduino diese kleinen Beispiele übertragen konnte, bei längeren Programmen (>1500 Byte) oder längerer Zeit "Strom am Arduino" kam dann immer der gleiche Fehler wie bei Dir.
|
|
23.05.2013 15:25 |
E-Mail |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
Andre2
Mitglied
Dabei seit: 25.03.2013
Beiträge: 11
 |
|
Hallo Humfrey,
ich habe die beiden Haken in den Checkboxen gesetzt.
Beim Upload des Sketch "BareMinimum" erscheinen nun unten in dem Programmfenster jede Menge weiße aber auch rote Einträge.
ich füge hier nur die roten Einträge zur Einsicht ein:
Ich habe auch den „USB Serial Port (Com5)“ auf fast allen verfügbaren Baudraten eingestellt. Leider ohne Erfolg...
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp: In function 'void store_char(unsigned char, ring_buffer*)':
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp:98: warning: comparison between signed and unsigned integer expressions
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp: In function 'void __vector_18()':
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp:127: warning: unused variable 'c'
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp: In member function 'void HardwareSerial::begin(long unsigned int, byte)':
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp:368: warning: unused variable 'current_config'
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp: In member function 'virtual size_t HardwareSerial::write(uint8_t)':
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp:467: warning: comparison between signed and unsigned integer expressions
.
.
.
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\Print.cpp: In member function 'size_t Print::print(const __FlashStringHelper*)':
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\Print.cpp:44: warning: '__progmem__' attribute ignored
.
.
.
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\Tone.cpp:119: warning: only initialized variables can be placed into program memory area
.
.
.
avrdude: Version 5.11, compiled on Sep 2 2011 at 19:38:36
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "C:\Program Files (x86)\Arduino\hardware/tools/avr/etc/avrdude.conf"
Using Port : \\.\COM5
Using Programmer : arduino
Overriding Baud Rate : 57600
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Recv:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude done. Thank you.
|
|
23.05.2013 17:19 |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
Andre2
Mitglied
Dabei seit: 25.03.2013
Beiträge: 11
 |
|
Hallo Humfrey,
ich habe mal zum Test die Arduino Software auf einem anderen Rechner mit Win XP installiert, und dann meinen Arduino Nano angeschlossen...Dort funktionierte es auf Anhieb ohne jegliche Probleme
Im Gerätemanager wird der Nano allerdings auch nur als "USB Serial Port (Com3)" angezeigt. Aber das ist mir egal, hauptsache es funktioniert.
Warum funktioniert es mit dem Nano unter Win7 nicht?
Ich habe noch einen Uno. Bei dem funktioniert es jedoch super unter Win7.
Es scheint ein Win7-Treiberproblem mit dem USB Serial Port zu sein.
Gruß
Andre
|
|
23.05.2013 18:31 |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
Andre2
Mitglied
Dabei seit: 25.03.2013
Beiträge: 11
 |
|
Hallo Humfrey,
ich habe mal nachgeschaut. Ich habe die Dateiversion 2.08.28.11 vom 18.01.2013.
Ich glaube dass ist wohl der aktuellste FTDI-Treiber, oder?
Ich habe im Netz noch eine Seite gefunden, die das gleiche Problem beschreibt:
http://www.darc.de/uploads/media/TreiberNeuinstallation.pdf
Das muss ich mir aber nochmal gründlich durchlesen.
Nun bin ich von Erik's Thema "Wie brenne ich einen Arduino-Bootloader" völlig weg gekommen, weil ich zunächst angenommen hatte, dass kein Bootloader auf meinem Nano vorhanden wäre. Aber ich hab mich wohl geirrt.
Vielleicht sollte man zu diesem Problem einen neuen Beitrag schreiben?
Gruß
Andre
|
|
23.05.2013 20:30 |
Beiträge des Benutzers |
zu Buddylist hinzufügen
|
|
|
Impressum - Datenschutzerklärung
|
|  |