Assembler: Bootloader Rückmeldung über App-Start

OP (Firma: Père Lachaise) #5119809
Ich habe auf meinem Tiva (Cortex-M4) einen Bootloader laufen, welcher in 
Assembler geschrieben ist. Dafür habe ich ein vorhandenes, 
mitgeliefertes Beispiel von TI angepasst, was auch soweit tut wie es 
soll.

Meine Frage dazu: irgendwann kommt der Branch zum Einsprungpunkt des 
Hauptprogrammes:
1
    movw    r0, #(APP_START_ADDRESS & 0xffff)
2
    ldr     sp, [r0]
3

4
    ldr     r0, [r0, #4]
5
    bx      r0

Gibt es eine Möglichkeit hier eine Rückmeldung zu bekommen ob die 
Applikation erfolgreich gestartet wurde?
OP (Firma: Père Lachaise) #5119813
dunno.. schrieb:
> nur, wenn die applikation sich nach der initialisierung meldet?
>
> der bootloader läuft ja dann nicht mehr...

Genau das ist mein Anliegen: wenn die Applikation fehlerhaft / der 
Einsprungpunkt nicht an dieser Speicheraddresse ist / keine Applikation 
vorhanden ist, wie bekomme ich das mit?
Gast #5119847
Watchdog ist ein sehr guter punkt um sicherzustellen, dass die 
applikation anläuft. allerdings muss man sich dann natürlich überlegen 
was man macht, wenn man per watchdog-reset im bootloader wieder 
aufwacht...

um festzustellen ob eine applikation da ist: Fingerprint auf bestimmte 
flash-adressen im applikationsbereich legen wäre eine möglichkeit. Die 
applikation wird dann nur gestartet, wenn der fingerprint da ist.

der einsprungspunkt sollte besser da sein. auch hier helfen fingerprints 
in passenden applikationen, dadurch kann schon beim flashen verhindert 
werden, dass eine unpassende applikation geschrieben wird.

wenn die applikation fehlerhaft übertragen wurde: vom bootloader den 
applikationsbereich löschen lassen.
OP (Firma: Père Lachaise) #5119894
Die Idee mit dem Fingerprint in Verbindung mit dem Bootloader gefällt 
mir. Im Falle einer fehlerhaften Übertragung könnte ich den 
Speicherbereich löschen, allerdings bringt mich das dann auch nicht 
weiter.

Danke für den Input.
#5119909
J. F. schrieb:
> Gibt es eine Möglichkeit hier eine Rückmeldung zu bekommen ob die
> Applikation erfolgreich gestartet wurde?

Wie stellst du dir das vor?

Im Bootloader startest du deine "App.-Main" die theoretisch nie 
verlassen wird, somit (selbst wenn du im Bootloader mehr Code hättest) 
würde der nie aufgerufen werden.

Um zu prüfen ob eine App. vorhanden ist, musst du über ein "Fingerprint" 
gehenm, wie 'dunno' sagte.

Falls bei mir das flashen fehlschlägt, lösche ich die ersten Bytes 
wieder und prüfe da immer ob eine Firmware vorhanden ist.

Was bringt dich an dieser Idee nicht weiter?
OP (Firma: Père Lachaise) #5119917
Adam P. schrieb:
> Was bringt dich an dieser Idee nicht weiter?

Mir war diese Idee einfach nicht vollständig klar - so einfach sie auch 
ist. Sehe die Vorgehensweise aber als einen praktikablen Weg an.

Ich nehme als "Fingerprint" nun einen Hash den ich vorher über die 
Applikation berechne und an diese anhänge. So habe ich auch Gewissheit 
das die richtige Applikation (und auch nur diese) geladen wird.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.