按照Andy博主(Andy的博文在我的Blog中有转载)所说,我也使用Git工具下载最新的yaffs2源码。我是在windows环境下安装的Git,windows版本。下载很方便,直接运行程序后,输入git
clone
git://www.aleph.co.uk/yaffs2 ,注意aleph后面的那个是数字1,不是字母l,否则就会在git的终端出现如下错误:
把上述错误改正后,下载完成后,在C盘(系统盘)下的 C:\Documents and
Settings\Administrator目录下就会出现yaffs2的目录。这个就是yaffs2的源码了。
把源码拷到linux环境下,就可以进行yaffs2的移植了。对于yaffs2的移植,本文分为如下两个小步骤:
(以下均是在linux环境下操作)
1、从终端进入yaffs2的目录下,执行./patch-ker.sh c m
/opt/linux-3.0.2即可。这里可选c/l m/s。 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.
这里如果是第一次执行时,还会出现一个Bad interpreter的错误。错误信息如下:
[root@localhost yaffs2]# ./patch-ker.sh c /opt/linux-3.0.2
bash: ./patch-ker.sh: /bin/sh^M: bad interpreter: No such file or
directory
错误原因是:文件格式的问题。这个文件是在Windows下编写的。换行的方式与Unix不一样。
解决方法:
# vi
patch-ker.sh
# set
ff? //看是什么环境下编写的脚本,一看,果然是DOS环境下的脚本啊!
#set
ff=unix //转换成unix环境下
#wq! //保存,退出
重新运行上述打补丁的命令,如下:
[root@localhost yaffs2]# ./patch-ker.sh c m
/opt/linux-3.0.2
Updating /opt/linux-3.0.2/fs/Kconfig
Updating /opt/linux-3.0.2/fs/Makefile
即可,成功!
这时我们可以在linux-3.0.2/fs目录下,出现yaffs2/的目录,同时fs/目录下的Makefile和Kconfig文件也添加了yaffs2的配置和编译条件。再次佐证,补丁成功!
2、在配置单中添加对yaffs2的支持
make menuconfig后 file sysems--->miscellaneous
filesystems--->yaffs2 file system
support
如下:
配置完成后,保存配置单,编译出镜像,即可!至此,yaffs2移植完毕!
此时,可以看到启动信息如下(仅截取最后一部分,前面同linux-3.0.2在TQ2440上的移植博文的启动信息一样):
Creating 3 MTD partitions on "NAND":
0x000000000000-0x000000040000 : "Boot"
0x000000200000-0x000000400000 : "kernel"
0x00000fb80000-0x00000ff80000 : "filesystem"
mousedev: PS/2 mouse device common for all mice
S3C24XX RTC, (c) 2004,2006 Simtec Electronics
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
yaffs: dev is 32505858 name is "mtdblock2"
rw
yaffs: passed flags ""
VFS: Mounted root (yaffs filesystem) on device 31:2.
Freeing init memory: 112K
Failed to execute /linuxrc. Attempting defaults...Kernel
panic - not syncing: No init
found. Try passing init= option to kernel.
See Linux Documentation/init.txt for guidance.
[]
(unwind_backtrace+0x0/0xf8) from
[] (panic+0x58/0x19c)
[] (panic+0x58/0x19c) from
[]
(init_post+0xc0/0x138)
[] (init_post+0xc0/0x138)
from []
(kernel_init+0xe8/0x124)
[] (kernel_init+0xe8/0x124)
from []
(kernel_thread_exit+0x0/0x8)
可以看出,内核任然出现panic。上述提示信息可以看出yaffs2添加已经完成,下一步需要构建文件系统。