Wie oft kann Flash überschrieben werden, bevor ein Löschen erforderlich ist?

Bei Flash-Speichern ist es nur möglich, zu schreiben, indem Bits aus ihrem gelöschten (gesetzten) Zustand gelöscht werden, und die einzige Möglichkeit, ein Bit zu setzen, besteht darin, den Bereich zu löschen, der es enthält. Wenn Sie nur Bits löschen müssen, können Sie einen Flash-Abschnitt hypothetisch so oft neu schreiben, wie Bits in diesem Abschnitt vorhanden sind, bevor Sie ihn löschen müssen. Ich habe jedoch festgestellt, dass die SAM-D-Teile von Atmel eine strengere Grenze dafür festlegen. Abschnitt 37-12 des Datenblatts der SAM D21/DA1-Familie:

Beachten Sie, dass bei dieser Flash-Technologie maximal 8 aufeinanderfolgende Schreibvorgänge pro Zeile zulässig sind. Sobald diese Zahl erreicht ist, ist ein Zeilenlöschen obligatorisch.

Ich habe ein paar andere Datenblätter für andere MCUs und einige Flash-Speicher-ICs durchgesehen, und bisher ist das SAM D21-Datenblatt der einzige Ort, an dem ich eine solche Grenze gesehen habe. Da das Atmel-Datenblatt dies nur als Hinweis und nicht als qualifizierte Spezifikation angibt, bin ich mir nicht sicher, ob diese Grenze auf Worst-Case-Bedingungen (wie Spannung, Temperatur oder Anzahl der Zyklen) basiert. Ich nehme an, dass diese Grenze mit der verwendeten spezifischen Technologie variieren kann (daher die Erwähnung in der Atmel-Notiz), aber in diesem Fall weiß ich nicht, welche spezifischen Eigenschaften des D21-Blitzes diese Grenze auferlegen.

Ich gehe nicht davon aus, dass es vernünftig ist zu erwarten, dass Sie tatsächlich jedes einzelne Bit in einer Region einzeln löschen können, aber wenn die Anzahl der Neuschreibungen allgemein begrenzt ist, bevor ein Löschen erforderlich ist, konnte ich keine Referenz dafür finden Es.

Es gibt eindeutig eine untere Grenze dafür, die durch die Art und Weise auferlegt wird, wie Flash im Allgemeinen organisiert ist: insbesondere die Tatsache, dass die minimale Größe, die auf einmal gelöscht werden kann, im Allgemeinen ein Vielfaches der minimalen Größe ist, die auf einmal geschrieben werden kann. Zum Beispiel schreibt der oben erwähnte SAM D21 pro "Seite", aber löscht pro "Reihe", und da es vier Seiten pro Reihe gibt, muss es möglich sein, mindestens viermal in eine gegebene Reihe zu schreiben, bevor ein Löschen erforderlich ist, wenn überhaupt des Blitzes sofort verwendet wird.

Gibt es über diese untere Grenze hinaus eine allgemeine Regel oder Richtlinie für die minimale oder maximale Anzahl von Malen, mit denen ein Flash-Teil zwischen den Löschvorgängen sicher neu geschrieben werden kann, wenn keine eindeutige Datenblattspezifikation vorliegt? Welche spezifischen Eigenschaften der Speichertechnologie würden diese Grenze beeinflussen, wenn überhaupt?

Zur Verdeutlichung bearbeiten: Mir geht es hier nicht um die allgemeine Schreib- / Löschausdauer, die normalerweise gut spezifiziert ist und sich von der Spezifikation zum erneuten Schreiben pro Löschen unterscheidet, nach der ich frage. Und für die Zwecke dieser Frage können wir davon ausgehen, dass alle Umschreibungen innerhalb der vom Flash unterstützten Schreibgröße liegen.

