Jffs was developed by Axis Communications AB in Sweden (1999, released by GNU) and developed based on the features of Flash devices as embedded devices. (My brother once wanted to go there for graduation project)
Both jffs1 and jffs2 have taken into account the flash features, especially meeting the above three conditions, including garbage collection and bad block management. these two file systems belong to LFS (log-structured File System ). this file system is characterized by a data error that is easy to recover, but the system operation requires a certain amount of memory space, which is used to store "logs.
The disadvantage of jffs is that the loading time is too long because all nodes (jffs storage units) on flash need to be loaded to the memory each time, which also occupies a considerable amount of memory space. in addition, the "circle log" design will overwrite all the data in the file data, resulting in unnecessary time and reducing the flash life.
Jffs2 has made some improvements to jffs1, such as reduced memory and optimized the garbage collection mechanism.
Jffs3.
Yaffs1 & yaffs2
"Yet another flash file system" was designed by Charles manning of New Zealand for a company named Alpha One (http://www.aleph1.co.uk/) and was the first file system designed for NAND Flash. two versions: yaffs1 and yaffs2.
Yaffs1 supports 512 bytes/Page nand flash; the latter yaffs2 supports 2 Kbytes/Page NAND Flash. yaffs file systems also belong to LFS.
Compared with other file systems, it has better portability and can even be used on devices without an operating system (called "yaffs/direct "). yaffs adopts a modular design. Although it was originally used on Linux systems, it has been transplanted to other systems such as wince.
Another outstanding advantage is that it requires a small amount of memory during mount. (For small pages-512 bytes/Page, about 4 Kbytes memory is required for every 1 Mbyte NAND; about 1 Kbytes RAM/1 Mbyte NAND is required for large pages)
Jffs and yaffs have their respective advantages. Generally, for NAND Flash with a size smaller than 64 Mbytes, jffs can be used. If it exceeds 64 Mbytes, it is more appropriate to use yaffs.
Http://www.yaffs.net/yaffs-internals
Http://www.yaffs.net/yaffs-direct-user-guide