Hallo AVR Freaks :-) ich habe einen Bootloader geschrieben der schon sehr gut funktioniert. Damit der XMEGA immer aus dem Bootloader startet habe ich das entsprechende Fuse Bit gesetzt. Im Bootloader prüfe ich nun mit Hilfe der Atmel CRC32 Funktion ob der Application Flash OK ist. Falls dieser dann ok ist springe ich in die Application. Jetzt zu meinem Problem: Wenn ich in der Application bin kann ich per RS232 Befehl in den Bootloader springen. Nur leider ist es so das er dann wieder in der Bootloader Main Routine die CRC Application Checksumme berechnet und dann wieder zurück in die application springt. :-) Somit habe ich mir ein Eigentor geschossen. Jetzt habe ich gedacht das ich im Bootloader vielleicht den Power Up erkennen kann und somit in der Main Routine der CRC Verglleich nur einmalig beim Einschalten der Betriebsspannung durchgeführt wird. Gibt es da eine Möglichkeit?
Ich habe das mal so gelöst dass ich im Ram einen reservierten Bereich geschaffen habe den (bootloader-boot-fingerprint) der von der Applikation zum Start des Bootloaders auf einen bestimmten wert gesetzt wird. erkennt der bootloader beim startup diesen wert, startet er nicht die applikation, sondern löscht nur diesen wert und bleibt aktiv.
Ich verwende folgende Methode: Nach dem Start wartet der Bootloader X Sekunden, bevor die Applikation gestartet wird. Das klappt immer, egal weshalb der Reset kam. (Das Starten ist nicht zeitkritisch, neugestartet wird bei mir nur alle paar Monate mal. Außerdem kann ich per Befehl auch ein sofortiges Starten auslösen) Falls du an deiner Lösung festhalten willst, gibts auch noch ein Statusregister, was dir den Resetgrund angibt: Schau mal ins Datenblatt unter "Reset System" Da gibts ein Statusregister mit der RESET-QUELLE! SRF wäre dein Software Reset PORF wäre dein erstes Einschalten
Hat der Xmega sowas wie das "MCUSR"? Bei den Atmegas gibt es da drin Flags für die Reset Quelle.
Johannes O. schrieb: > Schau mal ins Datenblatt unter "Reset System" > Da gibts ein Statusregister mit der RESET-QUELLE! > SRF wäre dein Software Reset > PORF wäre dein erstes Einschalten Aber dann keinen Software - Watchdog verwenden.. ;)
Hallo Leute ich dachte da auch an den Power Up Reset (im Reset Register) Das sollte ja nur einmalig gesetzt werden. Das liest dann der Bootloader aus. Falls es gesetzt ist löscht der Bootloader das Flag. Ich muss dann noch mal das Datenblatt bezüglich des Reset Flags lesen.
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.