AVR Bootloader, Flash beschreiben, dann Booten.

#1404429
Lesenswert?

Hallo,

mal eine kleine Frage zum Thema Bootloader. Ich habe ein 
Mikrocontrollerprojekt bei dem die Daten nicht über eine standart 
Schnittstelle, sondern über ein eigenes Protokoll per Interrupt 
empfangen werden.
Aus diesem Grund kann ich den Datenempfang nicht ohne weiteres in den 
Bootloader packen.

Ich würde gerne folgendes realisieren und brauche Ratschläge:

Ich empfange wärend der regulären Programmlaufzeit die "neuen" Daten für 
den Bootloader. Dieses Speichere ich im Flash ab. (z.b. Nutze ich nur 
halbe Flashgröße für mein Programm, somit kann ich die andere Hälfte für 
die empfangenen Bootloaderdaten verwenden).

Wenn alle neuen Daten da sind, löse ich den Bootloader per Software aus.
Dieser kopiert dann die "neuen" Daten auf die niedrigen Speicherbereiche 
und löscht den oberen Flash wieder.

Kann man das so machen? Was haltet Ihr davon???

Schönen gruß und interessantes mitgrübeln.

Skittler.
#1404453
Lesenswert?

Ist dein Spezialprotokoll so kompliziert, dass es nicht im Bootloader 
implementiert werden kann?
a) Bei den (meisten? - weiß ich nicht aus dem Kopf heraus) AVRs kann man 
die Interruptvektoren auf die Bootloaderadresse umschalten
b) Da der Bootloader ja sonst nichts zu tun hat, kann man praktisch alle 
Datenübertragungen (z.B. Soft-uart, I²C, soft-spi, 1Wire) auch mit 
Warteschleifen machen (insbesondere, weil das Flash-schreiben auch seine 
Zeit dauert)

hth. Jörg
Gast #1404758
Lesenswert?

Dass der Bootloader sich selbst überschreiben kann oder es einen Zustand 
gibt, aus dem man ohne SPI-Flashen nicht mehr rauskommt, ist IMO recht 
gefährlich. Solange man man nicht immer selbst das Flashen durchführt, 
kann ein externer Idi^H^H^Hunbedarfter Kunde so ein Konzept schnell 
ruinieren und zu ungeahntem Serviceaufwand führen.

Überleg dir lieber etwas länger einen "foolproof"-Bootloader, der 
vollständig in die sichere Bootloader-Section passt und der mit den 
passenden Fuses nie kaputtgehen kann.

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