Forum: Mikrocontroller und Digitale Elektronik SPI EEPROM durch lesen kaputt?


von Udo K. (udok)


Lesenswert?

Hallo zusammen,

Ich wollte mal in die Runde fragen, ob ihr schon mal ein SPI EEPROM (512 
kBit M95512 von ST oder ähnlich) durch Lesen kaputt gemacht habt?  Gibt 
es da ein Limit wie beim Schreiben? Sowas müsste ja im Datenblatt 
stehen, aber da  schweigen sich die gesichteten Datenblätter aus.  Kann 
man das so interpretieren, das EEPROMS 20 Jahre / 365 Tage 
kontinuierlich mit 5 MBit/s gelesen werden können?

Gruss, Udo

von Falk B. (falk)


Lesenswert?

Udo K. schrieb:
> Ich wollte mal in die Runde fragen, ob ihr schon mal ein SPI EEPROM (512
> kBit M95512 von ST oder ähnlich) durch Lesen kaputt gemacht habt?

Praktisch unmöglich.

> Gibt
> es da ein Limit wie beim Schreiben?

Nein. Bei FRAM gibt es sowas. (Oder war's MRAM?)

> Sowas müsste ja im Datenblatt
> stehen, aber da  schweigen sich die gesichteten Datenblätter aus.

Weil nicht vorhanden.

> Kann
> man das so interpretieren, das EEPROMS 20 Jahre / 365 Tage
> kontinuierlich mit 5 MBit/s gelesen werden können?

Sicher.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Udo K. schrieb:

> Sowas müsste ja im Datenblatt
> stehen, aber da  schweigen sich die gesichteten Datenblätter aus.

data retention time

> Kann
> man das so interpretieren, das EEPROMS 20 Jahre / 365 Tage
> kontinuierlich mit 5 MBit/s gelesen werden können?

Nein. Das kann man vielmehr so interpretieren: Es ist vollkommen 
scheissegal, wie oft und wie schnell du die Dinger liest. Entscheidend 
ist allein die Zeit, die seit dem Schreiben vergangen ist.

Schreib-/Löschvorgange haben allerdings als Nebenwirkung auch eine 
signifikante Verringerung der data retention time zur Folge.

D.h.: wenn man nur einmal beschreibt und nachfolgend nur noch liest, 
erreicht man i.d.R deutlich längere Zeiten, denn angegeben wird die data 
retention time für die garantierte Zahl von Schreib-/Löschzyklen.

von Rick (rick)


Lesenswert?

Udo K. schrieb:
> Ich wollte mal in die Runde fragen, ob ihr schon mal ein SPI EEPROM (512
> kBit M95512 von ST oder ähnlich) durch Lesen kaputt gemacht habt?
Ja. Ein paar W25Q128 WIMRE. Vielleicht ist es denen in meiner 
Applikation auch zu warm gewesen.
Im Betrieb (24/7) wurden dabei nur wenige Byte pro Sekunde gelesen, 
dafür dauerhaft. Seit der verbesserten Kühlung sind aber seit über fünf 
Jahren keine mehr ausgefallen.

Udo K. schrieb:
> Kann
> man das so interpretieren, das EEPROMS 20 Jahre / 365 Tage
> kontinuierlich mit 5 MBit/s gelesen werden können?
Theoretisch schon. Praktisch würde ich es drauf ankommen lassen. Und 
wenn es sicher funktionieren muß, dann die Daten evtl. in einen RAM 
kopieren oder einen zweiten EEPROM für die Redundanz vorsehen.

von Christoph Z. (rayelec)


Lesenswert?

Die Frage ist, ob da drin wirklich ein EEPROM steckt! Bei Flash können 
durch zu häufiges Lesen durchaus Daten verloren gehen. Das nennt sich 
„Read Disturbance“ und kann z.B. bei sekündlichem Zugriff schon nach 
Wochen auftreten, vielleicht auch erst nach Jahren. Wir haben da sehr 
schmerzliche Erfahrungen machen müssen!

von Peter D. (peda)


Lesenswert?

Udo K. schrieb:
> durch Lesen kaputt gemacht

Was soll das heißen?
Wenn Du meinst, daß Daten geändert wurden. Das ist möglich, wenn durch 
Störungen oder versehentlich ein Schreiben erfolgte.
Allerdings muß vorher ein Write-Enable erfolgt sein und der WP Pin 
entsprechend stehen, d.h. die Gefahr ist gering.
Beim Lesen sollte immer Write-Disable gesetzt sein.

von Peter D. (peda)


Lesenswert?

„Read Disturbance“ gibt es nur bei MLC Flash als Datenspeicher.
Bei Flash als Programmspeicher oder EEPROM ist ein permanentes Lesen 
vorgesehen und daher unproblematisch.

von Dirk F. (dirkf)


Lesenswert?

Wir hatten mal ein Projekt, bei dem Kalibrierdaten in einem externen 
EEEPROM 25LC512 abgelegt wurde und nur beim Einschalten gelesen wurden.

Bei einigen Geräten waren neu geschriebene Daten  nach ca. 30 Minuten 
ohne Versorgungsspannung wieder verloren !!!
Ursache immer noch unbekannt.

Haben darauf hin auf das interne EEPROM der MCU gewechselt. Keine 
Probleme mehr.

: Bearbeitet durch User
von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Dirk F. schrieb:
> Haben darauf hin auf das interne EEPROM der MCU gewechselt.

Wie habt ihr dieses Kunststück geschafft?

Udo K. schrieb:
> ob ihr schon mal ein SPI EEPROM durch Lesen kaputt gemacht habt?

Ich habe zweimal mit internen EEPROMs von Mikrocontrollern die Erfahrung 
gemacht, dass sie Daten verlieren können, wenn beim Lesezugriff die 
Versorgungsspannung instabil ist. In beiden Fällen lief die CPU dabei 
ohne Probleme weiter, sie hat den gelesenen Müll auf einem Display bzw. 
einer seriellen Konsole angezeigt.

von Peter D. (peda)


Lesenswert?

Dirk F. schrieb:
> Bei einigen Geräten waren neu geschriebene Daten  nach ca. 30 Minuten
> ohne Versorgungsspannung wieder verloren !!!

Da würde ich stark auf HW- oder SW-Fehler tippen. Die Pins dürfen 
niemals floaten, z.B. wenn der µC noch in Reset ist. Mindestens /CE und 
SCK müssen einen Pullup haben.

Wir setzen schon lange AT24C512 ein und hatten nie Probleme damit.

von Peter D. (peda)


Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> Ich habe zweimal mit internen EEPROMs von Mikrocontrollern die Erfahrung
> gemacht, dass sie Daten verlieren können

Bei den AVRs ist zwingend erforderlich, die Brownout-Fuse zu enablen.

von Axel S. (a-za-z0-9)


Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> Dirk F. schrieb:
>> Haben darauf hin auf das interne EEPROM der MCU gewechselt.
>
> Wie habt ihr dieses Kunststück geschafft?

Lern lesen!

Dirk F. schrieb:
> Wir hatten mal ein Projekt, bei dem Kalibrierdaten in einem externen
> EEEPROM 25LC512 abgelegt wurden
...
> Haben darauf hin auf das interne EEPROM der MCU gewechselt

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Peter D. schrieb:
> Bei den AVRs ist zwingend erforderlich, die Brownout-Fuse zu enablen.

Harmoniert leider nicht so gut mit (langzeit-) Batteriebetrieb.

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Lesenswert?

Axel S. schrieb:
> Lern lesen!

Hast Recht, ich habe das Wort "auf" überlesen. Dadurch bekam der Satz 
eine völlig andere Bedeutung.

von Peter D. (peda)


Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> Peter D. schrieb:
>> Bei den AVRs ist zwingend erforderlich, die Brownout-Fuse zu enablen.
>
> Harmoniert leider nicht so gut mit (langzeit-) Batteriebetrieb.

Z.B. beim ATmega328P/PA kann man das BODS Bit vor dem Schlafen setzen.

von Rainer W. (rawi)


Lesenswert?

Christoph Z. schrieb:
> Bei Flash können durch zu häufiges Lesen durchaus Daten verloren gehen.
> Das nennt sich „Read Disturbance“ und kann z.B. bei sekündlichem
> Zugriff schon nach Wochen auftreten ...

Frag die ganzen Mikrocontroller, die schon nach ein paar Stunden 
ausfallen, weil sie in ihrer nur einige Millisekunden dauernden 
Hauptschleife das Programm aus dem Flash-Speicher nicht mehr lesen 
können. ;-)

