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
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
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.
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...
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.
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..
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.