一、移植YFFS2文件系统
yffs文件系统更加支持nand设备
上节移植了jffs2文件系统(点击查看)到移植的内核中,这节我们将yffs2文件系统移植到刚移植好的内核中。
(1)获取源码并解压
git clone git://www.aleph1.co.uk/yaffs2
tar xjf yaffs2.tar.bz2
(2)给内核打上yffs2补丁
./patch-ker.sh c m /home/book/linux-3.4.2
++
(3)配置内核支持YAFFS
1. ls fs/yaffs2
(4)编译、生成uImage
出错,制作yffs2 source工程.
(5)修改错误内容
修改:
加上下划线
+
等等多处需要添加下划线。
再次编译出现如下错误:
+
搜索s_root 查看其它文件系统如何使用
更换函数名称 解决问题
make uImage 继续解决一系列缺少——的问题。
(6)编译成功后,拷贝新内核到NFS
cp arch/arm/boot/uImage/work/nfs_root/uImage_yaffs
(7)制作、烧写yaffs映象.
mkyaffs2image fs_mini_mdev_new fs_mini_mdev_new.yaffs2
uboot-2012的操作:
nfs 30000000 192.168.1.101:/work/nfs_root/fs_mini_mdev_new.yaffs2
nand erase.part rootfs
nand write.yaffs 30000000 260000 $filesize
set bootargs console=ttySAC0,115200 root=/dev/mtdblock3
nfs 32000000 192.168.1.101:/work/nfs_root/uImage_yaffs
bootm 32000000
uboot-1.1.6的操作:
nfs 30000000 192.168.1.101:/work/nfs_root/fs_mini_mdev_new.yaffs2
nand erase root
nand write.yaffs 30000000 260000 $(filesize)
set bootargs console=ttySAC0,115200 root=/dev/mtdblock3
nfs 32000000 192.168.1.101:/work/nfs_root/uImage_yaffs
bootm 32000000
到此yffs2在内核上挂接成功。
二、内核裁剪
看看此时内核大小:
MTD分区的时候 我们留给了内核2M的空间,所以要进行裁剪。
(1)查看.config,此时内核支持多种单板:
make menuconfig
/来查找AT2440
去掉不需要支持的单板:
(2)文件系统裁剪
make menuconfig
还是大于2M,尝试根据打印信息去掉一些:
1:
2:
这个需要配置上
3
4
5
6此时内核小于2M
制作了u-boot_new.bin, uImage_new,fs_mini_mdev_new.yaffs
重烧整个系统:
使用jtag工具烧u-boot_new.bin
或使用uboot来更新自己: tftp30000000 u-boot_new.bin; nand erase.part u-boot; nand write 30000000 u-boot
启动uboot,用它来烧写内核、FS
tftp 30000000 uImage_new; nand erase.partkernel; nand write 30000000 kernel
tftp 30000000 fs_mini_mdev_new.yaffs2; nanderase.part rootfs; nand write.yaffs 30000000 260000 $filesize
设置参数
set 'nand read 30000000 kernel;bootm30000000'(根据print)
set bootargs console=ttySAC0,115200root=/dev/mtdblock3
set machid 16a
save
三、内核打补丁
使用内核补丁:
patch -p1 < ../linux-3.4.2_100ask.patch
cp config_ok .config
make uImage