add yaffs fs to kernel

来源:百度文库 编辑:神马文学网 时间:2024/07/05 16:32:50
add yaffs fs to kernel

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.....