移植kernel-3.10.79 支持 yaffs

Posted hulig7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了移植kernel-3.10.79 支持 yaffs相关的知识,希望对你有一定的参考价值。

网站: http://www.yaffs.net/
获取方法: 执行git clone git://www.aleph1.co.uk/yaffs2
解压:tar zxf yaffs_source.tar.gz
打补丁:

#cd /work/tmp/yaffs2 // cd yaffs-dir
#./patch-ker.sh c m ~/mini2440/linux-3.10.79 // ./patch-ker.sh c m linux-tree
make menuconfig
    
    File Systems
    ---> Miscellaneous filesystems
        ---> [*]YAFFS2 file system support
    make uImage

出错:fs/yaffs2/yaffs_vfs.c:3398: error: implicit declaration of function ‘create_proc_entry‘

原因:编译fs/yaffs2/yaffs_vfs.c时出现错误,function ‘create_proc_entry‘没有申明。
原来这个接口在linux-3.10被删除了,应该使用proc_create代替。

修改:

vim fs/yaffs2/yaffs_vfs.c 

#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) 修改为#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0))
    #define YAFFS_NEW_PROCFS
    #include <linux/seq_file.h>
    #endif

问题2:
end_request: I/O error, dev mtdblock4, sector 0
移植内核时出现了这种错误,这种错误通常是由校验造成的.这种情况的解决办法为:

禁止Flash ECC校验
我们的内核都是通过UBOOT写到Nand Flash的, UBOOT通过的软件ECC算法产生ECC校验码, 这与内核校验的ECC码不一样, 内核中的ECC码是由S3C2410中Nand Flash控制器产生的. 所以, 我们在这里选择禁止内核ECC校验.
修改drivers/mtd/nand/s3c2410.c 文件:
vi drivers/mtd/nand/s3c2410.c
找到s3c2410_nand_init_chip()函数,在该函数体最后加上一条语句:

chip->ecc.mode = NAND_ECC_NONE;

 













以上是关于移植kernel-3.10.79 支持 yaffs的主要内容,如果未能解决你的问题,请参考以下文章

s3c2440 移植linux内核 添加网卡支持 yaffs2文件系统支持

S5PV210开发系列八_Yaffs的移植

关于Linux2.6.30.4移植YAFFS2文件系统中出现的问题:

uboot在s3c2440上的移植

u-boot-2016.03 支持yaffs2文件系统烧写之添加nand write.yaffs2命令

移植Python3到TQ2440