Ich habe kürzlich mit einem ST-Teil gearbeitet (ich glaube, es war ein STM32F427), der nur einen Flash-Schreibvorgang von 0xFFFF auf einen bestimmten Wert und dann von diesem Wert auf 0x0000 zulässt. Alles andere erforderte ein Zurücklöschen auf 0xFFFF. Sogar so etwas wie 0xFFFF -> 0xAAAA, dann würde ein Versuch, 0x5555 zu schreiben (in Erwartung eines Endergebnisses von 0x0000), abgelehnt werden.
Ich habe mit dem ATSAM4S gearbeitet und es hat zwei Bewertungen: 10.000 Zyklen bei 85 ° C und 50.000 Zyklen bei 50 ° C. Ich habe auch mit einem pic16f887 gearbeitet, bei dem die maximalen Schreibzyklen 1 Million betrugen. Ich habe mehr als 1 Million Mal in denselben Sektor geschrieben und es funktioniert immer noch einwandfrei. Diese Bewertung ist nur eine Garantie dafür, dass es mindestens so viele Zyklen hält.
@brhans danke, hast du eine Referenz dafür oder war es etwas, das du beim Testen gefunden hast? Haben Sie festgestellt, dass es sich um eine Hardwareeinschränkung oder vielleicht um eine Einschränkung in einer Bibliothek handelt, die Sie verwendet haben? Würde auch gerne wissen, ob es einen Schreibvorgang von 0xFFFF -> 0xFFAA -> 0xAAAA oder ähnlichem akzeptiert hätte, wobei der Schreibvorgang nur Bits löschen und nicht versuchen würde, sie zu setzen. Ich wäre nicht sauer auf ein Hardware- oder Software-Limit, das beim Versuch, ein Bit im Flash zu setzen, einen Fehler auslöst.
@ bunker89320 Danke, aber die Frage bezieht sich nicht auf lebenslange Lösch- / Schreibzykluslimits, wie Sie sprechen (die in der Regel ziemlich gut angegeben sind, wenn auch sehr konservativ), sondern auf die Anzahl der Schreibvorgänge, die zwischen den Löschvorgängen zulässig sind.
Ich bin mir nicht sicher, ob es genau das ist, was Sie hier treffen, aber achten Sie darauf, dass der ECC-Flash, wie er bei einigen SAMDs verwendet wird, im Allgemeinen nicht überschrieben werden kann und ein korrektes Zurücklesen liefert und möglicherweise nicht einmal mit Wortgranularität beschreibbar ist (ich erinnere mich, dass er ausgeführt wurde in einen Fall, der Doppelwörter erforderte ...)
Ich war verwirrt über das Gerät - es war eines der STM32L0-Familie, aber ich kann mich nicht erinnern, welches. Das Verhalten war besonders ärgerlich, da selbst der Versuch, etwas wie 0xFFFA in 0xFFF8 zu ändern (ein einzelnes Bit löschen), fehlschlagen würde, während 0xFFFF in irgendetwas gut funktionieren würde und alles in 0x0000 auch gut funktionieren würde, aber wenn ein oder mehrere Bits gelöscht würden dann der einzige Schreibvorgang, der erfolgreich war, war 0x0000.
@brhans STM32L0 haben ECC-Flash, Sie können jeweils nur ein ganzes Wort gültig schreiben und es nicht ändern, da dies das Ändern von ECC-Bits auf unmögliche Weise erfordern könnte. Außerdem wird ein solcher Flash typischerweise auf Nullen gelöscht, im Gegensatz zu den Einsen des herkömmlicheren NOR-Flashs.

Antworten (1)

Ich habe kürzlich Erfahrungen mit dem Samsung K9F8G08UXm gemacht. Dies ist ein 8-Gbit-Gerät, das wie folgt organisiert ist:

1 Seite = 4096 Haupt + 128 Extra = 4224 Bytes

1 Block = 64 Seiten

1 Gerät 4096 Blöcke

Sieht ungefähr so ​​aus:

Geben Sie hier die Bildbeschreibung ein

Das Gerät wird auf Blockbasis oder 64 Seiten gleichzeitig gelöscht.

Sobald ein Block gelöscht wurde, kann jede Seite innerhalb dieses Blocks einmal beschrieben werden. Eine Seite kann nicht neu geschrieben werden, es sei denn, der gesamte Block wird gelöscht. Sie können zu unterschiedlichen Zeiten auf verschiedene Seiten innerhalb eines Blocks schreiben; das heißt, alle Seiten innerhalb eines Blocks müssen nicht gleichzeitig geschrieben werden.

Dies ist NAND-Flash; Es unterscheidet sich drastisch von dem MCU-NOR-Flash, nach dem gefragt wird. Das hat wirklich nichts mit der Frage dieser Seite zu tun.
Der Titel der Frage sagt nichts über den spezifischen Flash-Typ aus, scheint aber eine Frage zu Flash im Allgemeinen zu sein. Und im Text der Frage von OP gibt es nichts, was auf die Art des betroffenen Flash hinweist. Das erste Mal, dass NOR auf dieser Seite auftaucht, ist in Ihrem Kommentar.
Unwahr. Die Frage selbst spricht nur und speziell von im Flash eingebauter MCU. Das ist NOR-Flash. Du hast etwas ganz anderes gepostet.