Hallo, gibt es eine Möglichkeit bzw. welche eine neue Firmware aus der laufenden Applikation zu flashen? Atmega128 in C Bisher wird ein Menupunkt "neue Firmware" angewählt und von dort kann ein Reset ausgelöst werden, dann wird der Bootloader angesprungen und geflasht. Das ist soweit so gut, jedoch wird bei meiner Hardware der Strom beim Reset unterbrochen und somit komme ich nicht mehr an den Bootloader. Kann man den Bootloader aus der laufenden Applikation ohne einen Reset auszulösen anspringen?
Michael wrote: > Bisher wird ein Menupunkt "neue Firmware" angewählt und von dort kann > ein Reset ausgelöst werden, dann wird der Bootloader angesprungen und > geflasht. > > Das ist soweit so gut, jedoch wird bei meiner Hardware der Strom beim > Reset unterbrochen und somit komme ich nicht mehr an den Bootloader. Was denn nun? Wird der Botloader nun nach dem Reset angesprungen oder nicht? Zur Laufzeit kann man die Bootreihenfolge nicht mehr ändern, die wird fest mit den Fusebits programmiert. Peter
die Hardware hat sich geändert, deshalb geht das wie oben beschrieben nicht mehr. Also auslösen des Resets unterbricht die Stromzufuhr.
Michael wrote: > die Hardware hat sich geändert, deshalb geht das wie oben beschrieben > nicht mehr. Warum nicht? Der Resetvektor wird auf den Bootloader gesetzt und die Applikation macht nen Watchdogreset zum Flashen. Peter
das Problem ist, dass wenn der Reset ausgelöst wird alle Pins zurückgesetzt werden und somit die Stromversorgung unterbrochen wird.
Du kannst doch auch aus Deiner Applikation direkt zum Bootloader springen: #define COLDBOOT APP_END /* ColdBoot-Einsprung-Adresse */ #define STR(x) STRINGIFY(x) /* String-Concatenation-Makros */ #define STRINGIFY(x) #x asm volatile ("jmp " STR(COLDBOOT)::);
Michael wrote: > das Problem ist, dass wenn der Reset ausgelöst wird alle Pins > zurückgesetzt werden und somit die Stromversorgung unterbrochen wird. Heißt das die CPU dreht sich selber den Saft ab? Und wer dreht dann den Saft wieder an? Wer denkt sich denn sowas verrücktes aus. Die wenigsten Hardwaredesignfehler lassen sich in Software korrigieren. Peter
die Anwendung läuft mit einem Akku. Es gibt keinen Schalter nur einen Taster zum einschalten. Ausgeschaltet soll die Anwendung keinen Strom verbrauchen. Wird der Taster gedrückt schaltet sich das Gerät ein. Das funktioniert so tadellos. >Günter >Bootloader direkt anspringen werde ich testen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.