1.修改 MTD 驱动源码以支持 yaffs 文件系统
在/drivers/mtd/nand/s3c2410.c的846行
修改
chip->ecc.mode = NAND_ECC_SOFT;
为
chip->ecc.mode = NAND_ECC_NONE; /* by zhutao */
2.获得yaffs
方法1):(这个版本的yaffs2没有成功)
官网
http://www.yaffs.net/download-yaffs-using-git
获得命令:
git clone git://www.aleph1.co.uk/yaffs2
之前先安装git命令:
sudo apt-get install git
方法2):
进入
http://www.aleph1.co.uk/gitweb?p=yaffs2.git;a=shortlog
点击:snapshot
下载下面这个版本。(最新版有问题)
2014-06-18 Charles Manning Update to support Linux 3.14/3.15 commit | commitdiff | tree | snapshot
tar xvzf yaffs2-4e188b0.tar.gz -C /home/chris/temp
3.移植 yaffs2 文件系统
所谓移植移植 yaffs2 文件系统实际上就是项 linux 内核添加 yaffs2 文件系统。
向内核添加一个文件系统(或驱动)一般分为三步:
1)添加源文件到内核源码中(打补丁);
2)修改内核相关 kconfig 文件,方便文件系统的 配置;
3)修改内核相关 kbulid makefile 文件,将 yaffs2 文件系统源码目录编译进内核;
YAFFS2使用方法:
cd yaffs-dir
./patch-ker.sh c m linux-tree
例如:
cd /home/chris/temp/yaffs2
./patch-ker.sh c m /home/chris/temp/linux-3.4.2
4.配置内核:
│ Location: │
│ -> File systems │
│ -> Miscellaneous filesystems (MISC_FILESYSTEMS [=y])
│ <*> yaffs2 file system support │ │
│ │ -*- 512 byte / page devices │ │
│ │ [ ] Use older-style on-NAND data format with pageStatus byte (NEW) │ │
│ │ [*] Lets yaffs do its own ECC │ │
│ │ [ ] Use the same ecc byte order as Steven Hill‘s nand_ecc.c (NEW) │ │
│ │ -*- 2048 byte (or larger) / page devices │ │
│ │ [*] Autoselect yaffs2 format (NEW) │ │
│ │ [ ] Disable yaffs from doing ECC on tags by default (NEW)
5.编译内核
make zImage