„Read Disturbance“ tritt nur bei MLC NAND Flash auf. Deine 
Verallgemeinerung gilt in dieser Form ganz sicher nicht.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Rainer W. schrieb:
> Frag die ganzen Mikrocontroller, die schon nach ein paar Stunden
> ausfallen, weil sie in ihrer nur einige Millisekunden dauernden
> Hauptschleife das Programm aus dem Flash-Speicher nicht mehr lesen können.
Für mich klingt das nach einer vogelwilden Urban Legend. Hast du da auch 
ein konkretes Beispiel, welchen "ganzen Mikrocontroller" man da fragen 
müsste?

von Andreas H. (signore_rossi)


Lesenswert?

;-) beachten!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Andreas H. schrieb:
> ;-) beachten!
Hölle auch, das ging unter... :-o

Rainer W. schrieb:
> „Read Disturbance“ tritt nur bei MLC NAND Flash auf.
Und verstärkt bei den nachfolgenden Technologien TLC und QLC.

von Falk B. (falk)


Lesenswert?

Lothar M. schrieb:
>> „Read Disturbance“ tritt nur bei MLC NAND Flash auf.
> Und verstärkt bei den nachfolgenden Technologien TLC und QLC.

Naja, wer digitale Informationen analog speichert, muss sich da nicht 
wundern . . .

