Forum: Mikrocontroller und Digitale Elektronik Power Up im Bootloader erkennen


von Johann (Gast)


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?

von dunno.. (Gast)


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.

von Johannes O. (jojo_2)


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

von Tester (Gast)


Lesenswert?

Hat der Xmega sowas wie das "MCUSR"?  Bei den Atmegas gibt es da drin 
Flags für die Reset Quelle.

von dunno.. (Gast)


Lesenswert?

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.. ;)

von Johann (Gast)


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.

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
Noch kein Account? Hier anmelden.