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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren