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?
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.
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.
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.
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!
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.
„Read Disturbance“ gibt es nur bei MLC Flash als Datenspeicher.
Bei Flash als Programmspeicher oder EEPROM ist ein permanentes Lesen vorgesehen und daher unproblematisch.
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.
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.
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.
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?
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.
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.
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:
"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".
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.
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.
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'?
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.
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.
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 )?
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.
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.
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.