Forum: Mikrocontroller und Digitale Elektronik Arduino Bootloader Problem


von Flo K. (gasfisher)


Lesenswert?

Hallo zusammen,

ich habe ein kleines Problem mit einem Arduino Pro-Mini (eigentlich 
sogar an 3. Habe 3 Stück und alle zeigen das selbe Verhalten).

Ich habe einen Sketch aufgespielt und dieser läuft auch einwandfrei. 
Jedoch kann ich jetzt keinen neuen Sketch aufspielen. Es erscheint eine 
Fehlermeldung "avrdude stk500 getsync .. not in sync"

Nach etwas Recherche habe ich über einen Uno den bootloader neu 
gebrannt. Danach konnte ich dann auch wieder einen Sketch aufspielen. 
Jedoch nur genau einmal!

Dann kommt wieder die selbe Fehlermeldung.
Im Grunde muss ich jetzt vor jedem Upload den bootloader flashen,...

Das ist super nervig und ich würde das gerne beheben.
Hat vielleicht jemand eine Idee, woran das liegen könnte?

Bin für alle Tipps dankbar!

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Meine Kristallkugel sagt:
Du hast DTR nicht verbunden.

: Bearbeitet durch User
von Flo K. (gasfisher)


Lesenswert?

Mhm, also der DTR pin sieht erstmal korrekt gelötet aus. Wäre auch 
ziemlich komisch, da es ja bei drei(!) Arduinos das gleiche Problem ist. 
Da würde ich eine kalte Lötstelle jetzt mal ausschließen.

Benutzen tue ich ein USB CP2102 Break out Adapter, an einem Windows 10 
Rechner.
Habe auch schon einen zweiten Adapter und ein anderes USB-Kabel 
probiert. Sogar einen anderen Rechner...

: Bearbeitet durch User
von Sebastian W. (wangnick)


Lesenswert?

Flo K. schrieb:
> Nach etwas Recherche habe ich über einen Uno den bootloader neu
> gebrannt.

Sind dabei auch die Fuses gesetzt worden? Es könnte sein, dass du 
zunächst das Problem eines "alten" Bootloaders (und in der IDE nicht 
"Pro Mini 328P (old bootloader)" gewählt) hattest. Und vielleicht passen 
nun die Fuses nicht zu dem Bootloader, den du neu geflasht hast?

LG, Sebastian

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Ich habe nicht von einer Lötstelle gesprochen!

Sebastian W. schrieb:
> Sind dabei auch die Fuses gesetzt worden?
Natürlich!
Das macht Arduino so.

: Bearbeitet durch User
von Flo K. (gasfisher)


Lesenswert?

Arduino F. schrieb:
> Ich habe nicht von einer Lötstelle gesprochen!
mh? Ok, kannst du mir auf die Sprünge helfen? Was genau meinst du? Wie 
kann ich das prüfen?

