mikrocontroller.net

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


Autor: Bernd Schuster (mms)
Datum:

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

Autor: Markus E. (engelmarkus)
Datum:

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

Autor: Bernd Schuster (mms)
Datum:

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

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

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

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.