积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> DSP >> 应用论文
  相关分类: 应用论文 | TI DSP | 新产品 | 算法 | 下载 | DSP代码示例 | ADI DSP | freescale DSP |
NAND Flash上均匀损耗与掉电恢复在线测试
 
作者:同济大学 胡一飞 徐中伟 谢世环   来源:单片机与嵌入式系统应用    点击数:368   更新时间:2007-12-20
您可以添加到网摘 让更多人关注此文章:

    

摘要 NAND Flash以其大容量、低价格等优势迅速成为嵌入式系统存储的新宠,因此其上的文件系统研究也日益广泛。本文简要介绍了常用的NAND Flash文件系统YAFFS,并针对YAFFS在均匀损耗和掉电恢复方面进行在线测试。在给出测试结果的同时,着重研究嵌入式软件测试方案和方法;对测试结果进行分析,并提出改进方案和适用环境。

关键词  NAND Flash  均匀损耗  软件测试  YAFFS

引言

  随着嵌入式技术在各种电子产品中的广泛应用,嵌入式系统中的数据存储和管理已经成为一个重要的研究课题。Flash存储器具有速度快、容量大、成本低等很多优点,因此在嵌入式系统中被广泛用作外存储器件。嵌入式系统中的Flash存储器需要有自己的文件系统,而不能直接移植通用文件系统, 主要有两个原因:  第一,嵌入式系统的应用条件恶劣,电源电压不稳定,突发性断电以及非法插拔都容易造成灾难性的影响,通用文件系统对于可靠性的设计考虑不足;第二,通用文件系统的记录信息(FAT)需要被多次修改,而记录信息放在Flash存储器固定的区块中,将导致该区块的频繁操作,从而缩短Flash器的使用寿命。这样就对软件技术提出了更高的要求。

  为了管理复杂的存储硬件,同时提供可靠高效的存储环境,出现了基于NANDNOR的文件系统。目前主流的FFSFlash File System)有如下3种:TrueFFSJFFSx以及YAFFSYAFFS(Yet Another Flash File System)是专门为NAND Flash设计的嵌入式文件系统,适用于大容量的存储设备。它是日志结构的文件系统,提供了损耗平衡和掉电保护等机制,可以有效地减小上述原因对文件系统一致性和完整性的影响。本文正是基于这样的前提,介绍了关于嵌入式YAFFS文件系统测试方案,针对文件系统中损耗平衡和掉电保护两个重要的系统性能指标进行实时在线的测试与分析,不同的应用环境使用该文件系统应进行相应的修改。

1  YAFFS文件系统概述

  YAFFS文件系统类似于JFFS/JFFS2文件系统。不同的是,JFFS1/2文件系统最初是针对NOR Flash的应用场合设计的,而NOR FlashNAND Flash本质上有较大的区别。尽管JFFS1/2文件系统也能应用于NAND Flash,但由于它在内存占用和启动时间方面针对NOR的特性做了一些取舍,所以对NAND来说通常并不是最优的方案。

1  YAFFS文件系统数据的存储布局

2  YAFFS文件系统测试方案总体设计

2.1  测试总体说明

  YAFFS文件系统是开源的,测试基于白盒测试。在所关心的代码段中,插入测试代码。为保证测试代码不对原代码造成影响,测试后可立即恢复为原代码,所有测试代码(包括测试用变量和函数)均嵌入到#define FS_TEST宏定义中。

2.2  模拟文件的生成

  嵌入式环境下对文件系统进行大量、长时间的测试存在很多问题,不易实现,对测试代码的插入和数据的监视也比较困难。这里采用PC模拟测试的形式,用文件的读/写模拟NAND器件,并在PC上对模拟文件监视,以达到测试的目的。代码定义了各种NAND器件的类型,以适应不同的器件。模拟器件时,也用这些信息生成相应的模拟文件。

  指明要模拟的NAND器件的大小(FILE_SIZE_IN_MEG)和结构(BLOCKS_PER_MEGBLOCK_SIZE)后,按照相应的大小和结构生成文件g_filedisk

均匀损耗测试

3.1  测试目的

  NAND Flash器件每个Block区块的擦写次数有限。在需要实时记录的应用环境中,为保证器件寿命,应尽量使每个区块的擦写次数相对平均,以最大程度地延长NAND Flash器件的使用寿命。此项测试记录每个Block区块的擦写次数,以测试YAFFS文件系统在均匀损耗方面的性能。

