网络技术

找论坛
zst_banyue
Lv5 太平洋舰队上尉
太平洋舰队上尉 贡献966,距离下一级还需134贡献
楼主
2018-02-08 10:43 0 0 只看楼主
电梯直达 
YAFFS2介绍
YAFFS(Yet Another Flash File System)是第一个专门为NAND Flash存储器设计的嵌入式文件系统,适用于大容量的存储设备。YAFFS 是基于日志的文件系统,提供磨损平衡和掉电恢复的健壮性。它还为大容量的Flash 芯片做了很好的调整,针对启动时间和RAM 的使用做了优化。它适用于大容量的存储设备,Yaffs代码已成功用于许多不同的32位和64位CPU,包括MIPS,68000,ARM,ColdFire,PowerPC和x86,甚至被用于各种DSP架构芯片。
目前有YAFFS和YAFFS2两个版本,YAFFS1和YAFFS2主要差异在于PAGE读写size的大小,YAFFS2可支持到2K Bytes page, 远高于YAFFS的512 Bytes, 因此对大容量NAND Flash更具优势。YAFFS2是目前NAND Flash的首选文件系统。
YAFFS2具有如下特点:

  • 使用C代码编写,支持大端和小端处理器,易于移植。
  • 提供nand flash坏块处理机制和ECC校验算法,可发现并纠正一定量的位翻转。
  • 采用日志式文件系统设计,异常掉电不会造成文件系统破坏,掉电后恢复速度快。
  • 拥有高度优化和可预测的垃圾收集策略,具有优异的性能和高度的确定性。
  • 比大多数日志式文件系统具有更低的内存占用。
  • 支持POSIX接口,易于使用。
YAFFS2移植
1. YAFFS2源码获取
代码分为如下几部分:
A、核心文件系统代码,位于yaffs2目录下
评论
B、直接接口文件,位于yaffs2/direct目录下
评论
C、flash驱动程序示例,以及用于测试的模拟器和配置,位于yaffs2/direct/ test-framework目录下
D、相关测试用例,位于其他目录下
2. 添加文件
将如下文件拷贝到AliOS-Things/kernel/modules/fs/yaffs2目录下,并编写相应makefile或者添加到相应的工程。
评论
a) 这些文件在位于源码的yaffs2和yaffs2/direct目录下。
b) yportenv.h、yaffs_attribs.c文件有多个,前者使用direct目录下版本,后者使用yaffs2目录下版本。
c) yaffs_alios.c、yaffs_install_drv.c、yaffs_install_drv.h这三个文件用于适配AliOS-Things和驱动,见kernel/modules/fs/yaffs2目录。
3. 代码适配
3.1 增加相应数据和函数定义
a) yportenv.h
增加如下代码:
评论
b) yaffsfs.c
增加如下代码:
评论
c) yaffs_list.h
增加如下代码:
评论
3.2 对接操作系统
与AliOS-Things适配的操作系统接口已经实现好,直接包含yaffs_alios.c即可。
该文件中实现了yaffsfs_Lock、yaffsfs_Unlock、yaffsfs_CurrentTime、yaffsfs_malloc、yaffsfs_free等函数的对接,另外还创建了一个用于yaffs的后台任务。
yaffsfs_CheckMemRegion函数用于检查内存地址是否有效,需用户自己根据具体硬件补充实现。
操作系统接口函数列表如下:
评论
3.3 对接nand flash驱动
yaffs_install_drv.c用于yaffs对接nand flash驱动,用户需根据硬件配置param中的参数,并实现如下驱动函数:
评论
完成以上步骤即完成YAFFS2的移植。

您需要登录后才可以发帖 登录 | 立即注册

其他登录方式:

常用表情
太平洋电脑网论坛帖子仅代表作者本人意见,不代表网站立场。请勿轻信特价、汇款、中奖等信息,
请勿轻易透露个人资料,因此产生的一切后果,PConline不承担任何责任
回复 发新帖 找论坛 反馈 回顶部