von Christoph Z. (rayelec)


Lesenswert?

Rainer W. schrieb:
> Christoph Z. schrieb:
>> Bei Flash können durch zu häufiges Lesen durchaus Daten verloren gehen.
>> Das nennt sich „Read Disturbance“ und kann z.B. bei sekündlichem
>> Zugriff schon nach Wochen auftreten ...
>
> Frag die ganzen Mikrocontroller, die schon nach ein paar Stunden
> ausfallen, weil sie in ihrer nur einige Millisekunden dauernden
> Hauptschleife das Programm aus dem Flash-Speicher nicht mehr lesen
> können. ;-)
>
> „Read Disturbance“ tritt nur bei MLC NAND Flash auf. Deine
> Verallgemeinerung gilt in dieser Form ganz sicher nicht.

Das habe ich so explizit auch nie behauptet. Leider ist es aber heute 
so, dass bei vielen Produkten gar nicht mehr so klar ist, welche 
Technologioe denn wirklich drinsteckt. Als uns damals das Problem kalt 
erwischte, war das noch noch viel weniger bekannt als es heute immer 
noch ist.

von Peter D. (peda)


Lesenswert?

Christoph Z. schrieb:
> Als uns damals das Problem kalt
> erwischte

Magst Du uns auch den konkreten EEPROM/Flash nennen, der dieses Problem 
bereitet?

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Lothar M. schrieb:
> Und verstärkt bei den nachfolgenden Technologien TLC und QLC.

"Multi" steht im allgemeinen Sprachgebrauch für "mehrere"/"viele" und 
umfasst damit eigentlich auch "Triple" und "Quad".
Da hat die Welt bei Einführung der ersten Flash-Speicher mit mehreren 
Pegeln wohl verschlafen, einen spezifische Begriffe zu wählen. Das alte 
"MLC" steht für "Dual" - da hast du wohl Recht. Abgesehen davon sind 
diese Akronyme sowieso irreführend, da ein "TLC" Flash natürlich nicht 
drei Level (TL=Triple Level), sondern 8 Level unterscheiden muss, ein 
"QLC" (QL=Quad Level) 16 Level. Eigentlich müsste es also nicht 
SLC/MLC/TLC/QLC, sondern SBC(single Bit Cell)/DBC/TBC usw. heißen. Aber 
das Kind ist wohl in den Brunnen gefallen.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Rainer W. schrieb:
> "Multi" steht im allgemeinen Sprachgebrauch für "mehrere"/"viele" und
> umfasst damit eigentlich auch "Triple" und "Quad".
Das mag "allgemein" schon so sein, bei Flash wird da aber ganz genau 
unterschieden.

