Forum: Mikrocontroller und Digitale Elektronik STM32 Virtueller EEPROM in Flash


von Bert S. (kautschuck)


Lesenswert?

Hi,

Man kann ja auf den STM32 den Flash benützen um einen EEPROM zu 
simulieren, jedoch frage ich mich, ob sich das lohnt für eine Anwendung, 
wo man vielleicht 10 mal pro Monat was speichert? Die Daten bewegen sich 
bei meiner Applikation auch nur um die 32kByte. Die Schreibzyklen sind 
ja das Problem, da nur etwa 1/10 Schreibzyklen wo in einem normalen 
EEPROM möglich sind und nur Page weise geschrieben werden kann. Lesen 
kann man ja aber so oft wie man will.

Hat jemand von euch schon Erfahrungen mit dem virtuellen EEPROM 
gesammelt und schon mal den EEPROM zu oft beschrieben?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Bert S. schrieb:
> Hat jemand von euch schon Erfahrungen mit dem virtuellen EEPROM
> gesammelt und schon mal den EEPROM zu oft beschrieben?

Ersteres ja, zweiteres nein. Es war für mich im Endeffekt wesentlich 
einfacher, ein simples 93C46 anzudocken, als eine Page für das virt. 
EEPROM zu spendieren.

von Malte _. (malte) Benutzerseite


Lesenswert?

Bert S. schrieb:
> edoch frage ich mich, ob sich das lohnt für eine Anwendung,
> wo man vielleicht 10 mal pro Monat was speichert?
Wenn du wirklich nur 10x im Monat schreiben musst,
und der Flash 10000 Schreibzyklen hält:
Ergibt das 1000Monate oder 83 Jahre. Ich denke die wenigsten 
Elektrogeräte werden diese Haltbarkeit benötigen...

von Thomas E. (picalic)


Lesenswert?

Servus,

was mir in dem Zusammenhang aber mal aufgefallen ist: In der original 
ST-EEPROM Emulation wird bei jedem Reset des Controllers immer die 
bereits als "gelöscht" markierte EEPROM-Page zur Sicherheit nochmal 
gelöscht - und die Hardware führt die Löschoperation auch tatsächlich 
aus, was man daran sieht, daß der Flash-Zugriff für die Erase-Zeit 
blockiert ist. Da stellt sich die Frage, ob diese Löschzyklen nicht auch 
das Flash abnutzen?

von Bert S. (kautschuck)


Lesenswert?

Thomas E. schrieb:
> Servus,
>
> was mir in dem Zusammenhang aber mal aufgefallen ist: In der original
> ST-EEPROM Emulation wird bei jedem Reset des Controllers immer die
> bereits als "gelöscht" markierte EEPROM-Page zur Sicherheit nochmal
> gelöscht - und die Hardware führt die Löschoperation auch tatsächlich
> aus, was man daran sieht, daß der Flash-Zugriff für die Erase-Zeit
> blockiert ist. Da stellt sich die Frage, ob diese Löschzyklen nicht auch
> das Flash abnutzen?

Stimmt, und auch bietet diese Library von ST nur das Schreiben einer 
Variablen auf einmal an, so dass man bei 100 Variablen schon 100 mal 
eine Page schreibt.

: Bearbeitet durch User
von Bert S. (kautschuck)


Angehängte Dateien:

Lesenswert?

Hier mal die Library die ich gefunden habe für meinen STM32F3. Man kann 
ja da wirklich nur ein HalfWord auf einmal schreiben. Beansprucht das 
den Flash nicht extrem?

von Thomas E. (picalic)


Lesenswert?

Bert S. schrieb:
> Edit: Ok, habe wohl eine falsche Library erwitscht, es gibt andere die
> das besser machen.

Ich kenne nur die Applikation von ST, wo solange die Änderungen von 
beliebigen (logischen) Variablen in eine Page geschrieben werden, bis 
diese voll ist. Dann gibt es so eine Art "Garbage Collection", wobei nur 
die zuletzt gültigen Variablen in die neue Page übertragen werden. Gibt 
es da auch noch eine andere Appnote oder Lib von ST?

von Thomas E. (picalic)


Lesenswert?

Bert S. schrieb:
> Beansprucht das
> den Flash nicht extrem?

Soweit ich sehen kann, ist das die EEPROM-Emulation, die ich meine und 
beschrieben habe. Die Beansspruchung des Flashs hält sich dadurch in 
Grenzen, daß das Löschen einer Page erst nach vielen Änderungen an 
einzelnen Variablen erfolgt. Bei einer Pagegröße von 1K ist die Page 
also erst nach 255 Schreibzyklen voll, egal, ob immer die gleiche 
Variable oder immer andere Variablen geändert werden, und erst dann muß 
ein Löschzyklus erfolgen.

Offenbar ist in Deiner Version aber eine Prüfung drin, ob die als 
gelöscht gekennzeichnete Page auch tatsächlich gelöscht ist, und nur 
wenn das nicht der Fall ist, wird die Page nochmal gelöscht. Das war 
wohl in der früheren Version (ohne HAL), die ich kannte, noch anders.
Ganz schlüssig scheint mir das Konzept der Prüfung aber nicht zu sein, 
oder habe ich etwas übersehen? Wenn durch eine unvollständig 
durchgeführte Lösch-Operation zwar die "addressvalues" alle auf 0xFFFF 
stehen, aber dazugehörige Variablen-Werte im Flash noch Daten enthalten, 
gilt die Page hier trotzdem als gelöscht!?

: Bearbeitet durch User
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.