AW: NAND Flash filesystem
Johannes Schock
j.schock at stiefelgmbh.de
Fri Sep 10 06:00:06 UTC 2010
Do you need real FileIO? Or is something like writenandflash(location,size)
and readnandflash(location,size) sufficient?
If this is sufficient, try getting Atmel Softpack 1.4 for at91sam9263-ek.
You get a full featured Managed and Translated Nandflash System with
wearleveling and error-correction. In Softpack 1.5 they removed the
wearleveling code (I think because it isn't used in any demo application in
the package).
I use these drivers in my closed source Keil-RTX based at91sam9263-system.
As I remember there were one or two little bugs but I have to look up.
If you can't find the package any more contact me, I'll load it to my
company's webspace.
Regards
Johannes Schock
Stiefel GmbH
Allmend 7/2
75038 Oberderdingen
Webseite: www.stiefelgmbh.de
-----Ursprüngliche Nachricht-----
Von: rtems-users-bounces at rtems.org [mailto:rtems-users-bounces at rtems.org] Im
Auftrag von Mick Davis
Gesendet: Freitag, 10. September 2010 06:10
An: RTEMS Users
Betreff: NAND Flash filesystem
I'm looking at implementing a NAND flash filesystem for the
at91sam9263-ek, and hoped there might be some advice available.
The raw flash chip is connected to the processor's on-chip static memory
controller.
I'm not keen to use GPL sources, but I can share my own results.
JFFS2 has a license exception which might make it OK, but porting it
away from Linux seems like an excessive amount of work. Has anyone
succeeded with this? I'd want it to integrate with RTEMS for use with
ordinary system calls.
The most likely option looks like something of my own creation using the
RTEMS block and disk device drivers, along the lines of the existing
RTEMS flashdisk driver.
From what I understand, the flashdisk driver is for NOR flash, and NAND
is quite different. NAND requires that you only program entire pages
sequentially in the block. You can't change the state of an individual
word, even progressively from FFs down to 00s, as the flashdisk driver
does for the page state indications, or for appending new page
descriptors at the start of a block.
For NAND, only whole blocks are erasable, which are much larger than the
programmable pages. The device on the eval board is smaller than the
product I'm developing for, but as an indication it is a 256Mb chip of
128kb blocks, 2kb pages.
I guess a NAND driver might put a descriptor at the start of each page.
Each page would map to a filesystem block (as in filesystem minimum
unit) and use a sequence number to determine the latest version of that
block.
I think its worth considering a new simple implementation because I
don't mind if the chip is under-utilized. Writes are infrequent, so wear
leveling can be crude. The working copy of most file data is kept by my
app in memory anyway, so high speed is not a big requirement either.
Thanks for any input.
--
Mick Davis
Goanna Technologies Pty Ltd
_______________________________________________
rtems-users mailing list
rtems-users at rtems.org
http://www.rtems.org/mailman/listinfo/rtems-users
More information about the users
mailing list