Thank you Greg for clarifying! I think Xiang Xiao and guohao15 also worked with NAND recently (DHARA and YAFFS).
Seems like dhara.c was integrated into mainline, but they didn't submit support to YAFFS (if I remember correctly it was because YAFFS requires license payment for commercial usage). Best Regards, Alan On Sat, May 25, 2024 at 4:38 PM Gregory Nutt <spudan...@gmail.com> wrote: > > 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.