Yaffs Overview

Yaffs is a filesystem designed specifically for the characteristics of NAND flash. Its well-proven primary features are:

  • Fast - typically much faster than alternatives
  • Easily ported (currently ported to GNU/Linux, WinCE, eCOS, pSOS, VxWorks, and various bare-metal systems)
  • Log structured, providing wear-levelling and making it very robust
  • Supports many flash geometries including 2K-Byte and 512-Byte page NAND flash chips
  • Supports MLC and SLC flash
  • Very fast mount - almost immediate startup
  • Typically uses less RAM than comparable File Systems
  • Flexible Licensing suitable for most circumstances

There is a great deal of information about Yaffs available on this site. This page indexes that information and provides an overview of the product.

Yaffs is currently at version 2. Yaffs2 supports 2K-byte page flash as well as 512-byte page flash. (Yaffs1 only supports the original 512-byte page flash and is now in maintenance mode.) There is a minimal subset of the filesystem called Yaffs/Direct or the Yaffs Direct Interface which is intended to be used in embedded systems, and can be licensed for use in proprietary systems. Yaffs is available to all under the GPL for use or evaluation; full details of Git access are available

Yaffs 1 and 2 have both been deployed in numerous commercial applications, some in high volume. abd with large Flash arrays. It has been used in phones, most notably Android phones, GPS receivers, train controllers, speech synthesisers, VOIP chip development kits and other applications.

We have a number of documents and papers describing how to use Yaffs, how to customise it for your particular hardware/system, and the original considerations and filesystem design of the two versions.

Backgrounder

The best overview information is currently this 28-slide presentation  What it Does and How it Does it

A useful historical Timeline on development is here

Developer Documentation

Yaffs Direct Interface - User Guide, describing how to port Yaffs to an embedded environment or RTOS using the YDI ‘personality’ module’.

Brief notes on How to use it on GNU/Linux

A memory footprint analysis putting some numbers on ‘low memory footprint’.

 YAFFS embedded structure
Yaffs embedded structure

Papers

Mailing list

There is a Yaffs mailing list for the development and discussion of Yaffs. It’s a fairly low-traffic list. You will be emailed and asked to confirm your subscription request. You can also browse and search the Yaffs mailing list archives.