add yaffs fs to kernel

来源:百度文库 编辑:神马文学网 时间:2024/04/20 18:20:49
add yaffs fs support in kernel and make yaffs rootfs
1 preparation
a>download yaffs source code and add it in your kernel source code in fs/yaffs
http://husaberg.toby-churchill.com/balloon/linux-2.6.8.1-tcl1/fs/yaffs
modify fs/Kconfig , add following option
config YAFFS_FS
tristate "YAFFS filesystem support"
depends on MTD_NAND
help
If you want YAFFS support on NAND flash devices you either need to have
NAND mtd support or customise the NAND interface.
YAFFS is a journaling filesystem tailored to the idiosyncrasies of
NAND flash memory. For further details see
YAFFS is also available as a module ( = code which can be
i nserted in and removed from the running kernel whenever you want).
The module is called nfsd. If you want to compile it as a module,
say M here and read . If unsure,
say N.
config CRAMFS
tristate "Compressed ROM file system support (cramfs)"
...
b>download nandwrite.c , nanddump.c and eraseall.c from
ftp://166.111.68.183/pub/embed/uclinux/soft/uClinux-dist/user/mtd-utils/
compile them.
arm-linux-gcc nandwrite.c -o nandwrite
arm-linux-gcc nanddump.c -o nanddump
arm-linux-gcc eraseall.c -o eraseall
c>modify devs.c to add a new partition in mtd (optional) , the yaffs will be in the"yaffs" partition
like:
{
name: "user",
size: 0x00c00000,
offset: 0x00400000,
mask_flags: MTD_WRITEABLE,
}, {
name: "yaffs",
size: 0x02000000,
offset: 0x01000000,
mask_flags: MTD_WRITEABLE,
}
......
nr_partitions: 6 ,
note: if you do so, the bootloader(vivi)‘s partition table should be changed too.(part del/add)
2 compile your kernel
3 make yaffs partition
a>make yaffs image
download mkyaffsimage from http://husaberg.toby-churchill.com/balloon/releases/v0.7/roots/
put your files in temp directory
./mkyaffsimage temp temp.yaffs
b>write image to flash
./eraseall /dev/mtd/5
./nandwrite /dev/mtd/5 temp.yaffs 16384
note:I‘ve read the source code of yaffs, and find that the first block is not scaned when the super block is loaded. So             your image should be write to the second block.
Each block is 512*32 (BYTESPERCHUNK*CHUNKSPERBLOCK) bytes.
4 Good luck.....