Forum: Mikrocontroller und Digitale Elektronik 32bit Daten ins Flash eines STM32G4xx schreiben


von nurmal so (Gast)


Lesenswert?

Sevus,

ich hätte da mal ein Problem, und zwar bin ich gerade von einem 
STM32F3xx auf einen STM32G4xx umgestiegen, und passe derzeit meine FW 
an.
In dem Programm werden 32bit Werte in das Flash geschrieben. Nun kann 
man auf den STM32G4 leider nur noch 64 bittig schreibend auf das Flash 
zugreifen.

Daher war meine Idee jewils 64bit zu schreiben und jeweils die ersten 
oder zweiten 32 bit aufgefüllt entwerder vorne oder hinten mit 
0xFFFFFFFF zu schreiben. Dabei ist mir aufgefallen dass sobald eine 
64bit Adresse einmal beschrieben ist diese erst nach einem page erase 
wieder beschreibbar ist.
Also nicht so das man einzelne Bits "nach unten" kippen kann.

An einigen Stellen des Programms kann ich einfach 2 x 32bit Werte 
zusammenfassen, leider ist dieses jedoch nicht überall möglich da die 
Daten teilweise auch über eine Schnitstelle (welche ich nicht in der 
Hand habe) übertragen werden. Hier müssen die Adressen nicht aufeinander 
folgend sein, und ich kann auch nicht sagen ob es eine gerade oder 
ungerade Anzahl von Daten sind. Des Weiteren bekomme ich an dieser 
Stelle auch nicht mit wenn die Daten vollständig übertragen wurden.


Mir fällt jetzt nur die Möglichkeit ein, bei jedem 32bit Wert der 
eingetragen wird
- die gesammte Page in den Ram laden
- Flashpage löschen
- den einen Wert im Ram neu zu setzen
- Ram in den Flash schreiben.

Das wiederstrebt mir aber massiv, hat jemand vieleicht doch noch einen 
Hack mit dem ich die 32bit Werte in das Flash schreiben kann?

Vielen Dank schon mal für eure Hilfe

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


Lesenswert?

G4 Flash ist ECC geschuetzt. Damit geht uberschreiben nicht mehr. 
Ausnahme ist das Null setzen, RM0440 3.7.5 Flash status register 
(FLASH_SR), Erklaerung zu Bit 3 PROGERR: Programming error

von Phantomix X. (phantomix)


Lesenswert?

Wenn du genug Flash hast, könntest du auch die Hälfte auf bspw 0 oder 
FFFFFFFF lassen, also immer 64 bit schreiben mit 32 bit Nutzdaten.
Dann muss nur dein Schreib- und dein Auswertealgorithmus angepasst 
werden bzgl. Datenoffsets.
Gegen dauerndes Page-Erase hätte ich auch was.

von Bauform B. (bauformb)


Lesenswert?

Externes NOR-Flash ist Byte-weise beschreibbar und, im Verhältnis zum 
internen Flash, unkaputtbar. Durch den Wechsel vom STM32F zum G ändern 
sich sowieso ein paar Pins...

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.