Sebastian W. schrieb:
> Es könnte sein, dass du
> zunächst das Problem eines "alten" Bootloaders (und in der IDE nicht
> "Pro Mini 328P (old bootloader)" gewählt
Kann man das irgendwo wählen? Ich hab gerade nochmal alles durchgeschaut 
und nichts dergleichen gefunden in den Dropdowns der IDE.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Flo K. schrieb:
> Kann man das irgendwo wählen? I
Nicht beim Pro Mini.
Nur beim Nano.

Flo K. schrieb:
> Was genau meinst du?
Ich sehe nichts von dem was du da tust.
Nur Prosa.

So sehe ich auch nicht die Signale.
Noch nicht mal das Bootloader blinken.
Einfach nichts, was relevant wäre.

Ich höre nur meine Kristallkugel schreien.

: Bearbeitet durch User
von Jack V. (jackv)


Lesenswert?

Kann sich der Bootloader von Arduino selbst überschreiben, wenn im 
Hex-File der entsprechende Bereich enthalten ist? Das Ergebnis von sowas 
würde jedenfalls der Fehlerbeschreibung entsprechen …

von Sebastian W. (wangnick)


Angehängte Dateien:

Lesenswert?

Flo K. schrieb:
> Kann man das irgendwo wählen? Ich hab gerade nochmal alles durchgeschaut
> und nichts dergleichen gefunden in den Dropdowns der IDE.

Oh, sorry. Die Option gibt es nur beim Arduino Nano.

Flo K. schrieb:
> Was genau meinst du?

Er meint, ob du den DTR-Ausgang deines USB-Seriell-Konverters auch an 
deine Pro Minis angeschlossen hast. Ohne diesen Anschluß kann der PC die 
Pro Minis nicht resetten um den Bootloader zu starten; man muss dann, 
während avrdude das Gerät sucht, von Hand den Reset-Knopf drücken ...

LG, Sebastian

: Bearbeitet durch User
von Manfred P. (pruckelfred)


Lesenswert?

Sebastian W. schrieb:
>> Kann man das irgendwo wählen? Ich hab gerade nochmal alles durchgeschaut
>> und nichts dergleichen gefunden in den Dropdowns der IDE.
> Oh, sorry. Die Option gibt es nur beim Arduino Nano.

Wenn der ProMini einen ATMega328 hat, könnte man ihn auch als Nano 
behandeln. Ich habe schon selbst den Optiboot auf einen ProMini 
gebracht, ohne mir neue Probleme einzufangen.

> Er meint, ob du den DTR-Ausgang deines USB-Seriell-Konverters auch an
> deine Pro Minis angeschlossen hast. Ohne diesen Anschluß kann der PC die
> Pro Minis nicht resetten um den Bootloader zu starten;

Da er ein mal per USB flashen kann, dürfte DTR vorhanden sein.

> man muss dann,
> während avrdude das Gerät sucht, von Hand den Reset-Knopf drücken ...

Das kann man ganz simpel ausprobieren.

Die Beschreibung, er könne einmal flashen, lässt mir den Verdacht 
aufkommen, dass der Bootloader auf dem µC nicht zur IDE passt und etwas 
überschrieben oder der Zeiger verbogen wird.

Oder, er hat die kleine Version mit dem AT168?

von Daniel D. (danielduese)


Lesenswert?

Bei manchen Pro Mini muss man explizit den "alten" Bootloader 
aufspielen. Lässt sich separat auswählen, soweit ich das in Erinnerung 
habe.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Daniel D. schrieb:
> soweit ich das in Erinnerung habe.
Mal einen Reset machen.
Dann tuts die Erinnerung wieder.

: Bearbeitet durch User
von Sebastian W. (wangnick)


Lesenswert?

Manfred P. schrieb:
> Da er ein mal per USB flashen kann, dürfte DTR vorhanden sein.

Er kann nur einmal nach Aufspielen eines neuen Bootloaders eine 
Anwendung flashen. Solange nur der Bootloader im Flash ist braucht es 
den DTR-Reset noch nicht, weil der Bootloader sich immer nur wieder 
selbst neu startet. Insofern ist die Antwort auf die Frage nach der 
Verkabelung von DTR schon interessant.

LG, Sebastian

: Bearbeitet durch User
von Flo K. (gasfisher)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

also die "Verkabelung" sieht aus wie auf den Fotos zu sehen.
Hilft das?

Da ich es mit zwei USB-Kabeln und drei Arduinos probiert habe, schätze 
ich eher, dass es nicht an der Verkabelung liegt.

Vielen Dank euch, für eure Unterstützung!

von Rolf (rolf22)


Lesenswert?

Flo K. schrieb:
> Im Grunde muss ich jetzt vor jedem Upload den bootloader flashen,...

Als ich vor 6 Monaten oder so meinen ersten Arduino Pro Mini in Betrieb 
genommen habe, was das auch so.

Ursache war der fehlerhafte Bootlader der damals neuesten Arduino IDE. 
Der vertrug sich nicht mit der Watchdog-Funktion des µP, die ich in 
meiner Anwendung hatte: Sowie die Anwendung einmal unter diesem 
Bootlader gestartet worden war, war Schluss mit lustig und ich musste 
den Bootlader neu flashen.

Der optiboot_atmega328-2022-07-18.hex hat das Problem gelöst.

Beitrag #7532118 wurde vom Autor gelöscht.
von Flo K. (gasfisher)


Lesenswert?

Rolf schrieb:
> Flo K. schrieb:
>> Im Grunde muss ich jetzt vor jedem Upload den bootloader flashen,...
>
> Als ich vor 6 Monaten oder so meinen ersten Arduino Pro Mini in Betrieb
> genommen habe, was das auch so.
> Ursache war der fehlerhafte Bootlader der damals neuesten Arduino IDE.
> Der vertrug sich nicht mit der Watchdog-Funktion des µP, die ich in
> meiner Anwendung hatte: Sowie die Anwendung einmal unter diesem
> Bootlader gestartet worden war, war Schluss mit lustig und ich musste
> den Bootlader neu flashen.
> Der optiboot_atmega328-2022-07-18.hex hat das Problem gelöst.

Interessant!

Mhm…
Wie bekomme ich diesen optiboot auf meine arduinos?
Kann ich den fehlerhaften bootloader damit ersetzen?
Hab das noch nie gemacht…

von Georg M. (g_m)


Lesenswert?


von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Flo K. schrieb:
> Mhm…
> Wie bekomme ich diesen optiboot auf meine arduinos?
> Kann ich den fehlerhaften bootloader damit ersetzen?

5V 16MHz Pro Mini?
Dann zum UNO machen.
Der UNO hat das WDT Problem nicht.
Und ab dann immer als UNO  verwenden.

: Bearbeitet durch User
von Rolf (rolf22)


Lesenswert?

Flo K. schrieb:
> ie bekomme ich diesen optiboot auf meine arduinos?
> Kann ich den fehlerhaften bootloader damit ersetzen?
> Hab das noch nie gemacht…

Ja, du kannst ihn ersetzen, es gibt in der Community diverse Bootloader.

Du hast aber doch geschrieben, dass du schon mehrmals den Bootloader 
geflasht hast? Du musst nur irgendwo den Dateinamen eingeben oder die 
von der IDE vorgesehene Datei mit dem Optiboot überschreiben - dazu habe 
ich mir keine Details gemerkt, muss wohl ganz einfach gewesen sein.

Ich flashe nicht mit einem zweiten Arduino, sondern mit einem 
ISP-Programmer von Diamex. Seinerzeit habe ich mir dazu folgenden Text 
in die Knowhow-Datei geschrieben:

"In der Arduino IDE 2.1.0 als Programmer den Typ "Atmel STK500 
development board" wählen.
Mit dieser Konfiguration funktioniert der Diamex Prog-S2 beim 
Sparkfun-Board (Arduino Pro Mini), wenn er gemäß seiner Anleitung an den 
ISP-Pins (MOSI usw.) angeschlossen ist. Beim Hochladen von Programmen in 
der Arduino IDE die Option "Upload using programmer" wählen, nicht 
"Upload". Auch das Hochladen des von der IDE vorgesehenen Bootloaders 
funktioniert und ein danach hochgeladenes Programm läuft.

Clone-Boards haben u. U. eine CPU, die eine falsche Prozessor-ID liefert 
(Billig-Prozessor eingebaut?). Dann muss man in programmers.txt  bei dem 
Programmer die Option -F ergänzen, um die falsche ID zu ignorieren:
C:\Users\***dein 
Name***\AppData\Local\Arduino15\packages\arduino\hardware\avr\***1.8.6** 
*\programmers.txt
stk500.program.extra_params=-P{serial.port} -F
Die IDE meldet dann beim Hochladen in roter Schrift, welche ID 
eigentlich korrekt wäre, das Hochladen funktioniert aber dennoch."

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Rolf schrieb:
> Clone-Boards haben u. U. eine CPU, die eine falsche Prozessor-ID liefert
> (Billig-Prozessor eingebaut?). Dann muss man in programmers.txt  bei dem
> Programmer die Option -F ergänzen, um die falsche ID zu ignorieren:

Häää....
Es mag den ein oder anderen AVR geben, wo die Signatur Bytes kaputt 
sind, und man -F verwenden muss.
Das ist aber so selten, das ich es noch nie erleben durfte.

> Clone-Boards haben u. U. eine CPU, die eine falsche Prozessor-ID
Das habe ich auch noch nie erlebt.
Und auch noch nie davon gehört.
Kannst du einen Nachweis dafür liefern?
Nur ein einziges halbwegs authentisches Beispiel.

Rolf schrieb:
> es gibt in der Community diverse Bootloader.
Der Optibootloader wird auf dem UNO verwendet.
Da muss man nicht suchen, der ist bei der IDE dabei.

Wie gesagt: Einfach zum UNO machen, dann ist mit dem WDT alles im 
Grünen.

von Georg G. (df2au)


Lesenswert?

Bei einigen Herstellern ist die Brücke zwischen DTR und Reset nicht 
bestückt. Dann kann der Bootlader seine Aufgabe nicht erfüllen.

Das einfachste wäre doch, nach dem Aufspielen des Programms mit einem 
ISP Programmer das Flash und die Fuses auszulesen und zu kontrollieren.

von Rolf (rolf22)


Lesenswert?

Arduino F. schrieb:
> Es mag den ein oder anderen AVR geben, wo die Signatur Bytes kaputt
> sind, und man -F verwenden muss.
> Das ist aber so selten, das ich es noch nie erleben durfte.

Von "kaputt" habe ich nichts gesagt, ich habe "falsch" gesagt. Kaputt 
wäre z. B. 0x000000 oder 0xFFFFFF oder ein ähnliches Muster, das gar 
keine echte ID ist.

>> Clone-Boards haben u. U. eine CPU, die eine falsche Prozessor-ID
> Das habe ich auch noch nie erlebt.
> Und auch noch nie davon gehört.
> Kannst du einen Nachweis dafür liefern?
> Nur ein einziges halbwegs authentisches Beispiel.

Ich habe beim Chinamann einen Pro Mini mit 328P bestellt und auf dem 
Chip stand auch 328P. Die Signatur war aber die des 328.
Ok, angenommen, es war ein 328 drin (kann ich nicht mehr nachprüfen), 
dann war die Signatur richtig, aber die Beschriftung falsch - aber wo 
ist der Unterschied?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.