3.2  测试方法

  测试代码在器件模拟文件的每一页的Spare区后,增加了字节,用于记录该页的擦写次数。由于擦写是以Block为单位进行的,因此每个Block各页的擦写记录数是相同的。在以后的测试中,可以只使用第一页的该Block空间记录擦写次数,其他空间作其他测试用。

  测试代码插入到CheckInit()yaffs_FEEraseBlockInNAND()yaffs_fileem.cpp)中,在初始化器件模拟文件时,生成(新模拟文件)或读取(己有模拟文件)擦写次数;并在程序执行擦写函数时,对擦写次数进行累加和保存。

  测试程序用到的测试变量: 记录擦写次数的数组-g_ersNumArray[FILE_SIZE_IN_MEG*BLOCKS_PER_MEG]、指向擦写的最大值-g_pErsMax和指向擦写的最小值g_pErsMin

  测试程序用WireOut0.logWireOut1.log两个文件记录每个Block区块的擦写次数,查看这两个文件,可以看到每个区块的擦写次数以及最大/最小值。两个文件是等同的,因测试时间比较长,取两个文件以避免系统在写记录文件时出错,而丢失所有的记录;两个文件轮流写,保证至少有一个文件的内容是系统出错前最近的记录。

3.3  测试结果

  YAFFS文件系统按顺序使用未分配的空间用于新的写入操作,并以同样顺序擦除废弃的区块。写入和擦除操作,均按顺序在未分配的空间或废弃的空间中进行。当系统未用空间小于某一预设值后,系统将对存在废弃页的区块进行回收。这种写入和擦除策略在一定程度上保证了损耗的均匀性。

  这种机制虽然在一定程度上满足均匀损耗的要求,但还是存在问题,并不适用于所有的嵌入式应用环境。假设在一块16 MBNAND器件上,有10 MB空间用来存放相对固定、不经常修改的数据文件,则经常修改的文件只能在剩下的6 MB空间上重复擦写,在这6 MB空间上做到均匀损耗。对整个器件来说,系统并没有合适的搬移策略对固定文件进行搬移,整个器件做不到均匀损耗。在实时记录信息量比较大的应用环境中,应编写相应的搬移策略函数,对固定文件进行定期的搬移,以确保整个NAND器件的均匀损耗。

掉电恢复性能测试

4.1  测试目的

  文件系统应能保证在系统突然断电的情况下,最大限度地恢复(保护)有用数据。如果在修改一个文件时掉电,那么掉电后的文件保护方式根据实际情况可分为3种:

①  用旧文件完全代替新写文件,新写文件(没写完)被忽略。这种保护方式应用比较多,比如在更新设置时掉电,使用掉电前的设置,用户是可以接受的。
② 
用新文件完全代替旧文件(新文件写了多少就保留多少)。这种保护方式适合应用于文本的情况,比如短信。新短信虽然不完整,但根据情况用户可以得到部分信息,如果发送方信息完整或属于可猜测的情况,则可以要求发送方重发。
③ 
己写部分用新文件,未写部分用老文件,所谓新加旧的保护方式。这种保护方式可以应用在动态更新的文件上。但是,对于使用偏移量进行的文件读写操作,采用这种保护方式,会产生乱码。

4.2  测试方法

  测试代码随机产生掉电消息,模拟一次掉电行为。测试代码插入到yaffs_FEWriteChunkToNAND()yaffs_fileem.cpp)中,在写Data区和Spare区时分别产生随机掉电位置,模拟掉电行为。掉电后,程序重新挂接文件系统,并读取掉电时正在更新的文件,与原文件相比给出判定结果。

  程序用到的测试变量: 掉电类别g_tstPowerOff,1Data区掉电,2Spare区掉电。在完全模拟时,掉电类别随机产生。程序用TestLog.log记录掉电后判定的结果。TestLog.log为增加方式打开,新记录写在最后,不影响原有的记录结果。

4.3  测试手段

  模拟一次掉电行为,需要进行特殊的处理。实际的掉电行为在电源重新供给后,整个系统会重新开始,包括重新启动文件系统。掉电前系统的所有参数、系统堆栈以及现场均失效。在测试中模拟掉电行为有一定的难度,直接断电既不安全,也不现实,可用exit()函数中止程序来模拟。在执行写操作时,写入随机的字节数后,用exit()函数立即中止程序的运行;再重新启动程序,读取掉电时写入的文件,分析文件以检查文件系统新的掉电保护功能。

  上述测试手段不适用于自动测试,也不可能手工进行大量的测试。笔者在该项测试中,巧妙地使用了try{}catch{}结构,既模拟了实际的掉电行为,又保证了自动测试的顺利进行。

