![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测室 . 技术文库 . 会员区 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
|||||
| NAND Flash上均匀损耗与掉电恢复在线测试(下) | |||||
作者:胡一飞 徐… 文章来源:单片机与嵌入式系统应用 点击数: 更新时间:2008-1-14 ![]() |
|||||
|
作者:同济大学 胡一飞 徐中伟 谢世环 来源:单片机与嵌入式系统应用
EOnlyOld、EOnlyNew、ENewOld和EDefault分别表示3种不同的保护方式和默认保护方式(由原文件系统提供)。SProInfo结构不仅记录保护方式,还记录了该文件名,供关闭文件时使用。 yaffs_openEx()根据传入的保护方式,修改打开文件的标志,以显式地设置原有的②、③两种保护方式。当保护方式为EOnlyOld时,yaffs_openEx()将打开另一个新的临时文件,并返回给用户使用。传入的SProInfo结构的指针,将带回文件名和文件句柄,供关闭文件时用。yaffs_closeEx()函数在关闭文件时,检查文件的保护方式。若为第②、③种情况,则直接关闭;若为第一种情况,则先删除原文件,再把新文件重新命名,以达到文件保护的目的。 使用方法如下: ① 使用默认方式,则与原文件系统使用方法相同。新参数默认为NULL,可以直接兼容己有代码。 SProInfo pif; 对进行上述改进后的扩展方法进行测试,结果同改进前;但增加了只保留旧文件的第一种保护方式,程序运行良好。 对源代码进行深入研究,发现在Spare区掉电不能恢复的问题出在Spare区的Tag信息自检验部分。yaffs_GetTagsFromSpare()函数从Spare区读取Tag信息的过程中,调用yaffs_CheckECCOnTags()检验Tag信息。但是,原代码对ECC校验错误的Spare区,只是将错误修正,并返回到上层函数;上层函数仅记录Tag出错次数,并不做处理。因此,在Spare区掉电时,会出现不可恢复的错误。 修改yaffs_GetTagsFromSpare()函数的返回类型为int,以返回Spare区的ECC校验错误信息。当yaffs_CheckECCOnTags()返回Tag校验错误时,yaffs_GetTagsFromSpare()函数将此错误返回。在调用此函数的地方,进行相应的修改: 当Spare区ECC出错时,调用yaffs_DeleteChunk(),删除该页。因掉电引发的Spare错误不可恢复的问题,经修改后运行良好。 结语 YAFFS文件系统是专门为NAND闪存而设计的,它使得价格低廉的NAND闪存芯片具有了高效性和健壮性;但YAFFS文件系统在性能上还存在着问题,并不完全适用于对性能苛求的嵌入式系统。本文针对YAFFS文件系统中均匀损耗和掉电恢复两个重要指标进行测试,给出了测试结果,并针对测试过程中存在的部分问题提出了改进方案。实际测试表明,改进后系统性能有明显改善,能适应更多的应用环境。 参考文献 [1] 沈建华,罗悦怿. 基于NAND Flash的FFS设计与实现[J]. 计算机应用与软件,2005(6). 胡一飞、谢世环(硕士研究生),主要研究方向为嵌入式软件测试; |
|||||
| 欢迎点击进入:TI德州中文网 (国内唯一针对TI应用的中文技术网站) 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| NAND Flash上均匀损耗与掉电… |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|