EEPROM Schreibzyklen erhöhen

Gast #3071883
Lesenswert?

hi,

ich muss einige wenige parameter bis zu 1mio mal stromlos abspeichern. 
eeproms sind ja typisch mit 100k beschränkt, da ich jedoch nur wenig 
werte hab und ein seeehr grosses EEPROM (500byte) bin ich auf der suche 
nach einer geschickten lösung wie ich die eeprom-zellen abwechselnd 
beschreiben kann  .... o.ä.

um das rad nicht neu erfinden zu müssen - kennt vielleicht jemand eine 
nette idee/umsetzung dazu?


danke für eure kreativen ideen :),
alex
#3071911
Lesenswert?

Als Anfang:
http://en.wikipedia.org/wiki/Wear_leveling

Und dann schau dir als erstes an, ob dein EEProm auch kleine Blöcke 
löschen kann. Die Zahl der unabhängigen Blöcke kannst du (grob) als 
Faktor für die Erhöhung der Lebensdauer nehmen - sofern ein Datensatz in 
einen Block passt.

Ansonsten gibt es immer noch die Alternative, mit einem statischen RAM 
und Stützbatterie zu arbeiten. Fertige Bausteine gibt es als "Zero Power 
RAM".
Gast #3071923
Lesenswert?

Hast Du mal daran gedacht eine wirklich gute Spannungsüberwachung zu 
implementieren?
Das bietet Dir die Möglichkeit alles im RAM zu halten, bis Dir jemand 
den Hals zudreht.
Ein etwas größerer Kondensator, der nur die CPU stützt und mit dem 
Bad-Power-Signal, welches eine entsprechende Unterbrechung generiert, 
sollte man auch glücklich werden können.
Gast #3071936
Lesenswert?

Rene Schube schrieb:
> Nimm einfach ein F-RAM die haben das gleiche Pinout, die gleiche
> Schnittstelle und > 10 Mio Schreibzyklen.

Und außerdem kein Warten aufs Schreiben, denn das Schreiben ist genauso 
schnell wie Lesen bzw. so schnell wie das Interface die Schreibdaten 
übertragen kann.

Ich benutze EEPROMs nur noch für selten zu ändernde Daten wie 
Seriennummern, Systemoptionen, Lizenzschlüssel usw. (falls ich die nicht 
gleich mit im Flash ablegen kann)

ansonsten FRAM oder als günstigere Alternative dazu MRAM,
pin- und protokollkompatibel zu FRAM, aber günstiger.
Solange man nicht mit starken Magnetfeldern zu rechnen hat, eine echte 
Alternative zu FRAM.

http://www.everspin.com/
(Firma: matzetronics) #3071951
Lesenswert?

Microchip schreibt ins Datenblatt zum 24C32 I²C EEPROM:
•  Endurance:
-  10,000,000 Erase/Write cycles
guaranteed for High Endurance Block
-  1,000,000 E/W cycles guaranteed for
Standard Endurance Block

Das wären also auch ohne Tricks die geforderten 1 Mio. mal. Allerdings 
ist es trotzdem auf jeden Fall eine Überlegung wert, die Strategie zu 
ändern.
#3071990
Lesenswert?

Spontane Idee:
- Datenstruktur mit allen Werten definieren.
- An Anfang oder Ende der Datenstruktur ein Feld "Version" einfügen.
- Bei jeder Änderung eines Werts wird
  - die aktuelle Datenstruktur gelesen (bzw. liegt schon im RAM).
  - der Wert in der Struktur geändert.
  - der Wert von Version um eins erhöht.
  - die Datenstruktur hinter die Position der aktuellen Struktur ins 
EEPROM geschrieben (ggf. an der einzeln löschbaren Blockgröße 
ausgerichtet). Falls es dort nicht mehr hinpasst, an den Anfang des 
EEPROMS.
  - falls Version vom Maximalwert auf 0 überläuft, werden alle 
Versions-Felder im EEPROM zurück auf 0 gesetzt.
- Zum Lesen der aktuellen Version (nach dem Einschalten) wird das 
komplette EEPROM gelesen und nach der Datenstruktur mit dem höchsten 
Wert von Version gesucht.
- Außerdem nur immer die Werte neu schreiben, die sich geändert haben 
(eeprom_update_block() beim AVR).

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