Was ist Nand Flash und Bad Block?
Oct 25, 2022
1 NAND-FLASH
1.1 Einführung des NAND-FLASH-Speichers
NAND-FLASH-Speicher, Flash-Speicher des chinesischen Namens. Es hat seinen Namen wegen seiner schnellen Löschgeschwindigkeit.
NAND FLASH wurde von Herrn Fujio Masuoka von der japanischen Toshiba Group erfunden. Anders als bei anderen Speichergeräten werden NAND-FLASH-Datenleitungen und Adressleitungen gemultiplext, und Adressleitungen können nicht für zufällige Adressierung verwendet werden. Daher verwendet NAND FLASH Seitenseiten als Leseeinheit (im Allgemeinen hat eine einzelne Seite 2 KBytes) und Blöcke als Löscheinheit. (Im Allgemeinen ist ein einzelner Block 128 KB oder 256 KB groß). Nach dem Senden eines Löschbefehls löscht NAND FLASH alle Blöcke gleichzeitig auf 1, und alle darin enthaltenen Inhalte werden zu 0xFF. Da die Löschzeit sehr kurz ist, geht es blitzschnell. Daher nennen wir diesen Speicher FLASH-Speicher.
1.2 Hardwareimplementierungsmechanismus von NAND FLASH
Die Grundeinheit von NAND FLASH ist ein MOSFET mit schwebendem Gate.
Daten werden in Form von elektrischer Ladung in Flash-Speicherzellen gespeichert. Die Menge der gespeicherten Ladung hängt von der an das externe Gate angelegten Spannung ab. Die Darstellung der Daten wird dadurch dargestellt, ob die Spannung der gespeicherten Ladung einen bestimmten Schwellenwert Vth überschreitet, und wenn die gespeicherte Ladung ausreicht und den Schwellenwert Vth überschreitet, stellt dies 1 dar. Zum Schreiben von 0 ist es zu entladen es, und die Ladung wird auf weniger als Vth reduziert, was 0 bedeutet.
2 Schlechter Block
2.1 Definition eines fehlerhaften Blocks
Da der NAND-Flash-Prozess die Zuverlässigkeit der Leistung des NAND-Speicherarrays während seines Lebenszyklus nicht garantieren kann, treten während der Produktion und Verwendung von NAND fehlerhafte Blöcke auf. Die Eigenschaften fehlerhafter Blöcke sind: Beim Programmieren/Löschen dieses Blocks können einige Bits nicht hochgezogen werden, was zu Fehlern bei Seitenprogrammierungs- und Blocklöschoperationen führen wird.
2.2 Klassifizierung fehlerhafter Blöcke: fehlerhafter Werksblock FBB & gebrauchter fehlerhafter Block GBB
(1) FBB: Factory Bad Block, der werkseitig fehlerhafte Block, der fehlerhafte Block, der gerade die Fabrik verlassen hat, wird als maskierter fehlerhafter Block oder anfänglicher fehlerhafter/ungültiger Block bezeichnet. Wenn NAND-Flash das Werk verlässt, gibt es aufgrund des Herstellungsprozesses eine gewisse Anzahl fehlerhafter Blöcke. Gleichzeitig testet die Originalfabrik den NAND-FLASH, bevor sie die Fabrik verlässt, und die für den Test verwendeten Blöcke können von der Originalfabrik auch als fehlerhafte Blöcke markiert werden.
Vor dem Verlassen des Werks markiert das Originalwerk die fehlerhaften Blöcke. Die spezifische Markierung besteht darin, dass für den gewöhnlichen NAND-Flash mit einer Seitengröße von 2 KB die Markierung für fehlerhafte Blöcke bei NAND-Flash im Allgemeinen auf der ersten Seite jedes Blocks angeordnet ist. Das erste Byte des Seitenersatzbereichs. Konkret können Sie das Datenblatt verschiedener Produkte abfragen. Wenn es nicht 0xFF ist, bedeutet dies, dass es sich um einen fehlerhaften Block handelt. Dementsprechend sind alle normalen Blöcke, guten Blöcke und alle darin enthaltenen Daten 0xFF.
(2) GBB: Grown Bad Block, Verwendung von schlechten Blöcken. Da die Lösch- und Schreiblebensdauer von NAND-Flash begrenzt ist (im Allgemeinen nicht mehr als 100,000 Mal), treten bei der Verwendung von NAND-Flash nach einer bestimmten Nutzungsdauer auch fehlerhafte Blöcke auf . Wenn ein Blocklösch- oder Seitenprogrammierungsfehler gefunden wird, kann der Block als fehlerhafter Block markiert werden. Um mit den inhärenten Informationen über schlechte Blöcke konsistent zu sein, wird das erste Byte (Byte) des Ersatzbereichs auch mit anderen Werten als 0xFF markiert.
2.3 Bad-Block-Tabelle:
Der erste Block eines Blitzes muss gut sein, wenn er das Werk verlässt, sonst bedeutet dies, dass der gesamte Blitz nicht verwendet werden kann. Denn im Allgemeinen wird der erste Block verwendet, um die Bad-Block-Tabelle (BBT, Bad Block Table) zu speichern. Aufgrund des Arbeitsmechanismus der Verwaltung fehlerhafter Blöcke (Bad Block Management) im NAND-Flash-Treiber unter der Linux-Kernel-MTD-Architektur und dem NAND-Flash-Treiber von UBOOT werden Sie nach dem Laden des Treibers aktiv zum Überspringen aufgefordert, wenn Sie keine Parameter hinzufügen der Bad-Block-Scan. Wenn dies der Fall ist, scannt es aktiv nach fehlerhaften Blöcken und erstellt die erforderliche BBT für die spätere Verwaltung fehlerhafter Blöcke.
2.4 Anzahl und Ort der fehlerhaften Blöcke
Die ursprüngliche NAND-FLASH-Fabrik wird einen Standard für die Anzahl und Position fehlerhafter Blöcke haben. Die Originalfabrik verspricht im Allgemeinen, dass die Anzahl der fehlerhaften Blöcke 2 Prozent nicht überschreitet, aber die Position der fehlerhaften Blöcke wird nicht garantiert (aber der erste Block muss gut sein, wenn er die Fabrik verlässt. , weil der erste verwendet wird BTT speichern). Beispielsweise hat ein NAND-Chip 2048 Blöcke, 2048*0.02=40.96, sodass die Anzahl der fehlerhaften Blöcke 40 nicht überschreitet. Aber wo die fehlerhaften Blöcke erscheinen, ob sie kontinuierlich sind oder zufällig, es gibt keine Garantie.
2.5 Der Einfluss von schlechten Blöcken auf gute Blöcke
Ein schlechter Block beeinflusst die Leistung guter Blöcke nicht, da er durch Auswahlgatter von den Bitleitungen isoliert ist.)
2.6 Erkennung fehlerhafter Blöcke
An diesen als "schlechte Blöcke" markierten Blöcken wird eine "Lösch"-Operation durchgeführt. Wenn der Block Erase-Fehler auftritt, beweist dies, dass der Block ein wirklich schlechter Block ist.
2.7 Hinweise zum Löschvorgang
Tatsächlich können wir auch markierte fehlerhafte Blöcke löschen. Nachdem sie auf diese Weise zwangsweise gelöscht wurden, existiert die Information über fehlerhafte Blöcke nicht mehr. Bei werkseitig fehlerhaften Blöcken wird im Allgemeinen nicht empfohlen, die markierten Informationen zu löschen.
Es gibt in UBOOT einen Befehl namens "nand scrub", der den gesamten Inhalt im Block löscht, einschließlich der Bad-Block-Markierung, unabhängig davon, ob es sich um die Fabrik- oder die neue Markierung handelt, die im späteren Verwendungsprozess erscheint. Es wird im Allgemeinen nicht empfohlen, dies zu verwenden. Wenn die NAND-FLASH-Fabrik produziert wird, werden NAND-Bad-Blöcke in einem relativ weiten Temperatur- und Spannungsbereich getestet und markiert. Diese schlechten Blöcke können noch unter einer bestimmten Temperatur oder Spannung arbeiten, können aber zu einem anderen Zeitpunkt geändert werden, wenn sich die Bedingungen ändern. scheitern und zu einer potenziellen tickenden Zeitbombe werden. Wenn die von der ursprünglichen Fabrik markierten fehlerhaften Blöcke gelöscht werden, kann es beim Schreiben und Speichern von Daten leicht zu Datenverlust kommen.
Es ist besser, "nand erase" zu verwenden, um nur gute Blöcke zu löschen, für Blöcke, die bereits als schlechte Blöcke markiert sind, löschen Sie sie nicht.
3 Schlechte Blockverwaltung
Der Controller von Device oder FLASH verwaltet fehlerhafte Blöcke, was BBM (Bad Block Management) ist. Wir werden dies später hinzufügen.
Anmerkung
1 Warum ist ein guter Block mit 0xff gekennzeichnet: Da das Löschen von Nand Flash alle Bits des entsprechenden Blocks auf 1 ändern soll, kann während des Schreibvorgangs jedes Bit des Chips nur von 1 geändert werden zu 0, aber nicht. Wechseln Sie von 0 zu 1. 0XFF bedeutet, dass alle bis 11111111 gelöscht werden können. Es zeigt an, dass es erfolgreich gelöscht werden kann, und es ist ein guter Block.
———————————————
Urheberrechtserklärung: Dieser Artikel ist ein Originalartikel des CSDN-Bloggers „Alexander{{0}}Lai“ und folgt der Urheberrechtsvereinbarung CC 4.0 BY-SA. Bitte fügen Sie den ursprünglichen Quelllink und diese Erklärung zum Nachdruck bei.







