十、移植u-boot-2016.03到Jz2440之修改源码烧写JFFS2、烧写YAFFS与制作补丁

本文详细介绍了如何在U-Boot 2016.03中移植并支持YAFFS文件系统,包括修改源码、烧写YAFFS文件系统、制作补丁等步骤,确保Linux内核能够成功启动并挂载YAFFS文件系统。

10. u-boot-2016.03移植之修改源码烧写JFFS2、烧写YAFFS与制作补丁

    前面我们通过修改uboot的代码让它支持串口、nand flash,nor flash,网络下载文件等功能,现在我们来实现最后一个功能,实现Uboot烧写YAFFS文件系统,同时制作uboot补丁方便以后的移植,避免重复造轮子。

10.1 烧写JFFS2文件系统

该uboot已经支持JFFS2文件系统的烧写了,我们先来烧写JFFS2文件系统,命令如下:

nfs 30000000 192.168.0.103:/home/book/works/first_fs/fs_mini_mdev.jffs2  //使用nfs下载fs_mini.jffs2文件系统到30000000地址
nand erase.part rootfs    //擦除rootfs分区
nand write.jffs2 30000000 rootfs $filesize  //使用nand write.jffs2将30000000地址的大小为filesize的文件写到rootfs分区

烧写完后,需要先设置文件系统的类型,在uboot中输入命令:

setenv bootargs console=ttySAC0 root=/dev/mtdblock3 rootfstype=jffs2

然后下载uImage:

nfs 32000000 192.168.0.103:/home/book/works/first_fs/uImage_4.3   //该uImage_4.3是Jz2440开发板资料提供的映像文件

然后输入以下命令,启动linux内核:

bootm 32000000

从下图的打印信息可知,linux成功挂载了JFFS2文件系统,启动成功。
在这里插入图片描述

10.2 修改代码支持YAFFS文件系统烧写

当前uboot不支持烧写YAFFS文件系统,可以验证一下,在uboot下执行以下命令:

nfs 30000000 192.168.0.102:/home/book/works/first_fs/fs_mini_mdev.yaffs2
nand erase.part rootfs
nand write.yaffs 30000000 rootfs $filesize 

打印信息如下:
在这里插入图片描述
上图显示:Unknown nand command suffix '.yaffs'.,说明此时的uboot还没有支持yaffs文件系统是烧写。
在uboot源码目录中搜索:Unknown nand command suffix,定位到cmd/nand.c 的do_nand函数,发现在do_nand函数里,有nand read或write的代码,而其中有对jffs2的支持,却并没有对yaffs2的支持。我们可以参考老版本的uboot(例如u-boot-2012.04.01的),在do_nand函数里的nand write/read部分加上一段代码,如下:

#ifdef CONFIG_CMD_NAND_TRIMFFS
        } else if (!strcmp(s, ".trimffs")) {
   
   
            if (read) {
   
   
                printf("Unknown nand command suffix '%s'\n", s);
                return 1;
            }
            ret = nand_write_skip_bad(nand, off, &rwsize, NULL,
                        maxsize, (u_char *)addr,
                        WITH_DROP_FFS | WITH_WR_VERIFY);
#endif
/*上面是原代码,在这里添加如下代码*/
#ifdef CONFIG_CMD_NAND_YAFFS
         } else if (!strcmp(s, ".yaffs")) {
   
   
            if (read) {
   
   
                printf("Unknown nand command suffix ‘%s‘.\n", s);
                 return 1;
            }
            ret = nand_write_skip_bad
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Louis@L.M.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值