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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.