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