Rainer W. schrieb:
> Abgesehen davon sind diese Akronyme sowieso irreführend, da ein "TLC"
> Flash natürlich nicht 3 (wie es das T suggeriert), sondern 8 Level
> unterscheiden muss, ein "QLC" 16 Level.
Ich finde das (abgesehen von dem "Multi"-Ausrutscher) eher logisch: es 
ist 1 Bit bei "Single", es sind 2 Bits bei "Multi" (="Dual"), 3 Bits bei 
"Triple" bzw. 4 Bits bei "Quad", die in 1 Speicherzelle gespeichert 
werden können:
- 
https://www.corsair.com/de/de/explorer/diy-builder/storage/how-qlc-tlc-and-more-supercharge-your-ssds/

: Bearbeitet durch Moderator
von Rainer W. (rawi)


Lesenswert?

Lothar M. schrieb:
> Rainer W. schrieb:
>> "Multi" steht im allgemeinen Sprachgebrauch für "mehrere"/"viele" und
>> umfasst damit eigentlich auch "Triple" und "Quad".
> Das mag "allgemein" schon so sein, bei Flash wird da aber ganz genau
> unterschieden.

Eben nicht. Wenn die Begriff nicht aus irgendwelchen kurzsichtigen 
Technologiehypes entstehen würden, sondern eine genaue Beschreibung 
darstellen würden, dürfte es nie "MLC" heißen und das "L" hat da schon 
gar nichts zu suchen - soviel zum Thema "ganz genau".

Lothar M. schrieb:
> Ich finde das (abgesehen von dem "Multi"-Ausrutscher) eher logisch

Wenn da nicht auch noch der "Level"-Ausrutscher wäre. Ein QLC enthält 
Zellen mit 4 Bit und nicht Zellen mit 4 Leveln.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Lothar M. schrieb:
>> Abgesehen davon sind diese Akronyme sowieso irreführend, da ein "TLC"
>> Flash natürlich nicht 3 (wie es das T suggeriert), sondern 8 Level
>> unterscheiden muss, ein "QLC" 16 Level.
> Ich finde das (abgesehen von dem "Multi"-Ausrutscher) eher logisch: es
> ist 1 Bit bei "Single", es sind 2 Bits bei "Multi" (="Dual"), 3 Bits bei
> "Triple" bzw. 4 Bits bei "Quad", die in 1 Speicherzelle gespeichert
> werden können:

Ja, aber das sind Bits und nicht Level, so wie es der Name und die 
Abkürzung behaupten.

Anzahl Level = 2^Bits

Klingt bekannt, oder?

von Rainer W. (rawi)


Lesenswert?

Falk B. schrieb:
> Anzahl Level = 2^Bits
>
> Klingt bekannt, oder?

Und was bitte hat in dem Akronym dann das 'L' zu suchen?

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Rainer W. schrieb:
> Eben nicht.
Wenn du das so beharrlich sagst...

Aber wenn ich mit unseren Flash-Lieferanten spreche, dann haben die ein 
sehr festes Bild von dieser Einteilung. Und "Multi" bedeutet bei denen 
**immer** 2 Bit pro Zelle.

> Ein QLC enthält Zellen mit 4 Bit und nicht Zellen mit 4 Leveln.
Ja, lies nochmal ganz in Ruhe, was ich schrieb. Und sieh dir das Bild in 
meinem Link an.

Aber hier nochmal als Tabelle:
1
Single = 1 Bit pro Zelle   = 2 zu speichernde Pegel 
2
Multi  = 2 Bits pro Zelle  = 4 zu speichernde Pegel
3
Triple = 3 Bits pro Zelle  = 8 zu speichernde Pegel
4
Quad   = 4 Bits pro Zelle  = 16     --"--
5
6
Und eine Prognose für die Zukunft:
7
8
Penta  = 5 Bits pro Zelle  = 32     --"--
9
Hexa   = 6 Bits pro Zelle  = 64     --"--
10
usw.usf.
Allerdings ist nach Aussage der Flashhersteller mit QLC Schluss, danach 
kommt 3D-QLC.

Rainer W. schrieb:
> Und was bitte hat in dem Akronym dann das 'L' zu suchen?
Schon bei den Single-Level-Cell geht das schief.
Denn was ist das für ein Speicher, der nur 1 Pegel speichern kann? 
Speichert der dann nur '0' oder nur '1'?

: Bearbeitet durch Moderator
von Rainer W. (rawi)


Lesenswert?

Lothar M. schrieb:
> Ja, lies nochmal ganz in Ruhe, was ich schrieb. Und sieh dir das Bild in
> meinem Link an.

