移植内核学习笔记3-----支持yaffs文件系统

yaffs文件系统是专门为nand flash定义的一种文件系统格式,比jffs更适用于nand flash,yaffs文件系统源码并没有合并到内核里面去

1、yaffs文件系统

(1)源码在http://www.yaffs.net/下载

进里面我们可以看到在GIT中我们可以获得yaffs


用git命令来获得,格式如下


(2)如果系统没有装git工具,需要先安装git


安装后下载yaffs源码,


下载后得到一个yaffs2目录,里面包含有官方提供的所有源码


怎么使用看readme文件

查看里面的例子


(2)打补丁

进入yaffs目录,打补丁


(3)配置内核

上面的命令把下载到的yaffs源码拷贝到内核里面


然后进行配置,搜索yaffs,选上yaffs2 file system support


(4)编译时出现错误

结构体没有某个成员


没有d_alloc_root函数,在新的yaffs里面用到这个函数,但是我们内核根本没有实现这个函数,应该用成什么函数,


看看root在其他文件中怎么用,s_root是dentry结构体


搜索s_root,看看在别的文件系统里面怎么用,用的是d_make_root函数,而不是我们的d_alloc_root函数,因而把


因而修改函数


(5)编译和拷贝


(6)制作yaffs文件映像


2、实验

(1)下载yaffs文件系统


(2)擦除、烧写


(3)设置参数、下载内核


(4)用bootm 32000000启动内核

出现问题,挂载了上去。


用替代法查找问题


下载u-boot


擦除、烧写


用reset命令重启、然后重新下载yaffs


1.1.6版的u-boot擦除命令没有之前的.part后缀,烧写命令引用长度要加上括号

设置环境变量,下载新内核,然后启动


(5)用旧的u-boot启动没有问题,所以新的u-boot存在问题

查看cmd_nand.c

如果我们加了.yaffs的话,就调用函数nand_write_skip_bad.会传入一个参数flag(WITH_YAFFS_OOB)


函数nand_write_skip_bad里面

check_skip_len函数判断里面有没有坏块,有坏块就忽略并跳过。


如果flash没有坏块,且标志项不为WITH_DROP_FFS的话,也没有yaffs标志,走下面分支。


所以要添加flag&WITH_YAFFS_OOB这一项(在Nand_util.c)


但是我们走的分支是下面,如果上面还需加上一项


(6)重新下载烧写u-boot



(7)下载yaffs映像文件,擦除分区



(8)下载内核、烧写启动内核成功




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值