Forum: Compiler & IDEs AVR Bootloader, Flash beschreiben, dann Booten.


von Skittler B. (skittler)


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.

von Jörg G. (joergderxte)


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

von Skittler B. (skittler)


Lesenswert?

Aber den Bootloader selber kann man auch überschreiben, oder? Denn wenn 
sich was am Empfangsprotokoll ändert, könnte ich es ja sonst nicht 
korrigieren.

von Georg A. (Gast)


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.

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.