Die 2er-Potenzen brauchst du mir nicht aufzuschreiben ;-)
Wofür steht denn deiner Meinung nach das 'L', wenn nicht für "Level", 
was ja offensichtlich nicht passen kann?

> Denn was ist das für ein Speicher, der nur 1 Pegel speichern kann?
> Speichert der dann nur '0' oder nur '1'?
Ganz meiner Meinung - die Bezeichnung bezieht sich eben NICHT auf die 
Pegel (engl. Level) sondern auf die Bits und folglich müsste es 
logischerweise SBC, DBC,TBC und QBC (BX = Bit Cells) heißen und nicht 
wie in deinem Link.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Rainer W. schrieb:
>> Anzahl Level = 2^Bits
>>
>> Klingt bekannt, oder?
>
> Und was bitte hat in dem Akronym dann das 'L' zu suchen?

L wie Lapsus ;-)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Rainer W. schrieb:
> die Bezeichnung bezieht sich eben NICHT auf die Pegel
Ja, das kann ich aber jetzt auch nicht mehr ändern, dass das irgendwann 
mal wer verbockt hat. Ich kann nur versprechen, das beim nächsten 
Treffen mit unserem Distri mal anzusprechen. Allein: ich glaube, mein 
Hebel ist zu klein, um das jetzt noch geradezuziehen.

Aber zum Glück geht es hier im Thread ja um EEPROMs, die eine völlig 
andere Struktur haben.

von Udo K. (udok)


Lesenswert?

Es geht hier um EEPROM und kleine uC, und nicht um Flash MLC/TLC/QLC. 
Danke für die Erfahrungen aus der Praxis.  Ich nehme mal mit dass es mit 
Dauerlesen keine Probleme gibt wenn VCC stabil ist und Pullups an den 
wichtigen Leitungen dran sind. @Rick und W25Q128:  War warm == heiss ( > 
85°C )?

von Falk B. (falk)


Lesenswert?

Udo K. schrieb:
> @Rick und W25Q128:  War warm == heiss ( >
> 85°C )?

Das klingt nach Latch Up. Da ist was beim Einschalten schief gegangen. 
Oder deine Versorgungsspannung wurde mal kurz und stromstark verpolt, 
damit kann man EEPROMs auch löschen.

von Harald K. (kirnbichler)


Lesenswert?

Lothar M. schrieb:
> Ja, das kann ich aber jetzt auch nicht mehr ändern, dass das irgendwann
> mal wer verbockt hat.

Das gibt es öfter, als einem lieb ist. Vor allem die Unsitte, die 
wesentliche Information wegzulassen und nur einen an sich nachrangigen 
Bestandteil zu benennen, die sorgt immer wieder für viel Freude.

"Oh, das ist ein NAND".

"Ein 74HC00?"

"Nein, 2 GByte".

Ähnlich wird mit den Begriffen "Kartusche" oder "Aggregat" umgegangen.

Gerade die Amis sind da besonders klasse, die haben sogar auf diesem 
Konzept aufbauende Maßeinheiten: "Micron", "Thou" und "Mil".

von Soul E. (soul_eye)


Lesenswert?

Warum heisst jedes zweite Kunststoffteil "bezel"? Und die Fertigung 
nennt jedes selbstgebaute Dingsbums "jig".

von Rick (rick)


Lesenswert?

Udo K. schrieb:
> W25Q128:  War warm == heiss ( > 85°C )?
Schwer zu sagen. Eher so zwischen 60°C und 75°C.

Falk B. schrieb:
> Das klingt nach Latch Up. Da ist was beim Einschalten schief gegangen.
> Oder deine Versorgungsspannung wurde mal kurz und stromstark verpolt,
> damit kann man EEPROMs auch löschen.
Das mit der Versorgungsspannung kann ich ausschließen. Die waren auch 
nicht gelöscht, sondern da muß ein Bit gekippt sein und die Prüfsumme 
(FPGA-Bitstream) stimmte nicht mehr. Auf einen Neustart im Rack hatten 
die dann keine Lust, aber auf dem  Labortisch ging es z.T. wieder.
Manche konnte man neu programmieren und es ging noch mal eine Weile.
Inzwischen lasse ich den Flash aber tauschen und habe dann Ruhe.

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.