AVR Bootloader, Flash beschreiben, dann Booten.

OP #1404429
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
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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.