SMT32: gültiges Programm erkennen

OP #1807300
Lesenswert?
• ▲
▼
Hallo,

gibt es beim Cortex-M3 STM32F103 Prozessor auch eine Startfolge, anhand 
der man erkennt ob es sich um ein valides Programm handelt? Weiß jmd wie 
diese aussehen muss?

Möchte vor dem Start des Programms (aus einem Bootloader heraus) 
nachschauen, ob es sich um einen gültiges Programm handeln kann.

Beim ARM gibt es z.B. die Startvektoren, die u.a. auch die Größe des 
Images / Programms angeben...

Gruß
Bernd
OP #1807337
Lesenswert?
• ▲
▼
Markus E. schrieb:
> Du programmierst doch den Bootloader auch selber. Was hindert dich
>
> daran, einfach selber vorne einen Header dranzuhängen, den zu prüfen,
>
> und dann den Rest zu starten? :)

das erste Programm springt ja zur Startadresse vom zweiten Programm, 
welches als separates Programm im Flash gespeichert wird durch die 
Entwicklungsumgebung;

der Anfang dieses Programms ist bei den ARMs immer gleich (bei den 
Cortex-M3 bin ich mir nicht sicher... die beiden Flashbereiche sehen 
unterschiedlich aus); einen Header kann ich nicht vor diesen Code 
setzen.
Persönliche Seite #1807423
Lesenswert?
• ▲
▼
Bernd Schuster schrieb:
> Markus E. schrieb:
>> Du programmierst doch den Bootloader auch selber. Was hindert dich
>> daran, einfach selber vorne einen Header dranzuhängen, den zu prüfen,
>> und dann den Rest zu starten? :)
>
> das erste Programm springt ja zur Startadresse vom zweiten Programm,
> welches als separates Programm im Flash gespeichert wird durch die
> Entwicklungsumgebung;

Du definierst eben irgendeine magic number, die an einer festen Adresse 
in Deinem Image liegt. Die wird dann vom Bootloader abgefragt.

> der Anfang dieses Programms ist bei den ARMs immer gleich

Das wäre mir neu. Wenn man immer den mitgelieferten Reset Handler 
seiner Lieblings-IDE für einen MCU Hersteller verwendet, dann ist kann 
das schon sein. Ansonsten gibt es da unzählige Varianten, genau wie beim 
Cortex-M3. Letzterer verwendet allerdings eine andere Vektortabelle, so 
dass selbst innerhalb der o.g. Randbedingungen eine gewisse Vielfalt 
auftritt.

> (bei den Cortex-M3 bin ich mir nicht sicher... die beiden Flashbereiche
> sehen unterschiedlich aus); einen Header kann ich nicht vor diesen Code
> setzen.

1. Klar kannst Du. Siehe Anleitung des Linkers, bzw diverse 
Compilererweiterungen
2. Muss ja nicht vor dem Code liegen, solange die Adresse (oder 
offset) bekannt ist.

Gruß
Marcus

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.