Hallo, ich habe hier einen SST25VF032B von Microchip, den ich möglichst schonend beschreiben will: http://ww1.microchip.com/downloads/en/DeviceDoc/20005071B.pdf Gibt es da Ansätze/bewährte Algorithmen, um die verschiedenen Seiten gleichmäßig zu nutzen? Danke! Peter
http://www.micron.com/~/media/documents/products/technical-note/nand-flash/tn2961_wear_leveling_in_nand.pdf http://www.micron.com/~/media/documents/products/technical-note/nand-flash/tn2942_nand_wear_leveling.pdf http://www.st.com/st-web-ui/static/active/en/resource/technical/document/user_manual/DM00091013.pdf http://www.atmel.com/Images/doc32194.pdf Oder nimmst halt SPI FRAM von Cypress FM25V10-G etc. Den kannst du Quasi unendlich oft beschreiben. Gibts auch im SO8, allerdings nur max 1Mbit
Danke für die Antworten. Ich werde mir ein einfaches System selber schreiben, indem ich einfach den Sektor wechsel, sobald ein Schreibfehler auftritt. Dabei stellt sich die Frage: Was passiert, wenn ein Schreibfehler auftritt? Wird dann der komplette Flash unbrauchbar? Ich denke nicht, sondern nur der Sektor, oder?
Peter schrieb: > indem ich einfach > den Sektor wechsel, sobald ein Schreibfehler auftritt Ich glaube nicht, dass das genügt - es ist ja durchaus möglich, dass bei einer verbrauchten Zelle zwar noch kein Fehler beim Schreiben auftritt, aber beim späteren Lesen. Besser von vornherein verteilen, z.B. jeden Tag einen neuen Sektor benutzen, und das reihum. Georg
Werden sich Probleme mit einer Zelle gleich als Schreibfehler äußern? Wird die Zelle nicht erst die Fähigkeit verlieren ihre Daten über längere Zeit zu halten und sich erste Ausfälle durch Lesefehler äußern?
Georg schrieb: > Ich glaube nicht, dass das genügt - es ist ja durchaus möglich, dass bei > einer verbrauchten Zelle zwar noch kein Fehler beim Schreiben auftritt, > aber beim späteren Lesen. Das kann ich prüfen, indem ich nach dem Schreiben sofort zurücklese.
Steffen Rose schrieb: > Werden sich Probleme mit einer Zelle gleich als Schreibfehler äußern? > Wird die Zelle nicht erst die Fähigkeit verlieren ihre Daten über > längere Zeit zu halten und sich erste Ausfälle durch Lesefehler äußern? Keine Ahnung wie ein Flash das macht. Deshalb stell ich ja die blöden Fragen.
Peter schrieb: > Das kann ich prüfen, indem ich nach dem Schreiben sofort zurücklese. Da kannst du aber nicht den Datenerhalt nach einer bestimmten Zeit prüfen. Das ist meist der Knackpunkt. Du schreibst was rein, liest es zurück und es ist okay. Liest du die Zelle später nochmal, kann schon ein Datenverlust eingetreten sein, weil zum Beispiel ein Bit gekippt ist. Daher ist es wirklich besser, nicht erst auf einen Fehler zu warten, sondern die Daten beim Schreiben zu verteilen und damit den Flash gleichmäßig zu "abzunutzen".
Ich hab das in einer Anwendung als Ringpuffer gemacht. D.h. der Flash mit seinen einzelnen Seiten (Pages) wird fortlaufend wie ein Endlosband beschrieben, d.h. wenn man an der obersten Page angekommen ist, fängt man unten wieder an. In jeder Page steht bei mir ein kompletter Datensatz incl. 32 Bit Seriennummer. Damit kann man nach dem Einschalten die Page mit der höchsten Seriennummer raussuchen und dort dann weiter schreiben. Bei garantierten 100k Schreibzyklen pro Page kann man Page x 100k mal den Datensatz schreiben. Als zusätzliche Fehlersicherung empfiehlt sich bei eher wichtigen Daten eine CRC, in noch wichtigeren Fällen eine ERC (error correction code).
Superior Reliability– Endurance: 100,000 Cycles (typical)– Greater than 100 years Data Retention Wie oft schreibst Du denn auf eine Zelle?
Pete K. schrieb: > Superior Reliability– Endurance: 100,000 Cycles (typical)– Greater than > 100 years Data Retention > > Wie oft schreibst Du denn auf eine Zelle? Wenn man unclever für das Schreiben jedes einzelnen Wertes innerhalb des Sectors diesen löscht und neu beschreibt, vervielfachen sich die Zyklen schnell.
Habe eine Frage zu diesem Thema. Sie beschäftigt mich schon länger, habe aber noch nichts darüber gelesen oder gehört: Es geht um NOR-Flash-Speicher. Im gelöschten Zustand steht bekannlich "FF FF FF..." im Speicher. Jetzt kann ich z.B. den Speicher mit "55 AA 00..." überschreiben. Meiner Theorie nach könnte ich doch anschließend, wenn ich wollte, ohne weiteren Löschvorgang den Speicher mit "11 22 00..." überschreiben. Theoretisch würde ich dabei auch keinen weiteren Zyklus verbrauchen. Ist das generell zulässig, nicht empfohlen oder sogar strengstens verboten? Wer weiß das?
Detlef Weidner schrieb: > Ist das generell zulässig, nicht empfohlen oder sogar strengstens > verboten? Kommt auf den Chip an. Manchmal darf man es, manchmal nicht, manchmal nur komplett mit 0 überschreiben.
Detlef Weidner schrieb: > Ist das generell zulässig, nicht empfohlen oder sogar strengstens > verboten? Das ist überhaupt nicht verboten oder so, sondern sogar ausgesprochen empfehlenswert, um damit ungültig gewordene Daten zu markieren. Wenn man nämlich ein fehlertolerantes Flash-Dateisystem entwickelt, muss man auch damit rechnen, dass der Strom während des Löschens von Blöcken ausfallen kann. Diese sind dann schon mehr oder weniger "angelöscht". Wenn man einen Ringspeicher realisiert und alte Blöcke nutzen will, kann man wie folgt vorgehen: - In Block <n> zwei auf 1 stehende Statusbits reservieren. - Statusbit 1 auf 0 setzen und damit signalisieren: Der Löschvorgang für Block <n+1> wurde gestartet. - Block <n+1> löschen - Block <n+1> beschreiben; Statusbits auf 1 lassen - Anschließend das Statusbit 2 von Block <n> auf 0 setzen und damit signalisieren, dass Block <n+1> gültige Daten beinhaltet.
Peter schrieb: > Ich werde mir ein einfaches System selber schreiben, indem ich einfach > den Sektor wechsel, sobald ein Schreibfehler auftritt. Flash ist per definitionem kaputt, wenn die spezifizierte data retention time nicht mehr eingehalten wird. Wenn Du mit weniger zufrieden bist, weil Deine Daten vielleicht nach sechs Monaten schon obsolet sind, kannst Du von einer deutlich höheren Nutzbarkeit ausgehen. Einen Fehler beim Rücklesen direkt nach dem Schreiben wirst Du erst bekommen, wenn der Speicher völlig hinüber ist. Vorher sinkt die Zeit, in der die Daten auslesbar werden, d.h. Du bekommst schon nach einem Jahr, einem Monat oder einer Woche falsche Werte zurück. > Dabei stellt sich die Frage: Was passiert, wenn ein Schreibfehler > auftritt? Wird dann der komplette Flash unbrauchbar? Ich denke nicht, > sondern nur der Sektor, oder? Nur die betroffene Zelle, bei NOR-Flash ist das ein bit.
Heiner schrieb im Beitrag #4276544:
> Tipp:lesen lernen.
Und nicht vergessen: bei FRAM zählt lesen auch als schreiben! Die
1T1C-Zellen werden nach dem (destruktiven) Auslesen refreshed, so dass
Lese- und Schreibzyklen gemeinsam zur Alterung beitragen. Daher kann je
nach Anwendung EEPROM haltbarer sein
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.