您的位置:首页 > 编程语言 > PHP开发

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

2016-09-17 15:11 555 查看
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里面用到这个函数,但是我们内核根本没有实现这个函数

,应该用成什么函数,







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

[b]


[/b]

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






因而修改函数






[b](5)编译和拷贝[/b]






(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[b]_YAFFS_OOB这一项(在Nand_util.c)[/b]






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






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











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











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









内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: