2440超详细uboot移植笔记(十五)------支持YAFFFS文件系统

你好!这里是风筝的博客,

欢迎和我一起交流。


a.u-boot本身支持对jffs2格式文件系统的nand指令操作,但是没有支持yaffs2的格式,所以我们要修改使其支持yaffs2格式文件系统指令操作。

在u-boot中搜索.yaffs,并找不到相关代码,所以我们转而搜索.jffs2 ,可以在u-boot-2016.05\cmd\nand.c:do_nand函数中发现相关代码。

观察可发现u-boot关于nand的操作指令就是在u-boot-2016.05\cmd\nand.c:do_nand函数中。

 

b. 在nand.c文件(路径:cmd\nand.c)的do_nand函数中,

找到CONFIG_CMD_NAND_TRIMFFS的#ifdef语句,

在其#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(mtd, off, &rwsize, NULL,
maxsize, (u_char *)addr,
WITH_YAFFS_OOB);
#endif

 

 

 

 

c. 在nand.h(路径:include\nand.h)文件中,添加一个宏定义:

#define WITH_YAFFS_OOB (1 << 0)

 

 

d .在nand_util.c(路径:drivers\mtd\nand\nand_util.c)文件中的nand_write_skip_bad函数中,添加如下代码:

接下来if (!need_skip && !(flags & WITH_DROP_FFS){修改为:

if (!need_skip && !(flags & WITH_DROP_FFS) && !(flags & WITH_YAFFS_OOB)) {

 

 

 

 

e. 在mtd.h(路径:include\linux\mtd\mtd.h)文件中,添加:

typedef enum {
MTD_OOB_PLACE,
MTD_OOB_AUTO,
MTD_OOB_RAW,
} mtd_oob_mode_t;

 

f.在smdk2440.h添加宏定义:

#define CONFIG_CMD_NAND_YAFFS

 

g.make编译之后,会发现报错:

./scripts/check-config.sh u-boot.cfg \

 

                ./scripts/config_whitelist.txt . 1>&2

comm: file 2 is not in sorted order

Error: You must add new CONFIG options using Kconfig

The following new ad-hoc CONFIG options were detected:

 

h.我们可以把顶层Makefile的这两句话用#注释掉:

 

$(srctree)/scripts/check-config.sh u-boot.cfg \

$(srctree)/scripts/config_whitelist.txt ${srctree} 1>&2

 

i. 据说把scripts/config_whitelist.txt文件中所有2410字样改成2440可以完美解决出现的报错,而不需要像h那样做,有待考证.

 

 

j. 如果烧写的是jffs2文件,记得设置bootargs=console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=jffs2

 

 

-----------------------------------------------(完)-----------------------------------------------

小记:

uboot现在是271k左右,感觉还是有点大,应该还可以继续剪裁下

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值