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

来源:互联网 发布:国家电影专项资金算法 编辑:程序博客网 时间:2024/05/21 04:38

你好!这里是风筝的博客,欢迎和我一起交流。

如果本篇博客对您有帮助,或许可以在下方评论给我留个言。


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 0