changeset 302:79e24d9d451d

update YAFFS docs
author Ross Younger <wry@ecoscentric.com>
date Fri, 28 Aug 2009 12:07:33 +0100
parents 11cebe3ce4fc
children ed45fbf83981
files packages/fs/yaffs/current/ChangeLog packages/fs/yaffs/current/doc/yaffs.sgml
diffstat 2 files changed, 47 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/packages/fs/yaffs/current/ChangeLog
+++ b/packages/fs/yaffs/current/ChangeLog
@@ -1,3 +1,7 @@
+2009-08-28  Ross Younger  <wry@ecoscentric.com>
+
+	* doc/yaffs.sgml: Bring explanations of CDL options up-to-date.
+
 2009-08-26  Ross Younger  <wry@ecoscentric.com>
 
 	* Added support for small-page chips: incorporates and builds on work
--- a/packages/fs/yaffs/current/doc/yaffs.sgml
+++ b/packages/fs/yaffs/current/doc/yaffs.sgml
@@ -30,7 +30,7 @@
 
 <!-- }}} -->
 
-<!-- ### Uncomment to make a standalone book:
+<!-- ### Uncomment to make a standalone book: 
 <!DOCTYPE book  PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
 <book id="fs-yaffs-book">
     <bookinfo>
@@ -50,9 +50,9 @@
             </para>
         </legalnotice>
     </bookinfo>
- !   /### -->
+     !   /### -->
 
-<part id="fs-yaffs-p">
+<part id="fs-yaffs">
 <title>The YAFFS filesystem</title>
 
 <chapter id="yaffs-overview-c">
@@ -98,7 +98,7 @@ RedBoot's usual flexible scripting syste
 For more information about NAND flash chips,
 how they differ from NOR flash parts
 and other ways to access them, refer to the documentation for the
-<xref linkend="io-nand-overview" endterm="io-nand-short">.
+<xref linkend="io-nand-overview" endterm="io-nand-short"/>.
 </para>
 
 <para>
@@ -211,9 +211,6 @@ YAFFS provides a number of package optio
 </para>
 
 <variablelist>
-<varlistentry><term><constant>CYGPKG_FS_YAFFS_CFLAGS_ADD</constant></term><term><constant>CYGPKG_FS_YAFFS_CFLAGS_REMOVE</constant></term><listitem><para>
-Allows specific build options to be added to or removed from the CFLAGS
-list when building this library.</para></listitem></varlistentry>
 <varlistentry><term><constant>CYGSEM_FS_YAFFS_CACHE_SHORT_NAMES</constant></term><listitem><para>If
 set, caches files' short names in RAM. This consumes more RAM but
 improves performance.</para></listitem></varlistentry>
@@ -223,18 +220,49 @@ field in a <structname>struct dirent</st
 this, leave it switched off to save a little code size.</para></listitem></varlistentry>
 <varlistentry><term><constant>CYGNUM_FS_YAFFS_RESERVED_BLOCKS</constant></term><listitem><para>
 The number of blocks to keep in reserve to allow for garbage collection
-and block failures. The recommended value is 5, but you can tune it
-for performance.  <emphasis>This setting is a global default and may be
+and block failures. The recommended value is 5, but it can be tuned to suit your application:
+higher numbers can reduce the delay caused by garbage collection, at the cost of removing
+available space for storing files.
+<emphasis>This setting is a global default and may be
 changed by a mount-time option.</emphasis></para></listitem></varlistentry>
 <varlistentry><term><constant>CYGNUM_FS_YAFFS_SHORTOP_CACHES</constant></term><listitem><para>
 The number of page cache entries to use. Values of 10 to 20 are
-recommended; increasing the number consumes more RAM, and  0 disables
-it altogether.  <emphasis>This setting is a global default and may be
+recommended as a good compromise; increasing the number consumes more RAM but may
+improve performance.
+Set to 0 to disable these caches altogether. 
+<emphasis>This setting is a global default and may be
 changed by a mount-time option.</emphasis></para></listitem></varlistentry>
 <varlistentry><term><constant>CYGNUM_FS_YAFFS_TRACEMASK</constant></term><listitem><para>This
 is a 32-bit bitfield which controls diagnostic output. The bit definitions
-are found in <filename>yportenv.h</filename>; they are only useful if
-you are debugging YAFFS itself.</para></listitem></varlistentry>
+are found in <filename>yportenv.h</filename>; changing this setting tends to only be useful
+if you wish to debug YAFFS itself.</para></listitem></varlistentry>
+<varlistentry><term><constant>CYGPKG_FS_YAFFS_CFLAGS_ADD</constant></term>
+<term><constant>CYGPKG_FS_YAFFS_CFLAGS_REMOVE</constant></term><listitem><para>
+These settings allow specific build options to be added to or removed from the CFLAGS
+list when building YAFFS.</para></listitem></varlistentry>
+<varlistentry><term><constant>CYGSEM_FS_YAFFS_SMALLPAGE_MODE</constant></term>
+<listitem><para>This option only affects behaviour on so-called "small page" NAND devices
+(those whose pages are 512 bytes long).
+Such devices do not have enough space in their Out Of Band area to
+store a full set of YAFFS metadata tags. There are two ways to work
+around this: <itemizedlist><listitem><para><constant>YAFFS2</constant> mode -
+the default - uses regular tags, but at
+a price: it steals 16 bytes from the available space per page to store
+them. <emphasis>This reduces the apparent available
+size of your filesystem by 1/32!</emphasis></para></listitem>
+<listitem><para><constant>YAFFS1</constant> mode places a smaller tagset
+in the OOB area, but with a different side-effect: whenever a page is
+deleted, one byte of the tags area has to be rewritten.  Some devices
+forbid rewrite-without-erase in this way, so it may not be safe for you
+to use this option.  <emphasis>You must refer to the spec sheet for the chip on
+your board before selecting this option!</emphasis></para></listitem></itemizedlist>
+</para></listitem></varlistentry>
+<varlistentry><term><constant>CYGSEM_FS_YAFFS_OMIT_YAFFS2_CODE</constant></term><listitem><para>
+This causes all YAFFS2 code to be omitted from the build. This option only makes sense when
+all the devices on which YAFFS is to be used are small-page and operating in YAFFS1 mode.
+<note><para>There is no corresponding option to omit YAFFS1 code, because that code is only
+compiled when <constant>CYGSEM_FS_YAFFS_SMALLPAGE_MODE</constant> is set to YAFFS1.  </para></note>
+</para></listitem></varlistentry>
 </variablelist>
 </sect2>
 </sect1>
@@ -575,7 +603,7 @@ requires        { CYGPKG_REDBOOT implies
 This declaration only provideds the bare minimum heap required to mount a 
 trivial YAFFS filesystem. More will be required for all but the simplest
 of cases and it is recommended that you test for typical use in your
-environment. Refer also to <xref linkend="yaffs-mem-reqs">.
+environment. Refer also to <xref linkend="yaffs-mem-reqs"/>.
 </para></caution>
 
 <para>
@@ -603,4 +631,4 @@ you may find the option
 
 <!-- ### Uncomment to make a standalone book:
 </book>
- !   /### -->
+     /### -->