Abstract: While the Yaffs code is available free of charge under GPL, that entails the obligation to disclose Source Code for your application using Yaffs. An Aleph One Licence does not impose that obligation and so is attractive for proprietary projects.
Abstract: This document gives a reasonable explanation of most of the core mechanisms that make Yaffs work. As of the time of writing this, the Yaffs2 code base includes approximately 19,000 lines of code making a very detailed discussion impractical. This document should serve as a first port of call for understanding Yaffs. Further detailed questions and discussions are welcomed on the Yaffs discussion list.
Yaffs Tuning How you can make Yaffs work best for your needs under Linux and with Yaffs Direct.
Abstract: Yaffs has many options for tuning for speed or memory use. This document details them for Yaffs Direct and Linux, and covers compile time flags and settings, initialisation parameters, tracing, and state inspection.
Abstract: The Yaffs Direct Interface (YDI) is a low level mechanism for using Yaffs. It’s particularly useful on systems that don’t support POSIX. This document discusses the interface in detail. The YDI includes the base operands that must be implemented to use Yaffs with a particular OS and particular NAND flash. As such, this document is of interest if you are implementing Yaffs on a RTOS or directly on hardware.
Abstract: Yaffs-for-VxWorks is a wrapper around the Yaffs Direct Interface (YDI), that plugs YDI in as a native file system (ie. Yaffs becomes a file system that is accessed in the same way other file systems on system. This makes it really easy to migrate existing VxWorks software, or develop new VxWorks software to get the benefits of Yaffs.
Abstract: NAND flash is one of very few types of electronic device which are knowingly shipped with errors and are expected to generate further errors without causing system failure. This document describes the most important failure modes and how they may be addressed in software.
Abstract: Many embedded systems need to store critical data, making reliable file systems an important part of modern embedded system design. That robustness is not achieved through chance. Robustness is only achieved through design and extensive testing to verify that the file system functions correctly and is resistant to power failure. This document describes some of the important design criteria and design features used to achieve a robust design. The test methodologies are also described.
Yaffs 2 Specification The original motivation for Yaffs2 was to add support for the new NAND with 2kB pages instead of 512-byte pages and strictly sequential page writing order. This document details the updated system and the benefits over Yaffs1.
Yaffs Original Specification The initial specification for Yaffs. Circa 2002. This is sometimes known as Yaffs1. Details of the filing system, including short backgrounder. Read this if you want to know what it is, what it does and how it works. This specification does not cover Yaffs2.