Documents
You can do a lot to get going with Yaffs on your own, using the resources of this site. If you are serious about using it you should join the Mailing List and take a look at its Archive HERE
Main
- Yaffs Overview
A single page - double-sided - overview.
- FAQ
Common technical questions about Yaffs (and not about Licences).
- Yaffs Licence FAQs
Questions related to licensing Yaffs for commercial projects.
- Further licensing background and detail
Fuller discussion about the different types of licenses, the benefits and conditions of each.
- Yaffs Licence Sample
An example licence for commercial, non-GPL use of Yaffs
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.
Technical
- How Yaffs Works
All the technical details on the inner workings of Yaffs.
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.
- The Yaffs Direct Interface
A description of the Yaffs Direct Interface and how it works.
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.
Detail
- Yaffs NAND Failure Mitigation
Discusses NAND failure modes and the measures that Yaffs takes to mitigate against these.
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.
- Yaffs Robustness and Testing
The testing regime for Yaffs, and how we can be so certain that it’s rock solid.
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. -
Comparison between Yaffs (Yaffs2) and JFFS2
If you are trying to decide between Yaffs2 and JFFS2 then this note will give you an idea of the relative advantages of each. -
Yaffs Porting Guide
A description of what needs to be done to implement Yaffs2 on an OS using the Yaffs Direct Interface, using eCos as an example, on Balloon Board hardware. -
Running Yaffs Direct Tests
Provides an outline to the various tests that are incorporated into Yaffs Direct.
Archive
- Yaffs Talk - PDF of slides from CELF, 2007
This contains an overview of Yaffs, and a comparison of Yaffs1 and Yaffs2.
- Paper investigating a log management & crash recovery mechanim for flash
From 2006.
- 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.
- State of NAND MTD driver at start of project
- Yaffs History
A chronology and list of milestones in Yaffs development up to 2006.
- Yaffs: the NAND-specific flash file system - Introductory Article
This article from 2002 describes the benefits and problems associated with NAND flash, the steps that Yaffs1 takes to overcome the problems, and how that drove some design decisions. Parts of this are still relevant in 2012.
- HOWTO incorporate Yaffs1 in Linux.
- Yaffs1 Development Notes
Useful notes if you are working with Yaffs1, about how Yaffs can be used.
- Yaffs (Yaffs1) memory footprint
An example calculation for the memory that Yaffs1 uses.
- FUEL Embedded Database for use with Yaffs


