Fragen zur Haltbarkeit des Speichers / Schreibzyklen

Angenommen ich baue mit einem esp8266 einen Datenlogger. Dieser loggt seine Daten in eine Datei (oder mehrere Dateien) auf den spiffs. Das sind dann auf Dauer recht viele Schreibvorgänge in den speicher. Beeinträchtigt das die Lebensdauer des Speichers? Es heißt, dass nach ca. 10.000 Schreibzyklen der Speicher zwar noch funktioniert aber unsicher wird. 10.000 Schreibzyklen sind bei einem Datenlogger schnell erreicht.
Macht es einen Unterschied ob ich in das EEprom oder in den flash Speicher (spiffs) schreibe? Hält das eeprom länger?

Mir ist klar das man Schreibzyklen sparen kann indem man zb. nicht jeden Wert gleich in den Speicher schreibt, sondern zb erst bei jeden 10. Wert. Mir geht es hier eher um das prinzipielle Verständnis.

ESP8266 Boards haben internen und externen Flash und SRAM.
Sie haben aber jedenfalls kein EEPROM. Ein ESP8266 verwendet einen Teil des Flash-Speichers, um EEPROM zu "imitieren". Man sollte das gezielt einsetzen und nur wenn es nötig ist. Auch bei nur einem geänderten Wert wird die komplette Flashpage gelöscht und neu beschreiben, weil es nur so geht.

Die Anzahl der Schreibzyklen des Flash-Speichers hängt vom konkret verwendeten (externen) Chip ab. Die Angaben variieren meist zwischen 10 000 und 100 000 garantierten Schreibzyklen.
Beim ESP8266 kommen wohl FM25Q16 oder GD25Q16 zum Einsatz.
Laut der Datenblätter wären es demnach 100 000 Schreibzyklen.
In der Praxis ist möglicherweise von weniger auszugehen.

Beim ESP böte es sich natürlich an, nicht lokal am Board zu speichern, sondern die Daten per WLAN gleich in eine Datenbank zu schreiben. Dadurch erspart man sich auch das "händische" Auslesen.
Falls kein WLAN in der Nähe ist, und du Angst wegen der max. Schreibzyklen hast, wäre ein Speichern auf SD-Karte eine Alternative. Eine SD-Karte hat zwar auch beschränkte Schreibzyklen aber bei mehreren Gigabyte dauert es schon einige Zeit. Außerdem gibt es Wear-Leveling.

Als Alternative bietet sich evtl. auch ein FRAM an.

Gruß Tommy

uxomm:
Laut der Datenblätter wären es demnach 100 000 Schreibzyklen.
In der Praxis ist möglicherweise von weniger auszugehen.

In der Praxis ist möglicherweise bzw. ganz bestimmt von mehr auszugehen, denn es wird ein Minimum garantiert. :wink:

In der Praxis ist möglicherweise bzw. ganz bestimmt von mehr auszugehen, denn es wird ein Minimum garantiert.

Dann berichte doch bitte über die Praxis beim Einsatz von spiffs am ESP und wie oft was wie ins Flash geschrieben wird. :slight_smile:

Fram wäre interessant. Ich befürchte nur das dass Schreiben darauf komplizierter wird und nicht mehr so einfach wie mit File auf spiffs zu speichern.

Leider steht nicht immer Wlan zur Verfügung, daher ist online Speichern nicht möglich.

Wenn ich etwas in eine Datei auf den spiffs speichere, gilt das dann als Schreibzyklus? Bedeutet also bei 10.000 Schreibzyklen: Wenn ich jeden Tag etwas in eine Datei speichere, dann ist der Speicher nach ca 28 Jahren zumindest unsicher. Und wenn ich zehn mal was speicher, dann sind es nur noch ca 3 Jahre :frowning: Das wäre sehr Nachteilhaft.

Auf meinem Wemos D1 ist ein T25S32 Chip drauf. Es steht noch drauf: PQ20f1 P2j364. der soll laut datenblatt 100.000 Schreibzyklen verkraften. Allerdings gibt es den Chip von verschiedenen Herstellern. Ich weiß nicht von welchem dieser ist.
Ein AT25080B Chip hätte eine Million Schreibzyklen. Ob man den Chip einfach tauschen könnte?

Zuerst solltest Du mal sagen, wieviele Daten Du speichern willst und was Du mit denen im Endeffekt machen willst.
FRAM ist nicht schwierig. Für I2C-FRAM habe ich für den UNO/Mega mal eine Lib gebaut, die dürfte auch auf dem ESP 8266 laufen. Du musst dann nur 3,3V-Chips nehmen oder einen Levelshifter dazwischen.
Je nach Datenmenge könnte aber auch ein SPI-GRAM in Frage kommen.

Gruß Tommy

Momentan ist das alles nur rein theoretisch. Ich überlege, eine Wetterstation zu bauen. Und die Wetterdaten sollen geloggt werden. Ob nun Stündlich oder alle 4 Stunden weiß ich noch nicht. Die Daten könnten dann einmal im Jahr herunter kopiert werden. Gehen wir einfach mal davon aus das eine Speicherkarte nicht in Frage kommt.
Aber auch über einen gps logger denke ich nach, der die Wegstrecke aufzeichnet. Hier würden die Daten alle paar Tage herunter kopiert werden. Auch hier einfach mal davon ausgehen das eine Speicherkarte nicht in Frage kommt.
Das alles ist bisher alles noch ganz am Anfang.

