The Dude
24.07.2014, 02:33
Hallo Forum,
Ich bin derzeit dabei einen Bootloader für einen AtMega2560 zu
schreiben,
das Programm entspricht dem in dem Mikrocontroller-Artikel
http://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung
Zusätzlich dazu frage ich lediglich den EEPROM auf eine Flag ab und
resette am Ende eines erfolgreichen Flash-Vorgang mithilfe des
Watchdogs.
Allerdings würde ich hier nicht posten, wäre kein Problem aufgetreten
und da der Fehler sehr seltsam ist, bin ich auch relativ ratlos:
Der Flashvorgang wird erfolgreich ausgeführt (Der Parser des Bootloaders
meldet keine Fehler beim Empfang der HEX über UART), ABER: Die ersten
Zeichen des Flash werden nicht beschrieben, sie lauten alle 0xFF, das
heißt, der Botloader löscht diese Zeichen, aber beschreibt sie nicht
wieder.
Dazu kommt, es ist immer das selbe Muster (das ich nachreichen werde,
sobald ich nochmal Zeit dazu habe den Fehler zu reproduzieren) und ich
habe keine Hinweise darauf gefunden, was der Fehler sein könnte, ich
vermute mal es ist irgendwas dämliches, aber Fakt ist ich komme nicht
drauf.
Ich habe nichts im Internet gefunden, was mein Problem umschreibt. Es
wurde nur irgendwo darauf hingewiesen, man solle doch die Brownout Fuse
setzen, was das Problem ebenfalls nicht behoben hat.
Ich habe auch mit der Optimierung rumgespielt, ebenfalls ohne Erfolg...
Wie hoch stehen die Chancen, das das Problem nicht 50cm vorm Monitor
sondern im AVR-GCC Compiler liegt?
Das einzige was ich mir vorstellen kann (da ich die Funktion zum
beschreiben des Flash nicht verändert habe) das ich irgendwo nen
Overflow produziert habe, aber da bis auf die ersten Zeilen der Rest
korrekt beschrieben wird, halte ich das für unwahrscheinlich.
Wie wahrscheinlich ist es, das das auslesen des EEPROM am Anfang des
Bootloaders und das beschreiben des EEPROMs am Ende des Bootloaders
Einfluss auf den Flash hat?
Würde mich sehr freuen, wenn mir jemand helfen könnte
Ich bin derzeit dabei einen Bootloader für einen AtMega2560 zu
schreiben,
das Programm entspricht dem in dem Mikrocontroller-Artikel
http://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung
Zusätzlich dazu frage ich lediglich den EEPROM auf eine Flag ab und
resette am Ende eines erfolgreichen Flash-Vorgang mithilfe des
Watchdogs.
Allerdings würde ich hier nicht posten, wäre kein Problem aufgetreten
und da der Fehler sehr seltsam ist, bin ich auch relativ ratlos:
Der Flashvorgang wird erfolgreich ausgeführt (Der Parser des Bootloaders
meldet keine Fehler beim Empfang der HEX über UART), ABER: Die ersten
Zeichen des Flash werden nicht beschrieben, sie lauten alle 0xFF, das
heißt, der Botloader löscht diese Zeichen, aber beschreibt sie nicht
wieder.
Dazu kommt, es ist immer das selbe Muster (das ich nachreichen werde,
sobald ich nochmal Zeit dazu habe den Fehler zu reproduzieren) und ich
habe keine Hinweise darauf gefunden, was der Fehler sein könnte, ich
vermute mal es ist irgendwas dämliches, aber Fakt ist ich komme nicht
drauf.
Ich habe nichts im Internet gefunden, was mein Problem umschreibt. Es
wurde nur irgendwo darauf hingewiesen, man solle doch die Brownout Fuse
setzen, was das Problem ebenfalls nicht behoben hat.
Ich habe auch mit der Optimierung rumgespielt, ebenfalls ohne Erfolg...
Wie hoch stehen die Chancen, das das Problem nicht 50cm vorm Monitor
sondern im AVR-GCC Compiler liegt?
Das einzige was ich mir vorstellen kann (da ich die Funktion zum
beschreiben des Flash nicht verändert habe) das ich irgendwo nen
Overflow produziert habe, aber da bis auf die ersten Zeilen der Rest
korrekt beschrieben wird, halte ich das für unwahrscheinlich.
Wie wahrscheinlich ist es, das das auslesen des EEPROM am Anfang des
Bootloaders und das beschreiben des EEPROMs am Ende des Bootloaders
Einfluss auf den Flash hat?
Würde mich sehr freuen, wenn mir jemand helfen könnte