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
>Wenn jemand den STM32 leer vorfindet soll er per Tastendruck den >Booloader Starten können. Aufgrund welchen Ereignisses sollte er "leer" werden?
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.
Wie siehts aus wenn der Bootloader das Hauptprogramm überprüft mit CRC32 o.ä. und nicht dort hineinspringt wenns "Zerschossen" ist ?
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).
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.
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. :-)
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.
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. .
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
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.
Studium von AN2606 hilft. Typen, die Pattern 3-6 erkennen, schalten bei leeren Flash in den Bootloader. Sind allerdings nur wenige Typen :-(
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.