Bei beiden Projekten werden die Daten recht oft in die spiffs geschrieben.

Angenommen ich lege eine Textdatei an und schreibe alle 4 Stunden eine neue Zeile hinein. Wie z.B. 14,71
Dann hätte ich am Tag 6 Schreibzyklen + ein paar für andere Dinge.
Wie würde ich denn so etwas mit deiner fram lib speichern und abrufen können?

In diesem Beispiel und wenn der Chip 100000 Schreibzyklen verkraftet, würde der esp ca 28 Jahre halten bei 10 Schreibzyklen täglich :slight_smile: Bei einem gps logger wäre die Haltbarkeit drastisch verkürzt, da es viel mehr Schreibzyklen sind.

modi0:
Wie würde ich denn so etwas mit deiner fram lib speichern und abrufen können?

Da sind Beispiele dabei.

Woher kommt die immer wieder kehrende Aussage, dass eine Speicherkarte nicht in Betracht kommt? Sie wäre die bessere Alternative.

Gruß Tommy

Edit: Die Speicherung im FRAM wäre eher nicht für Textdaten gedacht, obwohl das möglich wäre.

Woher kommt die immer wieder kehrende Aussage, dass eine Speicherkarte nicht in Betracht kommt? Sie wäre die bessere Alternative

Ich versuche das so klein und minimalistisch zu halten wie es geht. Auch der Stromverbrauch spielt manchmal eine Rolle.
Ich versuche es zu vermeiden. Würde ja auch gehen, wenn da nicht die Beschränkung mit den Schreibzyklen wäre.
Notfalls würde ich zumindest bei dem gps logger eine Micro Sd Karte direkt verdrahten, ohne SD Modul. Das spart zumindest Platz.

Aber hier soll es gar nicht um diese Projekte gehen.
Ich möchte das mit dem Speicher und den Speicherzyklen einfach besser verstehen und ggf Alternativen finden. Das ist schließlich eine Sache die bei vielen Projekten eine Rolle spielt.

Ich gelesen das die esp8266 Module bei jedem connect mit dem Wlan Daten in den Speicher schreiben. Ist das noch aktuell? Das sind ja auch eine Menge Speicherzyklen! Kann man das irgendwie umgehen?
Eine Statistik wie viele Speicherzyklen es schon gab gibt es wahrscheinlich nicht bei den esp modulen, oder?

Lies mal diesen Thread zur ESP8266-Problemtik.

MicroSD hat den Vorteil, dass sie auch mit 3,3V läuft, also direkt an SPI des ESP8266 kann. Beide GND-Anschlüsse verschalten!

Gruß Tommy

uxomm:
ESP8266 Boards haben internen und externen Flash und SRAM.
Sie haben aber jedenfalls kein EEPROM. Ein ESP8266 verwendet einen Teil des Flash-Speichers, um EEPROM zu "imitieren".

Dann ist es also egal ob ich in die spiffs schreibe oder mit EEPROM.write schreibe? Beides verbraucht gleichviel Speicherzyklen?

Tommy56:
Lies mal diesen Thread zur ESP8266-Problemtik.

MicroSD hat den Vorteil, dass sie auch mit 3,3V läuft, also direkt an SPI des ESP8266 kann. Beide GND-Anschlüsse verschalten!

Gruß Tommy

Danke für den Link und den Tipp mit der MicoSD.

uxomm:
Dann berichte doch bitte über die Praxis beim Einsatz von spiffs am ESP und wie oft was wie ins Flash geschrieben wird. :slight_smile:

Das ist eine völlig andere Frage die ich nicht beantworten kann. Ich habe nur eine Aussage korrigiert.

Diese eine Sache würde mich noch Interessieren, vielleicht hat jemand eine Antwort darauf:

Sie haben aber jedenfalls kein EEPROM. Ein ESP8266 verwendet einen Teil des Flash-Speichers, um EEPROM zu "imitieren". Man sollte das gezielt einsetzen und nur wenn es nötig ist. Auch bei nur einem geänderten Wert wird die komplette Flashpage gelöscht und neu beschreiben, weil es nur so geht.

Also ist es bei einem esp8266 egal ob ich mit File in die Spiffs schreibe oder mit EEPROM.write ins EEprom?

ja, beides nutzt die gleichen Resourcen und unterliegt den gleichen Restriktionen.
Lesestoff.

Danke für die Info :slight_smile:

Dann ist es also egal ob ich in die spiffs schreibe oder mit EEPROM.write schreibe? Beides verbraucht gleichviel Speicherzyklen?

Falsch!

Das Filesystem implementierte ein "wear leveling"
Das tut die EEPROM Emulation nicht.

1 Like

combie:
Das Filesystem implementierte ein "wear leveling"
Das tut die EEPROM Emulation nicht.

...was dann in der Praxis bedeuten würde, dass im Sinne der Nutzungszeit des Speichers die Verwendung des Filesystems gegenüber der EEPROM-Emulation vorzuziehen ist.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.