<p>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 <a href="http://stoneboat.aleph1.co.uk/mailman/listinfo/yaffs">join the Mailing List</a> and take a look at its Archive <a href="http://www.aleph1.co.uk/lurker/list/yaffs.html"> HERE</a></p>

<p>Please note that we have a git repository containing further documentation, including the YaffsForVxWorks document, <a href="http://www.aleph1.co.uk/gitweb/?p=yaffs-docs;a=tree;h=f4fcbdc9da052aa926c4bc2275547ca310eebbd8;hb=9d50c62a1c24f1b9dd00ec3eb6d0bddff0aed17d">HERE</a></p>

<h3>Main</h3>

<ul>
	<li><a href="http://localhost:8093/yaffs-overview">Yaffs Overview</a><br />
	A single page - double-sided - overview.<br />
	&nbsp;</li>
	<li><a href="/documents/faq">FAQ</a><br />
	Common technical questions about Yaffs (and not about Licences).<br />
	&nbsp;</li>
	<li><a href="http://localhost:8093/yaffs-licence-faqs">Yaffs Licence FAQs</a><br />
	Questions related to licensing Yaffs for commercial projects.<br />
	&nbsp;</li>
	<li><a href="/licences-more-background-and-detail">Further licensing background and detail</a><br />
	Fuller discussion about the different types of licenses, the benefits and conditions of each.&nbsp;</li>
</ul>

<ul>
	<li><a href="/yaffs-licence-sample">Yaffs Licence Sample</a><br />
	An example licence for commercial, non-GPL use of Yaffs<br />
	<br />
	<em>Abstract</em>:<br />
	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.</li>
</ul>

<h3>Technical</h3>

<ul>
	<li><a href="/documents/how-yaffs-works">How Yaffs Works</a><br />
	All the technical details on the inner workings of Yaffs.<br />
	<br />
	<em>Abstract</em>:<br />
	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.<br />
	&nbsp;</li>
	<li><a href="/yaffs-tuning-and-configuration">Yaffs Tuning</a><br />
	How you can make Yaffs work best for your needs under Linux and with Yaffs Direct.<br />
	<br />
	<em>Abstract</em>:
	<p>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.<br />
	&nbsp;</p>
	</li>
	<li>
	<p><a href="/documents/yaffs-direct-interface">The Yaffs Direct Interface</a><br />
	A description of the Yaffs Direct Interface and how it works.<br />
	<br />
	<em>Abstract</em>:<br />
	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.<br />
	&nbsp;</p>
	</li>
	<li><a href="/documents/yaffs-vxworks">Yaffs for VxWorks</a><br />
	Details of how Yaffs works with VxWorks<br />
	<br />
	<em>Abstract</em>:<br />
	Yaffs-for-VxWorks is a wrapper around the Yaffs Direct Interface (YDI), that plugs&nbsp;YDI&nbsp;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&nbsp;Yaffs.</li>
</ul>

<h3>Detail</h3>

<ul>
	<li><a href="/documents/yaffs-nand-flash-failure-mitigation">Yaffs NAND Failure Mitigation</a><br />
	Discusses&nbsp;NAND&nbsp;failure modes and the measures that Yaffs takes to mitigate against&nbsp;these.<br />
	<br />
	<em>Abstract</em>:<br />
	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.&nbsp;This document describes the most important failure modes and how they may be addressed in software.</li>
</ul>

<ul>
	<li><a href="/documents/yaffs-robustness-and-testing">Yaffs Robustness and Testing</a><br />
	The testing regime for Yaffs, and how we can be so certain that it's rock solid.<br />
	<br />
	<em>Abstract:</em><br />
	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.<br />
	&nbsp;</li>
	<li>
	<p><a href="/yaffs-2-specification">Yaffs 2 Specification</a><br />
	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.</p>
	</li>
	<li>
	<p><a href="http://localhost:8093/comparison-yaffs-vs-jffs">Comparison between Yaffs (Yaffs2) and JFFS2</a><br />
	If you are trying to decide between Yaffs2 and JFFS2 then this note will give you an idea of the relative advantages of each.</p>
	</li>
	<li>
	<p><a href="http://localhost:8093/yaffs-porting-guide">Yaffs Porting Guide</a><br />
	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.</p>
	</li>
	<li>
	<p><a href="/running-yaffs-direct-tests">Running Yaffs Direct Tests</a><br />
	Provides an outline to the various tests that are incorporated into Yaffs Direct.</p>
	</li>
</ul>

<p>&nbsp;</p>

<h3>Archive</h3>

<ul>
	<li><a href="http://localhost:8093/yaffs-talk-pdf-slides-celf-2007">Yaffs Talk - PDF of slides from CELF, 2007</a><br />
	This contains an overview of Yaffs, and a comparison of Yaffs1 and Yaffs2.<br />
	&nbsp;</li>
	<li><a href="/paper-investigating-log-management-crash-recovery-mechanism">Paper investigating a log management &amp; crash recovery mechanim for flash</a><br />
	From 2006.</li>
</ul>

<ul>
	<li><a href="http://localhost:8093/yaffs-original-specification">Yaffs Original Specification</a><br />
	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.<br />
	&nbsp;</li>
	<li><a href="http://localhost:8093/state-nand-mtd-driver-start-project">State of NAND MTD driver at start of project</a><br />
	&nbsp;</li>
	<li><a href="http://localhost:8093/yaffs-history">Yaffs History</a><br />
	A chronology and list of milestones in Yaffs development up to 2006.<br />
	&nbsp;</li>
	<li><a href="http://localhost:8093/yaffs-nand-specific-flash-file-system-introductory-article">Yaffs: the NAND-specific flash file system - Introductory Article</a>&nbsp;<br />
	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.<br />
	&nbsp;</li>
	<li><a href="http://localhost:8093/howto-incorporate-yaffs-linux">HOWTO incorporate Yaffs1 in Linux</a>.<br />
	&nbsp;</li>
	<li><a href="http://localhost:8093/yaffs-development-notes">Yaffs1 Development Notes</a><br />
	Useful notes if you are working with Yaffs1, about how Yaffs can be used.<br />
	&nbsp;</li>
	<li><a href="http://localhost:8093/yaffs1-memory-footprint">Yaffs (Yaffs1) memory footprint</a><br />
	An example calculation for the memory that Yaffs1 uses.<br />
	&nbsp;</li>
	<li><a href="http://localhost:8093/fuel-embedded-database-use-yaffs">FUEL Embedded Database for use with Yaffs</a><br />
	&nbsp;</li>
</ul>
