STM32F1 / Firmware Bootloader

Gast #3587407
Lesenswert?

Hallo,

ich bin gerade dabei eine HW mit einem STM32F1 zu designen. Zusätzlich 
mache ich mir Gedanke, wie ich später im eingebauten Zustand die 
Firmware updaten möchte. Ich bin mir bewusst, es gibt die Pins Boot. 
Jedoch möchte ich auf eine externe HW Beschaltung verzichten, wenn es 
geht, und den Bootloader plus die Update-Sequenz per Software auslösen 
lassen.

Gibt es eine Beschreibung, wie ich ausschließlich per Firmware ohne 
Benutzung der Boot Pins, den Controller updaten kann.

Vielen Dank.
#3587421
Lesenswert?

Hallo!
Du brauchst den Code um den Flash zu Löschen / zu Beschreiben. Schau dir 
dazu die StandardPeripheralLibrary genauer an. Außerdem gibt es eine 
Appnote zum Flash Programming bei ST.

Hinweis: Soweit ich weiß sind bei den F1 die ersten Paar Sektoren 
readonly, solltest du den Firmware-Ausleseschutz aktivieren.

Hinweis: Es wird vermutlich nötig sein, Teile der Flash-Kopierroutinen 
in den RAM zu linken. Schau dazu in dein Linker file und auf Google.
Gast #3587454
Lesenswert?

Hallo,

ich habe das Problem, meine Hardware ist in einem Bussystem integriert 
und ich komme aus baulichen Gegebenheiten nicht mehr an die Hardware 
heran.

Jetzt wollte ich den Upload über das Bussystem durchführen.
#3587457
Lesenswert?

Ist machbar. Du brauchst auf jeden Fall

- Ein Übertragungsprotokoll das dir die Firmware sauber überträgt

- Genug Zwischenspeicher auf / am Mikrocontroller um die gesamte 
Firmware zwischenzuspeichern. Hast du den nicht, riskierst du, dass ein 
abgebrochenes Update zum Ausfall deiner Anwendung führt.
#3587489
Lesenswert?

Nachtrag zum verfügbaren Speicher:

Vor ein Paar Jahren habe ich noch einen anderen Ansatz ausprobiert:

Wenn es deine Anwendung zulässt, könntest du auch einen Bootloader 
programmieren, der komplett selbständig über deinen Bus auf 
Firmwareupdates wartet.

Das bedeutet allerdings, dass sehr viel Logik im Bootloader sein muss 
(die du dann leider schlecht updaten kannst). Es hat allerdings den 
Reiz, zusammen mit einer CRC-Checksumme das Gerät quasi unkaputtbar zu 
machen (zumindest was Firmwareupdates angeht).
Der Bootloader würde dann immer einen Happen übers Netz empfangen und 
wegschreiben. Die Anwendung wird am Ende (und überhaupt) nur gebootet, 
wenn der CRC stimmt.



Praktikabler ist allerdings die Lösung, die ich dir weiter oben schon 
genannt habe, vorallem weil Speicher recht billig ist (schau mal nach 
SPI flashes, bspw. 
http://www.digikey.de/product-search/de?x=22&y=9&KeyWords=W25Q )

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren