Hallo, NAND Flashs haben ja die unangenehme Eigenschaft nur Page-weise beschreibbar zu sein. Ein neu Schreiben der Page erfordert, dass vorher der ganze Block zu dem die Page gehört gelöscht wird. Hintergrund: Im unbeschriebenen Zustand haben alle Bits den Zustand "logisch Eins". Beim Schreiben einer Page werden Informationen durch logische Nullen gespeichert. Nur mit dem Löschen eines Blocks können alle Bits wieder auf "logisch Eins" gesetzt werden. Frage 1: Ich hab nun gelesen, dass es möglich ist eine Page aber auch in 3 Schritten zu beschreiben. Hat das was damit zu tun, dass mit Hilfe von einem Pointer in der NAND-Logik drei Bereiche innerhalb einer Page adressiert werden können (Halfpage 1, Halfpage 2, Spare-Bereich)? Frage 2: Wozu ich nirgends eine Aussage finden konnte ist, warum ich nicht eine Page mittels "OR" Byteweise aktualisieren kann? Das würde es überflüssig machen Daten solange im RAM zu halten bis die Größe einer Page erreicht ist (512 Byte). Es geht speziell um ein 128MBit NAND Flash von STMicroelectronics siehe http://www.st.com/stonline/products/literature/ds/10058.pdf. Mich interessiert besonders eine Antwort zu Frage 2. Gruß Kito
Hast Du das von Dir zitierte Datenblatt auch gelesen? Für mich haben 2 Minuten genügt, um dort drin die Antworten auf Deine Fragen zu finden!
Wolfgang Mües wrote: > Hast Du das von Dir zitierte Datenblatt auch gelesen? Ja hab ich. Auf welcher Seite hast Du die Antwort zu Frage 2 gefunden? > Für mich haben 2 Minuten genügt, um dort drin die Antworten auf Deine > Fragen zu finden! ...
Darf ich kurz fragen was mit:
>..."OR" Byteweise aktualisieren...
gemeint ist?
Stehe gerade auf dem Schlauch.
Gruss
Oops
Oops wrote: > Darf ich kurz fragen was mit: >>..."OR" Byteweise aktualisieren... > gemeint ist? Ich meine damit "Bit twiddling". Siehe Link (hab ich erst gestern gefunden): http://www.linux-mtd.infradead.org/archive/tech/nand.html Schlußfolgerung: Frage 1: max. 3 mal aktualisieren einer Page wegen "partial page program restriction" Frage 2: " ..."OR" Byteweise aktualisieren..." = "Bit twiddling" ist nur bei NOR-Flash möglich. Gruß Christian PS: Manchmal ist man sich eben unsicher, ob man etwas richtig verstanden oder übersehen hat...
Wenn man sich mal näher mit der Architektur von NAND-Flashes beschäftigt hat, dann ist klar, dass ein NAND immer nur eine GANZE Page beschreiben kann. Es gibt keine Logik zum Beschreiben einzelner Bits. Daraus folgt auch, das das Verunden (um weitere Bits in einem Byte gezielt auf "0" zu setzen) genauso möglich oder unmöglich ist wie das Schreiben ganzer Bytes, denn im NAND-Flash sind alle Bits hintereinander angeordnet wie in einem Schieberegister. Wenn man den gleichen Bereich nun mehrmals hintereinander beschreibt, brennen sich die "0"-Bits immer stärker ein. Irgendwann ist es nicht mehr möglich, sie durch Löschen wieder sicher auf "1" zu bringen. Deshalb gibt es die maximale Anzahl von Schreibvorgängen. Bei den "alten" SLC-Flashes sind das 3 Stück. Bei den neusten MLC-Flashes darf man nur 1 mal schreiben. Aus diesem Grund arbeiten praktisch alle neueren NAND-Flash-Treiber so, dass eine einzelne Page NUR EINMAL beschrieben wird. Jede Page enthält einen Teil Verwaltungsinformationen, der sagt, welche Daten dort drinstehen und einen Revisionszähler. Beim Start der Software werden alle Blöcke ausgelesen. Wenn ein Block die gleichen Daten enthält wie ein schon vorher gefundener, aber mit höherem Revisionsstand, dann ersetzt er den alten Block. Das bedeutet, das NAND-Flash-Filesysteme in der Regel folgende Randbedingungen haben: a) eine große Verwaltungsstruktur über alle Blöcke im RAM. b) ein Parser, der beim Start das ganze Flash liest (gähn). c) ein Hintergrundprozess, der Blöcke mit veralteten Pages aufräumt. Ganz schön heavy. Wenn Du selbst sowas machen willst, und in endlicher Zeit zum Ziel kommen willst, würde ich Dir empfehlen, eine Tabelle mit der Zuordnung von logischer zu physikalischer Pageadresse in einem extra EEPROM zu speichern.
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.