Flash translation layer for NAND flash
Hi,
Is there any recomended basic translation layer for NAND flash for FreeRTOS+FAT?
1. Bad sector list
2. Wear levering
3. Error detection
4. Redundant FAT
Purpose is firmware storage and logging of non-critical data.
Thanks
Rasty
Flash translation layer for NAND flash
It would give me headaches to write an efficient and fast and low-RAM FAT-driver for NAND.
You have to deal with an ERASE size of more than one block. Erasing means: writing “all ones”. When you want to change one 512-block, you probably have to read/erase/write a much larger block of e.g. 2 or 4 KB.
For most projects where +FAT is needed, I would use an SD-card. SD-cards are optimised for FAT tables if you store the table after an offset of 4MB from the start. That part may be re-written much more often than any other part of the card.
As far as I know, a NAND flash chip has homogeneous memory, which can be re-written N times. You will have to write all logic that an SD-card will do for you. You will also have to deal with bad sectors: mark them as bad and repair a file system.
Depending on the data needs, you can also decide not to use a file system on NAND.
I hope that someone else has a more optimistic view on this 🙂
Hein
Flash translation layer for NAND flash
Hi Hein,
You’re right .
SD card or eMMC is simple and reliable option, but not every MCU can load/boot from eMMC.
Some commercial file systems provide that layer. Flash block handling is major IP.
Thank you very much for the reply.
Rasty