1、先看u-boot能否支持烧写jffs文件系统
(1)先用tftp命令下载文件系统到SDRAM ,然后擦除nand flash 的rootfs分区,然后把文件系统烧写到0x00260000里面,0x00260000不能直接用rootfs替换。因为下载的文件肯定会小于rootfs分区,如果用rootfs写肯定会把不相干的内容都写进去
(2)先下载查看文件的大小
(2)擦除分区,并写把文件大小为5b89a8的文件写进nand flash
(3)设置启动参数
对于jffs文件系统来说,启动参数要修改一下
(4)成功挂载,jffs是一个压缩的文件系统
2、看u-boot能否支持烧写yaffs文件系统
(1)重启、下载、烧写
(2)擦除、烧写
出现未知的nand命令后缀.yaffs
(3)查看代码
nand命令对应common\cmd_nand.c
在此文件中搜索.yaffs,需要定义宏CONFIG_CMD_NAND_YAFFS
所以修改配置文include\configs\smdk2440.h
添加宏CONFIG_CMD_NAND_YAFFS的定义
(4)修改后进行编译、烧写
各命令间用分号隔开,下载u-boot.bin到nor flash
重启后下载文件系统
擦除然后烧写
启动后出现以下错误,虽然可以挂载上去,但说找不到init程序。
3、对比文件fs_mini_mdev.yaffs2
(1)用UE工具打开fs_mini_mdev.yaffs2文件
文件里面的OOB,因为每一页是2048,按下Ctrl+H转到2048处
但发现与在nand flash地址260000的地方读到的OOB内容不一样
(2)用nand dump命令查看烧写到nand flaah的260000的地方的文件内容
看页数据
看OOB
(3)查看cmd_nand.c
如果是yaffs文件的话,调到函数nand_write_skip_bad烧写
函数nand_write_skip_bad中rval参数有问题,如果返回0是成功的,返回非零值是失败的。第二个问题是我们的OOB要用原始的。(在Nand_util.c里面)
因而更改如下
(4)重新编译, 下载烧写
(5)用reset命令重启u-boot,然后烧写文件系统
下载、擦除、烧写、启动
4、制作u-boot补丁
(1)先make distclean清除掉生成的目标文件
(2)把u-boot重新命名,以防重复
(3)解压未经修改的u-boot,用diff命令制作补丁,前面的是未经修改的u-boot,后面是修改后的u-boot,生成的是补丁文件。
(4)打补丁、配置、编译(make)