Forum: Mikrocontroller und Digitale Elektronik Ansteuerung NAND Flash


von Stampede (Gast)


Lesenswert?

Hallo Leute,
ich habe mir einen 8GBit NAND Flash von Mircon (MT29F8G08AAA) geholt und 
an das PMP (Parallelinterface) meines PIC32 gehängt. Mircochip bietet 
auch einen Treiber an, mit dem man auf den Flash schreiben, lesen und 
einen Block löschen kann. Dabei ist ein Block 256kByte, eine Seite 
4kByte. Löschen ist nur blockweise möglich. Das Schreiben  Lesen  
Löschen funktioniert auch soweit, habe das mit einem Logicanalyzer 
nachvollzogen.

Jetzt zu meinem eigentlichen Problem. Ich würde den Flash gerne mit 
meinem FAT Dateisystem nutzen, und da ist ja bekanntlich alles auf 
512Byte großen Sektoren aufgebaut. Die meisten Dateisystem für 
Microcontroller lesen und schreiben immer nur einen Sektor von dem 
Datenträger, so auch das von mir wendendete Dateisystem.

Das Datenblatt das NAND Flash sagt nun folgendes bezüglich Schreiben:
Micron NAND Flash devices are inherently page-programmed devices. Pages 
must be programmed consecutively within a block, the from the least 
significant page address to the most significant page address (that is, 
0, 1, 2, …63). Random page address programming is prohibited.
Micron SLC NAND Flash devices support partial-page programming 
operations. This means that any single bit can only be programmed one 
time before an erase is required; however, the page can be partitioned 
such that a maximum of four programming operations are allowed before an 
erase is required.

Das bedeutet doch, dass ich immer 256kByte Blöcke (64 Blöcke x Pagesize) 
im RAM cachen müsste und die dann auf den Controller schreiben, sogar 
nur dann, wenn ich nur einen Sector verändern möchte. Sehe ich das 
richtig?
Leider hat mein Controller nur 128kB RAM...
Kennst sich da jemand mit aus oder hat sowas schon mal implementiert?

Gruß
Stampede

von Stampede (Gast)


Lesenswert?

PUSH

Hat das denn noch nie jemand gemacht ?

von Frank K. (fchk)


Lesenswert?

Du brauchst einen Umsetzungslayer, der FAT-Cluster auf Flash-Pages 
mappt. Damit umgehst Du das Problem, dass Du nur ganze Blöcke löschen 
kannst und dass die FAT sehr oft geändert wird und die diese Blöcke 
daher sehr oft löschen müßtest, was (a) langsam und (b) fürs Flash nicht 
gut ist.

Du hast richtig erkannt, dass FAT nicht das passende Filesystem für 
Flash ist. Jetzt solltest Du auch tunlichst die Konsequenzen daraus 
ziehen.

fchk

von Simon K. (simon) Benutzerseite


Lesenswert?

YAFFS
JFFS2

sind so Flash File Systeme, die auf Wear Leveling (u.A.) Rücksicht 
nehmen.

von Stampede (Gast)


Lesenswert?

Hallo,

danke für die Antworten. Ich schaue mir das YAFFS mal genauer an, könnte 
für meine Anforderung passen. Die von Mircon angebotene Firmware ist ja 
leider kostenpflichtig, also keine wirkliche Alternative.

Gruß
Stampede

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
Noch kein Account? Hier anmelden.