Forum: Mikrocontroller und Digitale Elektronik SMT32: gültiges Programm erkennen


von Bernd S. (mms)


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

von Markus E. (engelmarkus)


Lesenswert?

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? :)

von Bernd S. (mms)


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.

von Marcus H. (mharnisch) Benutzerseite


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.