Speichern des RAM-Speichers beim Schreiben auf NAND-Flash mit einer Seitengröße von 2 KB

10

Ich schreibe einen Treiber für den Samsung K9WAG08U1D NAND flashChip. Die Spezifikation des Speicherchips erwähnt, dass er eine Seitengröße von 2048 Bytes (2 KB) hat. Ich verwende eine TI MSP430F2619mit 4096 Bytes (4 KB) RAM. Dies bedeutet, dass ich einen 2k-Speicherpuffer zuweisen muss, nur um in Flash zu schreiben. Meine Anwendung ist ein Protokollkonverter und benötigt daher einen zusätzlichen Puffer für die Hin- und Herübertragung. Bitte schlagen Sie mir einen besseren Ansatz vor, um den RAM-Bedarf aufgrund der Größe der Flash-Seite zu reduzieren.

Prasad
quelle

Antworten:

7

Sie müssen das Seitenregister nicht auf einmal ausfüllen.

Sie beginnen einen Seitenschreibvorgang (dh den Vorgang "Seitenprogramm"), indem Sie den Befehl zur seriellen Dateneingabe ( 0x80), die Spaltenadresse und die Zeilenadresse schreiben . Anschließend übertragen Sie die Daten in das Seitenregister (bis zu 2112 Byte). Diese Übertragung kann in Blöcke aufgeteilt werden, mit einer Verzögerung zwischen den benötigten Blöcken.

Wenn Sie das Seitenregister ausgefüllt haben, beginnen Sie die Übertragung vom Seitenregister zum Array mit dem Befehl Page Program Confirm ( 0x10).

Patrick
quelle
Bitte beachten Sie, dass NAND-Blitze normalerweise auf 4 Teilschreibvorgänge pro Seite beschränkt sind
1
@Jacen Ich beziehe mich nicht auf ein teilweises Schreiben pro Seite. Dies erfolgt durch eine separate Befehls- / Adress- / Daten- / Befehlssequenz pro Teil. Ich beziehe mich auf das Aufbrechen der Übertragung in das Seitenregister, das bei Bedarf ein "Block" pro Byte sein kann.
Patrick
Grundsätzlich wartete meine aktuelle Treiberlogik darauf, dass der gesamte 2K-Puffer im RAM gefüllt war, und schrieb dann in Flash. Aber jetzt kann ich auch mindestens 1 Byte RAM-Puffer haben.
Oh ja, du hast recht Patrick, ich habe diese Option vergessen.