> Mr. Greg Nutt implemented it for Atmel about 10 years ago, but if I
> remember correctly, he never got it well tested because there is no FS for
> NAND on NuttX.

I did test the FS's that were available and they mostly worked on these platforms.  I could actually run nxffs and smartfs for a long while before they failed. They failed because the FSs that I looked at assumed that you can always write a "1" to a "0". Actually, you can do that but this then results in ECC error. Even a single bit 1=>0 change requires a full  erase, re-writing the ECC, and a full sector write.

As I recall, nxffs would write some single "0" bits to indicate sector state changes; SmartFS had a small counter that was used to manage wear leveling.

> I think if you decide to use an SPI NAND Flash with ECC and bad block
> support in HW it will be easier to test your FS, in this case even LittleFS
> could work:
> https://github.com/littlefs-project/littlefs/issues/11

Sparing and wear-leveling would also be needed.

> But later on we will need to get ECC and bad block table support on NuttX
> to validate your FS with some native NAND Flash controller.

I think that software bad block and ECC are already supported and verified (but it has been awhile since I used them).  Sparing, and wear-leveling are normally done by an FTL, but can be done by the file system.  Bad block detection and ECC may be done by hardware, FTL, or higher level software.  Then the only outstanding issues are finding such an FTL and a file system that does not do read-modify-write operations without updating the ECC.

LittleFS was a candidate a few years ago and required a special FTL to get all of these features.  Maybe that has changed in more recent versions.

Reply via email to