先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题
本系列文章还是为了记录在学习韦东山老师的嵌入式开发教程中的课程笔记,并整理一个比较详细的课堂笔记,方便一起学习的同学们参考。
如果还没有购买韦老师的教学视频,或者不知道去哪里购买的,我这里给大家一个小程序链接
分享好视频资源后,我们开始今天的正式内容,话不多说,直接开始今天的修改步骤
- 环境准备
1.1 在ubuntu上安装gitsudo apt-get install git
1.2 如何获得yaffs文件系统,https://yaffs.net/get-yaffs
1.3 选择git下载git clone git://www.aleph1.co.uk/yaffs2
1.4 怎么使用yaffs呢,阅读yaffs2文件夹下面的README-linux - 给linux源码打yaffs补丁
cd yaffs2
chmod +x ./patch-ker.sh
./patch-ker.sh c m /work/system/linux-3.4.2-new
- 编译、配置yaffs2
cd /work/system/linux-3.4.2
make menuconfig
再重新配置yaffs2:
File systems --->
<*> Miscellaneous filesystems --->
<*> YAFFS2 file system support
- 编译并拷贝
make uImage
cp arch/arm/boot/uImage /work/nfs_root/uImage_2
- 制作yaffs文件系统
mkyaffs2image fs_mini_mdev_new fs_mini_mdev_new.yaffs2
- 烧写
nfs 30000000 192.168.0.109:/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 rootfstype=yaffs
nfs 32000000 192.168.0.109:/work/nfs_root/uImage_2
bootm 32000000
- 没有成功,用替代法查找问题,启动后发现,挂载成功了,但是启动失败,如图
7.1 uboot有问题,换上1.1.6的uboot
tftp 30000000 u-boot.bin //是韦老师教程里面提供的uboot,不是我们自己编译的uboot
nand erase.part u-boot //擦除老分区
nand write 30000000 u-boot //写入新分区
reset
nfs 30000000 192.168.0.109:/work/nfs_root/fs_mini_mdev_new.yaffs2
nand erase rootfs
nand write.yaffs 30000000 260000 $(filesize)
nand write.yaffs 30000000 260000 $(filesize)
set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=yaffs
nfs 32000000 192.168.0.109:/work/nfs_root/uImage_2
bootm 32000000
我们使用老版本的 uboot发现没有异常,说明我们之前自己移植的uboot仍然存在问题。
修改 G:\100ask\systems\u-boot2012.04.01\drivers\mtd\nand\nand_util.c,在函数 nand_write_skip_bad 中,增加入如下
if (!need_skip && !(flags & WITH_DROP_FFS) && !(flags & WITH_YAFFS_OOB))
烧写新版本uboot,并烧写新的kernel内核
nfs 30000000 192.168.0.109:/work/nfs_root/u-boot_new.bin
nand erase u-boot
nand write 30000000 u-boot
set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=yaffs
nfs 32000000 192.168.0.109:/work/nfs_root/uImage_2
bootm 32000000
再次启动正常,能够挂载并启动文件系统了