www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bootloader für Freescale S12X


Autor: peterguy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich habe hier für mein aktuelles Projekt einen Freescale S12XEP100 im 
Einsatz. Für diesen möchte ich jetzt einen Bootloader programmieren.

Hat das schon mal jemenad für diesen (oder einen anderen S12X) µCs 
gemacht?

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian Gärtner (christiang)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: peterguy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Christian Gärtner (christiang)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.