littlefs-project / littlefs

A little fail-safe filesystem designed for microcontrollers
BSD 3-Clause "New" or "Revised" License
5.25k stars 803 forks source link

Document target hardware class(es) - NOR/NAND/etc #992

Open bmcdonnell-fb opened 5 months ago

bmcdonnell-fb commented 5 months ago

Thanks to @geky and all contributors for this project. 😄

I see a couple of issue comments that speak to intended/tested target hardware type, but this does not seem to be explicitly or sufficiently documented.

https://github.com/littlefs-project/littlefs/issues/880#issuecomment-1968175847

littlefs was written for NOR first and NAND's geometry is quite a bit more challenging.

https://github.com/littlefs-project/littlefs/issues/11#issuecomment-359195144

LittleFS has only been used on NOR flash, eMMC, SD cards; devices with <4KB erase units, so I'm not sure how it will perform on NAND flash.

Have I missed some documentation that spells this out? I think these items are probably worth at least a mention in the top-level README.md.

geky commented 5 months ago

HI @bmcdonnell-fb,

Ah yes, this could probably be documented better. It would be good to eventually have more thorough evaluation of littlefs on various storage types, but this time could also be spent trying to fix the related performance issues, so prioritization gets a bit muddled.

This has also evolved over time. The comment in #11 notably predates v2, and files can use less than a block if they fit in cache_size. You may also not need ECC, but probably want it depending on the device's details.

The original intention of v2 was to work fine on any flash-like technology (or at least any random-access storage), with only different performance characteristics. Unfortunately the lack of thorough testing led to the current state of things on NAND. But with more testing and a better understanding of NAND's issues hopefully things will improve moving forward.

If you want me to document what future technology will be problematic for littlefs, that might be a bit more difficult...

bmcdonnell-fb commented 5 months ago

Ah yes, this could probably be documented better. It would be good to eventually have more thorough evaluation of littlefs on various storage types, but this time could also be spent trying to fix the related performance issues, so prioritization gets a bit muddled.

Understandable if other features are taking higher priority over the type of detailed doc that you're envisioning. But I think at least a brief mention in the top level README.md of what technologies are known to work, and maybe which are works in progress, would help interested parties to discover littlefs, and to quickly determine whether it may be suitable for their target hw.

LittleFS has only been used on NOR flash, eMMC, SD cards; devices with <4KB erase units, so I'm not sure how it will perform on NAND flash.

The comment in #11 notably predates v2, and files can use less than a block if they fit in cache_size.

Good to know. However, in this case, my focus was just to say up front whether littlefs works on NOR flash, eMMC, NAND flash, etc.

It seems most filesystems are not well-suited to NOR flash? And that littlefs was designed with it as a first class citizen?