Bootloader-Problem

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Bootloader-Problem

      Liebes Forum,

      ich habe den MCS-Bootloader (aus den Samples) auf vielen Arduino Uno im Einsatz (ATMEGA 328). Das klappe seit langer Zeit sehr gut und es gab nie Probleme damit.

      Nun ist mir folgendes passiert: Ich habe ein Programm versehentlich für einen Mega 2560 compiliert und dann versucht, per Bootloader auf den Uno zu bringen. Der Load-Vorgang brach nach einiger Zeit mit einem Fehler (ERROR: -6008) ab und seit dem ist der Uno nicht mehr erreichbar. Auch ein Hardwarereset startet den Bootloader nicht mehr. Per ISP kann ich es im Moment leider nicht testen.
      Weil ich es nicht glauben konnte, habe ich den Vorgang mit dem selben Ergebnis auf einem zweiten Uno reproduziert.
      Nun die Frage: Was kann da passiert sein, dass ich mir beim Laden eines Programmes per Bootloader den Bootloader zerschiesse???


      Viele Grüße und danke für alle Anregungen!

      Andy
    • Ich schaffe es, dass ich nur mit Mühe wieder auf den Arduino zuzugreifen kann, wenn ich im Programm die serielle ständig anspreche, also wenn ständig ein print-Befehl ausgegeben wird, der dann auch gleich nach einem reset erfolgt. Mal geduldig probieren mit der reset-Taste und dem load-Versuch. Irgendwann erwischt du vielleicht einen guten Zeitpunkt.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Ja das Problem kenne ich auch.
      Wenn das Programm ständig seriell Ausgaben macht, kommt man kaum zum Zug, das neue Programm rein zu bekommen.

      Ich habe mir daher angewöhnt vor dem Programm einen Wait 1 einzufügen.
      Das Versögert zwar erst mal den Programmstart, dafür funktioniert das Flashen super ohne Störung.

      Ist das Programm fertig für den Release, kann man überlegen, ob man den Wait drin lässt oder nicht.
      Aber bis dahin stört der i.d.R. auch nicht.
      Kaum macht man es richtig - und schon geht's!
    • Wobei jetzt bei einem unpassenden Programm (falscher Kontroller) die Register für die serielle vermurkst werden und so alles hemmt. Das der bootloader kaputt ist, glaub' ich erstmal nicht.

      Nachtrag: vielleicht hilft es, den Kondensator zwischen reset vom mega328 und dem USB-Kontroller temporär zu brücken (mit einer Pinzette), damit der reset-Puls nicht nur eine Ladeflanke vom Kondensator ist. Wenn die Brücke drin ist, dann sollte man den reset-Taster nicht mehr exzessiv drücken, weil ja dabei ein pin vom USB-Kontroller auf gnd gezogen wird.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------

      The post was edited 3 times, last by tschoeatsch ().

    • Hallo!

      Danke für alle Hilfsversuche und Beiträge!

      Also, der Reset-Taster ist direkt am Pin des AVR. Auch wenn ich den betätige, meldet sich kein Bootloader mehr - egal, wie lange ich drücke. Es blinkt auch nichts mehr auf dem Board. Wie wenn alles stehen würde....

      Kann es sein, dass irgendwie entweder der Bootloader selbst oder die Fuses zerhauen wurden? Wenn ja, wie konnte so was passieren????

      Viele Grüße

      Andy
    • Damit der bootloader aktiv wird, muß der mega328 resettet werden. Das geschieht normalerweise durch den USB-Dingens auf dem Arduino-board. Bei meinem Uno ist das ein atmega16U2. Letzterer bekommt eben durch das flashen über USB den Auftrag: 'resette den mega328, damit der mitbekommt, jetzt kommt neue software'.
      Dazu ist ein pin vom mega16 über einen 100nF an den reset vom mega328 angeschlossen. Dieser C (C5) entkoppelt den pin vom mega16 auch vom reset-Taster, dass es nicht zu einem Kurzschluß führen kann.
      Und ich könnte mir eben vorstellen, dass es durch den C zu Verzögerungen kommt, und der bootloader zu schnell 'auf gibt'. Es ist ja ein Zusammenspiel von reset und senden der Daten zum bootloader wichtig.
      Arduino_Uno_Rev3-schematic.pdf
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Mechanic wrote:

      Kann es sein, dass irgendwie entweder der Bootloader selbst oder die Fuses zerhauen wurden? Wenn ja, wie konnte so was passieren????
      Der 328P reagiert recht empfindlich bei Spannungseinbruch bzw. Unterspannung beim Programmieren. Da zerhaut es schon mal die Fuses.

      Das Problem gibt es oft bei den 3pi-Roboterchen:
      Losing power during programming could permanently disable your 3pi
      www.cs.tut.fi/kurssit/OHJ-4301/harjoitustyo/pololu/3pi.pdf

      Abblockkondensatoren sind vorhanden?
    • Mechanic wrote:

      per Bootloader auf den Uno zu bringen.

      Michael wrote:

      Abblockkondensatoren sind vorhanden?
      da denke ich schon, es wird ein Arduino Uno sein.
      Und per bootloader wird ja nix an den fuses gestellt.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Hallo!

      Danke für die neuen Antworten!

      Also, es ist ein China-Clone mit dem 328p. Von denen habe ich bestimmt 20 Stück im Einsatz und schon hunderte male über den Bootloader programmiert. Auch die besagten und betroffenen Boards waren schon mehrfach im Einsatz. Immer ohne Probleme - weder mit den Boards noch mit dem Bootloader.
      Die Frage wäre: Was macht denn der Bootloader, wenn mehr Daten kommen, als im Speicher Platz ist? Kommt er dann in seinen eigenen Speicherbereich und macht sich quasi selbst kaputt oder ändert er dann dummerweise die Fuses? Weiss da jemand was dazu?

      Am Wochenende kann ich per ISP als erstes (versuchen), die Fuses auszulesen, vielleicht gibt das einen Hinweis.

      Viele Grüße und Danke!

      Andy
    • Mechanic wrote:

      Also, es ist ein China-Clone mit dem 328p. Von denen habe ich bestimmt 20 Stück im Einsatz und schon hunderte male über den Bootloader programmiert. Auch die besagten und betroffenen Boards waren schon mehrfach im Einsatz. Immer ohne Probleme - weder mit den Boards noch mit dem Bootloader.
      Das muss nichts heißen, auch ich habe schon zig China-Clones verbaut.
      Einer ließ sich erst programmieren, als ich ihm einen Kondensator an Vcc spendiert hatte.