Robust Flash Storage Since 2002    


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

Please note that we have a git repository containing further documentation, including the YaffsForVxWorks document, HERE


  • Yaffs Licence Sample
    An example licence for commercial, non-GPL use of Yaffs

    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.


  • How Yaffs Works
    All the technical details on the inner workings of Yaffs.

    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.

    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.

    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.
  • Yaffs for VxWorks
    Details of how Yaffs works with VxWorks

    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.


  • Yaffs NAND Failure Mitigation
    Discusses NAND failure modes and the measures that Yaffs takes to mitigate against these.

    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.

    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.




This video shows you how to compile Yaffs into Linux. It’s just over 10 minutes long, and if you download it, it’s 325MB. After watching this video you should be able to include Yaffs in Linux.

This video covers the preparation needed to include Linux in Yaffs - describing the kernel build-tools needed, how to get the kernel source code and Yaffs source code. It's about 175Mb and 6m30 long.

This video from 2007 describes Yaffs1 and Yaffs2. The slides from the video are available.