Ansteuerung NAND Flash

Gast #1816555
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
#1817091
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
Gast #1817675
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.