Power Up im Bootloader erkennen

Gast #4413465
Lesenswert?

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?
Gast #4413471
Lesenswert?

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.
#4413474
Lesenswert?

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
Gast #4413649
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren