Bootloader für Freescale S12X

#1257266
Lesenswert?
• ▲
▼
Wenn ich mich recht erinnere, gibt es auf der Freescale-Website eine 
AppNote zu dem Thema. Dort wird dann auch ein Bootloader vorgestellt; 
der Code ist Downloadbar (als Zip) und enthält einen vollständigen 
Downloader + Debugger für die serielle Schnittstelle.
Ich weiss den genauen Namen der AppNote nicht mehr, aber du wirst die 
sicher finden.

Grüsse
#1257325
Lesenswert?
• ▲
▼
Ist relativ einfach.

Bootloadercode ans Ende des Flash legen und evtl. schützen. Beim Start 
eine Abfrage (z.B. Checksumme über Applikationsfirmware oder Magic 
Bytes) machen ob die Applikation gestartet werden darf.

Die FLASH Schreib- und Löschroutinen wie im Datenblatt angegeben 
nachbauen, ist kein Hexenwerk.

Ansonsten noch al kleiner Tipp, du kannst die Interruptvektortabelle 
nach jedem Reset einmalig verschieben. D.h. du startest mit der Default 
Tabelle (ganz am Ende der Flashs) entscheidest, dass die Aoolikation 
gestartet werden soll, stellst die Tabelle um und springst zum neuen 
Resetvektor, der diesmal der Applikation gehört.
Gast #1257522
Lesenswert?
• ▲
▼
Danke für die Antworten!
> Wenn ich mich recht erinnere, gibt es auf der Freescale-Website eine
> AppNote zu dem Thema.
Werde ich gleich mal nachsehen, ob da auch was für den S12X dabei ist.

> Ist relativ einfach
Naja, das liegt im Auge des Betrachters ;-) Habe mir schon einen 
abgebrochen, das S12X FTM (Flash Module) für eine EEPROM Emulation ans 
laufen zu bringen...

Ich stelle mir die Funktionsweise meines Bootloaders so vor:
- beim Starten (vor Aufruf der main) ein Flag im EEEPROM abfragen, ob 
Applikation oder Bootloader ausgeführt werden sollen.
- Im Normalfall wird Applikation gestartet. Diese kommuniziert über 
Parallel <-> USB Wandler mit PC.
- PC sendet irgendwann Kommando über USB, daß der µC im Bootloader modus 
starten soll. µC setzt Flag im EEEPROM und führt Reset aus.
- µC startet nach dem Rest den Bootlader (Code am Ende des Flashs).
- Bootloader empfängt über die parallel <-> USB Schnittstelle den 
HEX-Code und programmiert diesen in den Flash. Wenn fertig: Flag im 
EEEPROM löschen und Reset durchführen.

Kann das so funktionieren oder habe ich etwas übersehen?

Noch eine Frage:
Ich vermute, den Code des Bootloaders an sich kann ich während des 
Bootloader modus nicht überschreiben? Wäre es eventuell möglich, im 
Applikationsmodus den Bootloadercode neu zu flashen und im Bootloader 
Modus den Applikationscode?
#1258981
Lesenswert?
• ▲
▼
Hallo,

deine geplante Vorgehensweise hört sich nicht schlecht an, wenn du es 
genau so umsetzt klappt es auf jedenfall.

Zu deiner Frage: Beim S12X kann der Bootloader sich nicht selbst 
updaten, dazu ist eine "swappable bootarea" notwendig. Der NEC V850 zum 
Beispiel hat sowas.
Ansonsten halte ich es nicht für eine gute Idee, den Bootloader durch 
die Applikation zu updaten, wenn hier was schiefgeht dann wars das.
Ich würde stattdessen ein klein wenig mehr Zeit in das Design des 
Bootloaders stecken und evtl. Erweiterungen, z.B. Addressieren 
verschiedener Blocks, Schreiben des EEPROMs oder ähnliches definieren 
und implementieren. So hast du einen großen Funktionsumfang und brauchst 
nicht zwischendurch ein Bootloaderupdate in betracht zu ziehen.

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.