file systems to be constructed using NOR flash, with a future migration path to
NAND flash for higher density and performance.
Yaffs was originally designed for use with the Linux operating system, but was
designed in a very modular way. The operating-system-specific code was kept
separate from the main Yaffs file system code. This allows Yaffs to be ported quite
cleanly to other operating systems through operating system personality modules. One
such personality module is the Yaffs Direct Interface (YDI) which allows Yaffs to be
simply integrated with embedded systems, with or without an RTOS.
Yaffs has been used for many products using various operating systems including
Windows CE and various RTOSs, including ThreadX, vXworks, pSOS to name just a
few.
Note that there is a native port of Yaffs to eCOS that does not use YDI. This is
supported and distributed by eCocCentric.(http://www.ecoscentric.com/).
Yaffs2, a more recent release of Yaffs, supports a wider range of NAND flash
components including 2k page devices and devices with multi-level cells (MLC), and
produces equivalent or better performance. It include Yaffs1 compatibility code so
Yaffs1 images still work and migration is quite simple. Yaffs1 or Yaffs2 mode of
operation are simply selected by a run-time parameter.
As well as providing a NAND file system, YDI also provides a RAM emulation layer
to allow Yaffs to operate as a RAM file system too. While the RAM emulation is
perhaps not as efficient as a dedicated RAM file system, this does allow one well
proven file system to use both RAM and flash.
Why use Yaffs?
Yaffs is the first, and perhaps only, file system designed specifically for NAND flash.
This means that Yaffs has been designed to work around the various limitations and
quirks of NAND flash, as well as exploit the various features of NAND to achieve an
effective file system.
Some features to consider:
• Yaffs has been well proven and has been used to ship in large volumes in several
products using many different operating systems, compilers and processors.
• Yaffs is written in portable C and is endian neutral.
• Yaffs provides bad block handling and ECC algorithms to handle deficiencies in
NAND flash.
• Yaffs is a log-structured file system which makes it very robust to corruptions
caused by power failures etc.
• Yaffs has highly optimised and predictable garbage collection strategies. This
makes it high performance and very deterministic when compared with similar file
systems.
评论0
最新资源