Forum: Mikrocontroller und Digitale Elektronik STM32L151 - FW-Update


von Booty (Gast)


Lesenswert?

Hi!

Auf eine Baugruppe verwende ich einen STM32L151RD (mit 384kByte Flash).
Die FW ist zur Zeit knapp 100 kByte groß.
Ziel ist es, über die Datenschnittstelle ein neues FW Image zu laden.
Da hier ein proprietäres Protokoll läuft, müsste man das Image zunächst 
im extra so großen Flash zwischengespeichert, validiert und dann "final" 
geflasht  werden.
Beim letzteren hakt's nun. Ich müsste das mit dem Bootloader machen, 
aber wie bringe ich den dazu von Flash-Adresse 0x2xxxxx auf Adresse 
0x2000000 zu flashen!? Was für einen Bootloader nimmt man dazu am 
Besten?

Danke & Grüße für eure Tipps!

Viele Grüße
Martin

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Der STM32L151RD hat Dual Bank Ram. Arbeite auf Bank A, Schreibe Bank B 
und wenn alles okay ist, setzte den Bootvektor auf Bank B und beim 
nachsten booten arbeitest Du auf Bank B und schreibst Bank A

von Jim M. (turboj)


Lesenswert?

Booty schrieb:
> Was für einen Bootloader nimmt man dazu am
> Besten?

Einen selbstgeschriebenen. Man lädt eine Page ins RAM und nimmt dann die 
normale RAM2Flash Funktion.

Interessanter sind die Übergange (Applikation->Bootloader-> neue App) 
beim Flashen wenn die Stromversorgung ausfallen kann. Ein guter 
Bootloader behandelt auch diese Fälle korrekt.

von Booty (Gast)


Lesenswert?

Hallo!

Danke für eure Antworten! - Aber ... ähm ... Der STM32L151RD hat nur 48k 
RAM und die FW braucht davon knapp 40k!
Ein FW-Image mit 100k bekomme ich da so oder so nicht rein...

von Lutz (Gast)


Lesenswert?

Jim M. schrieb:
> Man lädt eine Page ins RAM und nimmt dann die normale RAM2Flash
> Funktion.

von Booty (Gast)


Lesenswert?

Lutz schrieb:
> Jim M. schrieb:
>> Man lädt eine Page ins RAM und nimmt dann die normale RAM2Flash
>> Funktion.

Bin verwirrt!

Das die FW Fragemente zunächst ins RAM und anschließend ins Flash 
geschrieben werden ist für mich logisch. Dann liegt das FW-Image im 
Flash irgendwo hinter der bestehenden Applikation. Man kann eine 
Prüfsumme darüber berechnen und mit einem Sollwert vergleichen. Ist das 
ok, muss eben dieses Image von einem Bootloader aus dem Adressbereich 
hinter der aktuellen FW-Version an den Anfang (0x80000000) kopiert 
werden. So einen Bootloader oder ein How-To suche ich. Wenn ich nach 
"STM32 Bootloader" googel bekomme ich nur Ergebnisse zum integrierten 
Bootloader der von UART1 aus angesteuert/bedient werden kann. Der hilft 
mir nach meiner gegenwärtigen Recherche nicht weiter.

von Lutz (Gast)


Lesenswert?

Du bestimmst doch, wo an welche Adresse im Flash etwas geschrieben wird. 
Haeppchenweise. IAP ist das Stichwort. Musst nur ein paar Sachen 
beachten. Halt alle für FW-Update erforderliche Funktionen ins RAM, VTOR 
usw..

von hp-freund (Gast)


Lesenswert?

Lutz schrieb:
> IAP ist das Stichwort.

Genau.
Leider ist in der L0 Lib kein Beispiel dazu vorhanden, aber in der F1 
Lib gibt es mehrere.
Die jeweilige readme.txt zeigt wie es geht.

von hp-freund (Gast)


Lesenswert?

Ich meinte natürlich deine L1 Lib, nicht L0.

von Booty (Gast)


Lesenswert?

Hi!

Danke für eure Antworten ... Werde mich mal in die IAP Thematik 
einlesen.

Grüße
Booty

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.