Forum: Mikrocontroller und Digitale Elektronik STM32 Bootloader Taster


von Disco (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich suche nach einer Möglichkeit über eine Taste den Bootloader zu 
starten.
Im Normalfall soll der STM32 bei Power ON sein Programm starten.

Wenn jemand den STM32 leer vorfindet soll er per Tastendruck den 
Booloader Starten können.

Natürlich könnte man an Boot0 eine Taste bauen und dann das Netzteil 
einschalten. Oder 2 Tasten erst Boot0 dann Reset und Reset loslassen und 
Boot0 wieder loslassen. Das ist mir für Laien zu kompliziert.

ich habe mal eine Schaltung im Anhang gepostet die das erfüllt. 
Allerdings würde ich mich ärgern wenn es einfacher mit irgend einem 
Resetcontroller geht.

Danke schon mal.

Martin

von RumbaZumba (Gast)


Lesenswert?

>Wenn jemand den STM32 leer vorfindet soll er per Tastendruck den
>Booloader Starten können.

Aufgrund welchen Ereignisses sollte er "leer" werden?

von Disco (Gast)


Lesenswert?

Vieleicht war er nie voll!

Fehler in der Kommunikation, dieser Bootloader hat beim CAN kein 
Netzwerkmanagement. Funkt jemand dazwischen steht Schrott im Speicher. 
Bootet man ausversehen, kommt man nur als Spezialist wieder in den 
Bootloader. Wegen so etwas will ich nicht nach Asien gurken müssen.

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Wie siehts aus wenn der Bootloader das Hauptprogramm überprüft mit CRC32 
o.ä. und nicht dort hineinspringt wenns "Zerschossen" ist ?

von npn (Gast)


Lesenswert?

Dennis Heynlein schrieb:
> Wie siehts aus wenn der Bootloader das Hauptprogramm überprüft mit
> CRC32
> o.ä. und nicht dort hineinspringt wenns "Zerschossen" ist ?

Im STM32 ist der Bootloader schon von Haus aus drauf. Dessen 
Funktionalität kann man also nicht beeinflussen (so weit ich bisher 
gelernt habe).

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Es spricht aber nichts gegen einen eigenen Bootloader.
Kostet so ~ 8 kByte.
Habe das in einem Projekt schon erfolgreich verwendet.
Waren dann allerdings > 8 kByte weil die Firmware mit AES-256 
verschlüsselt aufgespielt wurde und CAN fürs hochladen benutzt wurde und 
der STM keine AES-Option hatte.

von npn (Gast)


Lesenswert?

Dennis Heynlein schrieb:
> Es spricht aber nichts gegen einen eigenen Bootloader.
> Kostet so ~ 8 kByte.
> Habe das in einem Projekt schon erfolgreich verwendet.
> Waren dann allerdings > 8 kByte weil die Firmware mit AES-256
> verschlüsselt aufgespielt wurde und CAN fürs hochladen benutzt wurde und
> der STM keine AES-Option hatte.

Ach so meintest du das. Ich dachte, es ist die Rede vom eingebauten BL. 
Dann okay. :-)

von Disco (Gast)


Lesenswert?

Hm, eine Alternative zu meiner Frage ist das alles nicht. Es werden im 
AppNote noch andere Patterns beschrieben. Aber es kommt für den STM32F4 
nur Pattern 1 in Frage. Ich habe schon einen Bootloader für den MC68HC12 
realisiert.  Dort hatte ich hin und wieder das Problem, das während des 
Flashprozesses das Toolfile versagt hat. Dieses war nur 512 Byte groß 
und hatte keine Reserven für Fehlerbehebung.  Deshalb möchte ich den 
internen Bootloader als fallback Lösung und für die Inbetriebnahme 
verwenden.

von Disco (Gast)


Lesenswert?

Ein eigener Bootloader nutzt aber nicht wenn der Flash halb gelöscht 
ist. Oder gibt es die Möglichkeit eine zweite Firmware von außen zu 
starten. Da währe wieder das Problem mit dem Taster. .

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Eine Lösung ist, der Bootloader startet das Hauptprogramm nicht und 
wartet auf ein hochladen der Firmware, wenn er durch die 
Checksum-Prüfung ermittelt, daß das Hauptprogramm defekt ist.

Man spart den Knopf, weil der Bootloader selbst auf das Firmware-Update 
wartet wenn was nicht stimmt.

Zweimal das Hauptprogramm vorhalten ist aufwendig, weil die absoluten 
Adressen dann nicht mehr wirklich stimmen.

Wenn man allerdings die Firmware in einen gesonderten Bereich überträgt 
und erst bei erfolgreicher Übertragung in den eigentlichen 
Haupt-Programm-Bereich durch den Bootloader brennt wäre der Taster auch 
überflüssig.

Hauptprogramm kaputt + Uploadimage Ok und neuer
-> Brennen Uploadimage in Hauptprogrammflash

Hauptprogramm Ok + Uploadimage kaputt
-> Hauptprogramm starten

Kostet aber natürlich den halben Flash :)

: Bearbeitet durch User
von Schaulus Tiger (Gast)


Lesenswert?

Disco schrieb:
> Ein eigener Bootloader nutzt aber nicht wenn der Flash halb
> gelöscht ist.

Der Bootloader befindet sich im Flash-Sektor 0 und wird niemals 
gelöscht. Der Sektor kann auch schreibgeschützt werden. Das 
Anwendungsprogramm kommt in die restlichen Sektoren.

Für die erste Inbetriebnahme muss natürlich der eingebaute Bootloader 
verwendet werden. Aber der läuft ja in einer sauberen Umgebung.

Dennis Heynlein schrieb:
> Hauptprogramm kaputt + Uploadimage Ok und neuer
> -> Brennen Uploadimage in Hauptprogrammflash
>
> Hauptprogramm Ok + Uploadimage kaputt
> -> Hauptprogramm starten
>
> Kostet aber natürlich den halben Flash :)

Deswegen schreibe ich das neue Image erstmal per SPI in ein NOR-Flash. 
Da könnte man sogar mehrere Reserve-Images unterbringen.

von Uwe Bonnes (Gast)


Lesenswert?

Studium von AN2606 hilft.
Typen, die Pattern 3-6 erkennen, schalten bei leeren Flash in den 
Bootloader. Sind allerdings nur wenige Typen :-(

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Disco schrieb:
> Allerdings würde ich mich ärgern wenn es einfacher … geht.

Interessante Fragestellung, dafür brauche ich auch noch 'ne Lösung.

Ich hätte es vielleicht mit zwei Schmitt-Triggern (1 x Open-Drain) und 
zwei R-C-Gliedern probiert.

Den LTC6993 gibt's leider nicht bei Mouser. Bei Digikey bestelle ich 
selten. Eine Lösung mit "Allerwelts-ICs" fände ich attraktiver.

: Bearbeitet durch User
von Disco (Gast)


Lesenswert?

Ich habe ihn genommen weil er bei LTSPCE und RS verfügbar ist.

Uwe Bonnes schrieb:
> Studium von AN2606 hilft

Das habe ich studiert. Allerdings wird da, wie oben erwähnt, nur Pattern 
1 unterstützt.

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.