YAFFS2 移植 Linux3.0.1 成功 2012-03-27 13:47:32
分类: LINUX
YAFFS2 移植 Linux2.6.39.2 成功(需要更改 YAFFS2 官方最新源代码)附上自己修改好的
Linux2.6.39.2-yaffs2.tar.gz。
原以为 Linux 内核的 YAFFS2 文件系统移植很简单,网上一大片的,多的是,其实只要给 Linux 内核打个补丁就行了,
对于 Linux2.6.37 及以前的内核,可能真的是很简单,就像上面说的,直接下载 YAFFS2 源码,然后通过执行源代码内
的补丁就行了,但是对于 Linux2.6.38 及以后的内核,估计打完补丁也会编译不过,因为 Linux2.6.38 是 Linux 内核发
展的一个分水岭,FS 文件系统发生了变化,据官方说还加入了一个啥子神奇补丁,没仔细研究过,不清楚,但是文件系
统的确是发生了变化,正是这种文件系统的变化,导致了 YAFFS2 移植遇到了问题,好了,夜已深了,也搞了几个小时
了,眼睛都快打架了,野棉花扯多了,呵呵,还是步入正题吧,喜欢与人分享我的经验,呵呵,菜鸟一个,经验估计也
谈不上,还是算愚见吧!
好了,本来是打算写点 OK6410 之 Linux2.6.39.2 触摸屏等驱动移植愚见的,心血来潮,放在 NAND 第四分区(MTDBLOCK3)
的 QT-YAFFS2 文件系统无法启动,心里就怪痒痒的,既然老天让我们在此时相遇,那我也不再躲闪了(原本是放在后面
再移植的,因为原以为打个补丁就行了),哎,说真的,遇到编译不过时,在网上找了好久,完全找不到解决办法,哎,
算了,还是自己慢慢分析,解决吧。
移植方法:
第一步,我们需要 YAFFS2 的源码,如果大家有兴趣想了解 YAFFS2 文件系统的驱动原理的话可以直接去访问他们的官网,
地址是 www.yaffs.net,上面说的很详细的,也有源码下载地址,怕大家进去后难找,直接贴出 YAFFS2 的最新源码地址
吧,2011 年 6 月 28 号的那个版本,
免费下载地址在 http://linux.linuxidc.com/
用户名与密码都是 www.linuxidc.com
具体下载目录在 /pub/2011/06/28/YAFFS2/
这个是目前最新的 YAFFS2 的源码了,不过虽然是最新源码已经被打过好多次补丁,但是对于 Linux2.6.39.2 的内核版
本,还是不给力啊,编译依然无法通过,不是说过了吗,文件系统发生了变化。
第二步,将下载下来的 YAFFS2 最新源码 YAFFS2.tar.gz 放入你 Linux 的任意一个目录下,执行 tar zxvf
YAFFS2.tar.gz 然后进入 YAFFS2 源码包,由于最新的源码再执行脚本 patch-ker.sh 时 有四个参数,可以追加:
c,l,m,s,
./patch-ker.sh c/l m/s kernelpath
if c/l is c, then copy. If l then link
if m/s is m, then use multi version code. If s then use single version code
上面这段英文应该很好懂吧,简而言之,C 是复制文件,L 是链接文件,M 是多种,S 是单个的,
那么在这里,我们只需执行 ./patch-ker.sh c m /your Linux2.6.39.2 kernel directory
执行完这条命令之后,你将会发现在 Linux2.6.39.2/fs/下发现有了 yaffs2 目录了,并且里面也出现了好多文件
root@www.linuxidc.com:/SHARE/linux-2.6.39.2/fs/yaffs2# ls
Kconfig yaffs_linux.h yaffs_summary.c
Makefile yaffs_mtdif1.c yaffs_summary.h
yaffs_allocator.c yaffs_mtdif1.h yaffs_tagscompat.c
yaffs_allocator.h yaffs_mtdif2.c yaffs_tagscompat.h
yaffs_attribs.c yaffs_mtdif2.h yaffs_trace.h
yaffs_attribs.h yaffs_mtdif.c yaffs_verify.c
yaffs_bitmap.c yaffs_mtdif.h yaffs_verify.h
yaffs_bitmap.h yaffs_nameval.c yaffs_vfs.c