From 14fd1e0d1f95e5b223d0488daa240b7c6bb55e17 Mon Sep 17 00:00:00 2001 From: charles Date: Tue, 26 Nov 2002 09:32:08 +0000 Subject: [PATCH] *** empty log message *** --- Documentation/yaffs-rootfs-howto.html | 122 ++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 Documentation/yaffs-rootfs-howto.html diff --git a/Documentation/yaffs-rootfs-howto.html b/Documentation/yaffs-rootfs-howto.html new file mode 100644 index 0000000..f08546a --- /dev/null +++ b/Documentation/yaffs-rootfs-howto.html @@ -0,0 +1,122 @@ + + + + + + + + + + + + +

Brief HOWTO on incorporating yaffs as a root fs.

+

By N C Bane <nick@cecomputing.co.uk>

+

Document status

+

This document is very much work in progress. It has been edited by +different people with no attempt to keep a consistent style. Beauty +will come with age.

+

What is yaffs?

+

Yaffs stands for Yet Another Flash Filing System.

+

It is a journaling filesystem designed to run on NAND flash with +special reference to embedded systems.

+



+

+

Why would I want to use it?

+

NAND flash (SmartMedia cards are repackaged raw NAND chips) is +cheap and has a fast erase time as compared with NOR flash.

+

The NAND physical interface is very simple.

+

The small size and low current requirements make it very suitable +for embedded systems.

+

However, NAND has its problems. These are mainly due to bad block +management as blocks of memory can be bad when the device is shipped +and further blocks can become unusable over time.

+

Power can die unpredictably in embedded systems leading to data +loss and possibly file system corruption.

+

This is where yaffs comes in; it handles bad blocks and uses +formats which are resistant to corruption.

+



+

+

What do I need to know?

+

It is assumed that the reader has a development system with direct +access to NAND flash (ie not a CF/SmartMedia adaptor which).

+

The user should be familiar with building linux kernels and +patching build trees.

+

It is strongly suggested that you also read more about NAND flash +on the Linux mtd site.

+



+

+

Assumptions:

+

You have already downloaded the yaffs sources from the cvs at +Aleph1.

+

You have mtd code that exposes NAND as an mtdblock device.

+



+

+

Nand interface:

+

For yaffs to function, it must be able to be the only code that +writes to the oob area on the NAND device.

+

The existing NAND driver in kernel 2.4.19 assumes that it will do +the ecc/oob management for the host fs. For yaffs, this is quite +wrong.

+

You can disable ecc/oob calculations either by hand patching the +mtd code to bypass ecc calculations or by merging the latest mtd cvs.

+

The patches at http://www.toby-churchill.org have done the latter.

+



+

+

Including yaffs as a kernel fs:

+

1) Create [linux]/fs/yaffs directory in your kernel test source.

+

2) Copy devextras.h yaffs_fs.c yaffs_gets.c yaffs_guts.h +yaffs_mtdif.c yaffs_mtdif.h yaffsinterface.h and yportenv.h from the +yaffs sources to that directory.

+

3) Copy the Makefile from either the yaffs sources +(Makefile.kernel) or the Balloon download site below to +[linux]/fs/yaffs/Makefile.

+

3) Modify [linux]/fs/Config.in to include the 3 lines

+



+

+

if +[ "CONFIG_MTD_NAND" = "y" ]; then

+

+ tristate "Yaffs filesystem on NAND" CONFIG_YAFFS_FS

+

fi

+

4) Configure the kernel to include (not modules) all the mtd nand +code (incl nand_ecc and mtdblock device) and yaffs fs.

+



+

+

You should now be able to build a kernel with yaffs as a root fs +using the normal tools.

+



+

+

Creating a bootable yaffs partition:

+

You can

+

1) Create the partition by mounting it from a running linux os and +copying the data there. The mkyaffs utility in the yaffs source +simply erases a NAND mtdblock device without removing bad block data.

+

2) Make and download a filesystem image. The mkyaffsimage utility +that came with the sources will create a YAFFS block list in a file +from a root tree. This is a list of 512+16 byte blocks that need to +be placed (in any order) on a NAND device.

+

You will need to write code to copy these data blocks and add in +the block numbers in the oob areas.

+

Examples of a modified handhelds.org bootldr for the Balloon board +can be found on the toby-churchill.org website.

+



+

+

Booting into yaffs:

+

Modify your bootloader to pass a command line to linux to +specifying the mtdblock/n that refers to the root partition.

+



+

+

Further Information:

+

Yaffs page at Aleph1 +http://www.aleph1.co.uk/armlinux/projects/yaffs/index.html

+

Balloon page at http://www.toby-churchill.org.uk

+

Yaffs mailing list - to join send an email to +yaffs-request@toby-churchill.org with the text "subscribe" +(no quotes) as the subject

+

Linux MTD http://www.linux-mtd.infradead.org/

+

$Id: yaffs-rootfs-howto.html,v 1.1 2002-11-26 09:32:08 charles Exp $

+



+

+ + \ No newline at end of file -- 2.30.2