模拟掉电行为的核心代码如下:

#ifdef FS_TEST//测试代码段

4.4  测试结果

  YAFFS-NAND文件系统,只提供上述的两种文件保护方式。在打开文件时,若以截短为0”的方式打开已有文件,则保护方式为第种,使用新文件完全代替旧文件。若以修改的方式打开己有文件,则保护方式为第种,使用新加旧的保护方式。

  需要注意的是: 在数据区掉电的情况下,以上两种保护方式完好,测试通过。但在Spare区掉电的情况下,文件系统有很大的概率读不出掉电时的文件,几乎不能正常使用。在实际掉电情况中,按Data区和Spare区的比例关系(512∶16),写操作掉电时发生在Spare区的概率为3.03%,不可接受。另外,文件系统不提供旧文件的保护方式,对于这类应用(还是比较多的)需要另外实现。

4.5  YaffsNAND在掉电保护方面的改进

4.5.1  增加保护方式

  Yaffs-NAND文件系统在原理上决定了只能有上述的两种文件保护方式。要提供第一种保护方式,需要对文件系统进行扩展,增加2个函数和2个结构体:

结语

  YAFFS文件系统是专门为NAND闪存而设计的,它使得价格低廉的NAND闪存芯片具有了高效性和健壮性;但YAFFS文件系统在性能上还存在着问题,并不完全适用于对性能苛求的嵌入式系统。本文针对YAFFS文件系统中均匀损耗和掉电恢复两个重要指标进行测试,给出了测试结果,并针对测试过程中存在的部分问题提出了改进方案。实际测试表明,改进后系统性能有明显改善,能适应更多的应用环境。

参考文献

[1]  沈建华,罗悦怿. 基于NAND FlashFFS设计与实现[J]. 计算机应用与软件,20056.
[2] 
罗赟赛,李项军,赵锡凑,等. NAND闪存在嵌入式Linux信息代理中的实现[J]. 仪器仪表用户,2005(5).
[3] 
毛勇强,黄光明. YAFFS文件系统在嵌入式Linux上的实现[J]. 电子设计应用,2006(1).
[4] 
孙天亮,陈伟元,王豪才. 嵌入式系统中K9F5608U0M NAND闪速存储器的应用[J]. 单片机与嵌入式系统应用2002年合订本(7~12)2002.
[5] 
吴娴. 一个嵌入式Linux文件系统的优化[J]. 计算机应用与软件,2005(7).



相关文章
· NAND Flash上均匀损耗与掉电恢复在线测试[288]
· 数控设备软件测试的解决方案[348]
· NAND Flash上均匀损耗与掉电恢复在线测试[236]
· NAND Flash上均匀损耗与掉电恢复在线测试(下)[670]
· NAND Flash上均匀损耗与掉电恢复在线测试(上)[686]
热门评论排行
·VHDL设计中电路简化问题的
·ARM嵌入式系统基础教程(N
·江苏嵌入式Linux教育培训
·ARM处理器应用开发4步骤
·锐极LINUX驱动培训班定于

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
严冬期如何发展半导体业 扩
2008年中国集成电路市场回顾与展望
分析师:亚洲芯片厂商库存远超预期
2008年基础电子业十大事件点评
Aptina并购智多微手机软件平台设
凌力尔特公司推出用于多核处理器的&n
安森美半导体任命麦满权为韩国及南亚区
Broadcom:半导体产业依然机会
飞思卡尔推i.MX51芯 
日立芯片守卫新年倒数计时晚会
 
热门下载 [更多]
 
[ PCB设计] Protel99教程下载
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
 
论坛新帖 [更多]
 
低价专业PCB打样 双面板20...
深圳市天漠科技超低价供应atm...
深圳市天漠科技超低价供应ARM...
[推荐]2.5米精度,高灵敏度...
830实验箱+电脑没有并口...
[原创]平望科技助力自服终端国...
低价专业PCB打样 双面板20...
[原创]低价专业PCB打样 双...
Bootloader for ...
【有奖调查】08-09嵌入式开...

 
赞助商 [更多]
 

ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网