适宜于嵌入式多媒体应用的Flash文件系统
中华工控网
|
|
摘要:嵌入式多媒体应用中大量数据存储在Flash上,本文以文件系统的方案解决数据存<BR> 储的管理问题。对嵌入式多媒体应用中Flash文件系统的应用特点与关键设计进行了分析<BR> ,设计实现了一个功能完整的文件代号管理、文件指针存取以及对应用透明的自动坏损管<BR> 理的文件系统。针对嵌入<BR> 式系统应用的需要,改进了本Flash文件系统的应用可靠性,降低了其系统资源开销。针<BR> 对多媒体应用的数据特点,提出了存储内容自适应的环境管理策略。仿真与实用的效果表<BR> 明,本Flash文件系统适宜于嵌入式多媒体应用。</P><P> 关键词:嵌入式系统 多媒体Flash存储器 文件系统</P><P> 随着电子技术的不断发展,嵌入式系统越来越多地在控制类、消费类、通讯类等电子产品<BR> 广泛应用,并且随着数字信号处理与人机交互界面等相关技术的不断成熟,嵌入式多媒体<BR> 应用数量也逐渐上升。多媒体业务的数据量大,数据内容复杂,在多媒体应用中数据的存<BR> 储与管理是不容回避的<BR> 问题。Flash存储器制造成本低廉、存储容量大、数据非易失、无机械故障,在目前的嵌<BR> 入式系统中被广泛用作外存储器件。然而Flash存储器却是一种数据正确性非理想的器件<BR> ,应用中可能会出现坏损数据单元,这又给应用Flash存储器嵌入式系统进行数据存储管<BR> 理增添了新的难度[1]。</P><P> 在嵌入式系统中应用Flash存储器最好的办法是在其上构造一个文件系统,对Flash存储器<BR> 中的数据内容进行基于文件代号的存储管理,同时对于Flash存储器本身的坏损单元自动<BR> 进行应用透明的坏损管理。目前在通用计算机上已经有很多成熟的文件系统,如DOS下的<BR> FAT文件系统、Windows <BR> NT下的NTFS文件系统及UNIX文件系统等[2]。但是这些文件系统并不适合直接用到嵌入式<BR> 系统中进行多媒体数据内容的存储:第一,嵌入式系统的应用条件远比计算机恶劣,电源<BR> 电压的不稳定以及突发性断电将对Flash的存储造成灾难性的影响,通用文件系统对于可<BR> 靠性的设计考虑不足;第<BR> 二,通用文件系统是针对系统资源非常丰富的计算机平台并基于速度较慢的磁盘驱动器,<BR> 它们常常大量使用缓存技术,如注重文件系统的速度特性,要耗费比较多的系统资源。这<BR> 与嵌入式系统中系统资源十分有限,Flash存储器又相对于磁盘驱动器较快的应用情况不<BR> 用;第三,嵌入式系统 <BR> 写娲⒂贔lash上的内容很多是多媒体数据资料,这些数据内容往往鸡一定程度的误码损伤<BR> ,未必需要如通用文件系统那样严格保证存储的正确性。通过灵活的校验机制与坏损管理<BR> ,达到更优化的存储速度与更高效的存储空间利用,这对成本敏感的嵌入式系统来说尤其<BR> 具有帮助。</P><P> 基于上述考虑,设计了一个适合嵌入式多媒体应用的Flash文件系统。它不仅支持文件代<BR> 号管理、文件指针存取以及应用透明的自动坏损管理这些通用文件系统所具有的功能,并<BR> 且在文件系统的可靠性以及文件系统的额外资源消耗方面进行了改善;此外还引入了基于<BR> 存储内容自适应的坏损 <BR> 芾聿呗裕佣垢肍lash文件系统更加适合嵌入式多媒体应用。</P><P> 1 Flash存储器的操作特点</P><P> Flash存储器在读取方面与普通的SRAM存储器类似,一般可以实现完全随机的读取。Flas<BR> h存储器最大的不同在于写操作方面。Flash存储器的写操作需要经过“擦除—写入”两个<BR> 操作过程。当希望对Flash存储器的某一个单元进行写入时,首先必须对这个存储单元所<BR> 在的区块(Block)执行 <BR> 脸僮鳎脸僮鞒晒ν瓿珊螅銮榈氖菽谌荻急磺蹇眨ㄒ话惚簧柚贸?xFF);<BR> 然后对目的单元所在的页面(Page)执行写入操作,需要一次写入整个页面的全部数据内<BR> 容(也有一次Flash存储器支持部分页的写入,这样可以分多次写完一个页面,但是一旦<BR> 写过的存储单元数据就不<BR> 能再被更改),操作成功后要进行数据正确性的校验。</P><P> 一个区域(Block)包含一个或多个页面(Page),一个页面包含多个数据存储单元(字<BR> 节或字)。</P><P> 为了增强所设计Flash文件系统在不同Flash存储器上的移植能力,选取了3个最基本的操<BR> 作作为本Flash文件系统与Flash存储器设备的应用接口:区块擦除(Block_Erase)、页<BR> 面写入(Page_Write)、页面读出(Page_Read)。这样虽然可能会忽略某些Flash存储器<BR> 产品的独有特性,但却增<BR> 加了所设计的Flash文件系统对同Flash存储器产生的适应能力。另外現lash存储器写入<BR> 的时间瓶不在于数据传递,而是Flash存储器内部的擦除和写操作等;Flash存储器读出的<BR> 速度和微处理器处理数据的速度都很快,因此虽然将读和写的基本单位扩大到了页面,但<BR> 额外增加的操作时间是 <BR> 芏痰摹 </P><P> 2 Flash文件系统的基本结构</P><P> 本Flash文件系统在基本结构上与MS-DOS的FAT文件系统类似[3]。MS-DOS是一个应用于几<BR> 十年的商业化软件产品,其FAT文件系统技术成熟、结构简单、系统资源开销小,易于在<BR> 嵌入式系统的硬件平台上实现。本Flash文件系统的基本结构如图1所示,整个文件系统包<BR> 括如下几个部分:</P><P> (1)系统记录(SR,System <BR> Record)存放媒质信息和最重要的文件系统信息。媒质信息诸如Flash存储器的类型、容<BR> 量,划分成多少个区块,每区块包含多少个页面等。文件系统信息包括版本信息、保留区<BR> 块的数目和位置、文件分配表和文件登记表所在的位置和大小、数据区域的位置和大小等<BR> 。</P><P> (2)文件分配表(FAT,File Allocation Table)存放着Flash存储器上所有区块的占用<BR> 与空闲情况以及每个文件的存储连接结构。MS-DOS <BR> FAT文件系统中有12位、16位、32位三种不同的FAT格式。考虑到在微处理器上实现的方便<BR> 性并权衡Flash文件系统应用的规模,选择将文件分配表固定为16位的格式。</P><P> (3)文件登记表(FRT,File Register Table)存放着Flash文件系统中每一个文件的文<BR> 件代号、文件长度、文件属性以及该文件的存储链在文件分配表中的入口。考虑到嵌入式<BR> 系统的应用范围,本Flash文件系统不支持子目标结构。</P><P> (4)数据区域(Data Area)用于存放文件的数据内容。本Flash文件系统中,数据分配<BR> 的最小单位是Flash存储器的一个基本擦除单元,即一个物理区块(Block)。</P><P> 本Flash文件系统提供:文件系统的格式化(Format)、文件的创建(Create)、删除(<BR> Delete)、打开(Open)、关闭(Close)、读(Read)、写(Write)、文件指针的移动<BR> (Seek)、位置读取(Tell)等基本的功能。程序主体代码ANSI <BR> C语言写成,使用一个非常小的Flash存储器设备驱动接口,扩展及移植的能力都比较好。</P><P> 3 提高Flash文件系统的可靠性</P><P> 在MS-DOS的FAT文件系统中,仅仅对数据区域提供坏损管理,而对于它的主引导记录、文<BR> 件分配表和根目录这三个极重要的文件系统数据结构却未做任何保护(虽然MS-DOS的FAT<BR> 文件系统中存在着两张FAT表,但是DOS只是简单地复写第二张FAT表而从不使用它)。一<BR> 旦这三个区域的内容出现 <BR> 坏闶В厝坏贾挛募莸拇罅克鹗АA硗猓绻庑┦萁峁沟拇娲⑶蚍⑸锢<BR> 硇运鸹担岬贾抡糯排痰谋ǚ稀U庠谟蒄lash存储器占据很大成本比重的嵌入式应用<BR> 中,是非常不希望的。</P><P> 归结起来,嵌入式系统中的Flash存储器主要面临两大类不稳定因素:一是Flash存储器本<BR> 身可能出现物理性的损坏;二是嵌入式系统面对较多的突发掉电与重启动,造成Flash存<BR> 储器写操作的异常终止。</P><P> 针对Flash存储器的物理损霈问题,除对文件数据区域提供坏损管理外,还将系统记录、<BR> 文件分配表和文件登记表这三个文件系统重要数据结构采用浮动位置的方法存储。即不仅<BR> 对文件数据存储进行动态的分配管理,对于Flash文件系统中这三个重要数据结构也不固<BR> 定其存储位置。这样可以<BR> 避免因它们的存储区域发生物理损坏造成整个文件系统失效。具体做法是:对于系统记录<BR> 定义一个系统记录保留区,将系统记录存在这个区域内,确切的位置在文件系统初始的时<BR> 候通过标识幻数(Magic <BR> Number)的方法扫描找到;而文件分配表和文件登记表则存放在文件数据区域内,通过系<BR> 统记录中的索引项找到。</P><P> 针对Flash存储器的写操作异常终止问题,将6系统记录、文件分配表和文件登记表这三个<BR> 对Flash文件系统最重要的数据结构均进行双份的存储改善其安全性。在文件系统的操作<BR> 中,程序对每一个表结构的两个备份进行顺次修改,以此确保Flash存储器上总是存有一<BR> 整套完好的系统记录表、<BR> 文件分配表和文件登记表。在系统被启动运行时,文件系统会首先进行自检,通过这三个<BR> 表结构中的标识幻数,以及最开关和最末尾的更新序列号可以确定每一张表备份的合法性<BR> 和时效性,判断出前次系统关闭中存在着的操作异常终止并及时更正。通过这样的设计,<BR> 即使文件系统大使用中<BR> 出现了写操作异常终止的情况,错误将只涉及当时被操作的文件数据,不会扩散给Flash<BR> 文件系统中的其它文件,更不会因此损坏三个文件系统表结构,造成整个文件系统的彻底<BR> 瘫痪。</P><P> 通过以上两个方面的改进,本Flash文件系统的可靠性比于MS-DOS FAT文件系统有了很大<BR> 的提高。从实验1和实验2的仿真结构可以看到,即使在Flash极不可靠和写操作异常防止<BR> 频发的最恶劣工作条件下,本Flash文件系统也能够保持可靠工作,从而使之能够适合于<BR> 嵌入式系统的应用。</P><P> 实验1 高坏损率状况下本Flash文件系统的可靠工作</P><P> 实验条件<BR> Flash存储器规格:16 KB/Block×1024Block,设定Flash页面的写入坏损概率为1%,对<BR> 单一文件重复进行(打开文件,写入1KB数据,关闭文件)10000次操作。 <BR> 实验结果<BR> 完成后文件总长度 10,240,000 Bytes <BR> 被文件数据占用的Flash空间 625 Blocks <BR> 损坏块占据的Flash空间 342 Blocks <BR> FAT和FRT被操作的次数 11583次 <BR> SR被操作的次数 223次 <BR> 同条条件MS-DOS FAT文件系统仍能保持工作的概率(即其主引导记录、文件分配表、根目<BR> 录区域无物损坏的概率) 2.9E-52 </P><P> 实验2 频繁写操作异常终止状况下本Flash文件系统的可靠工作</P><P> 实验条件 Flash存储器规格:16 KB/Block×1024Block,预先存储5个文件,文件长度分<BR> 别为k×100KB(k=1..5),模拟写操作进行当中,发生系统掉电类事故,造成写操作异常中<BR> 止。 <BR> 实验结果 实验次数 100次 <BR> 导致SR、FAT或FRT出错的次数 71次 <BR> Flash文件系统启动自检时发现并更正文件系统错误的次数 71次 <BR> Flash上已有的5个文件受损的次数 0文件×0次 </P><P> 4 降低Flash文件系统的资源消耗</P><P> 嵌入式系统相对于通用计算机系统来讲,往往有荷刻得多的成本要求,需要嵌入式系统尽<BR> 可能低的系统资源配置。尤其对于Flash文件系统这种用于增强系统功能的服务性质模块<BR> ,就更需要降低对系统资源的消耗,才能够扩大其使用的范围。</P><P> 就Flash文件系统的资源消耗来讲,主要包括程序代码开销、处理器占用时间、运行时内<BR> 存开销以及额外的Flash存储器消耗。其中,运行时内存开销最限制Flash文件系统的应用<BR> ,同时设计结构的改善与运行时内存开销直接相关。所以针对资源消耗的结构优化主要着<BR> 重于降低运行时的内存 <BR> </P><P> Flash存储器的擦除单位是区块(Block),这是本Flash文件系统中数据存储分配的最小<BR> 单元。如果不采用任何措施的话,运行时内存开销中将至少包括备份一个完整区块数据的<BR> 缓冲区。但一个Flash存储器的区块可能很大(Sumsung[TM]KM29U128是16KB),这在很多<BR> 嵌入系统中都是过大的 <BR> 试纯ㄗ钔ㄓ玫?位微处理器MCS-51系列,总线寻址的能力只有64KB),必须进行改进。</P><P> 为此,采用交换缓冲区(Swap <BR> Buffer)技术来解决这个困难。当需要准备某一个区块的数据时,并不直接向该区块写入<BR> ,而是首先擦除用于做交换缓冲区的区块,然后逐步向交换缓冲区填入目的数据内容。因<BR> 为此时,任何有用数据内容都未被破坏,所以运行内存中的缓冲就可以做得比较小。当交<BR> 换缓冲区填写完成后,<BR> 再擦除目的区块,拷贝交换缓冲区内容到目的区块。</P><P> 采用交换缓冲区后,对内存中的缓冲区大小没有特别要求,考虑到Flash存储器的操作特<BR> 性,选取Flash存储器的页面(Page)容量魑诖婊撼迩笮 T诮峁股献髁松鲜龈慕?后,虽然大大降低了Flash文件系统的运行时内存消耗,但代价是将一个数据区块的写入<BR> 时间延长了一倍。不过一 <BR> 愕腇lash存储器中都有一特点制作的区块,该区域保证不会损坏,正好适用做交换缓冲区<BR> 。这样就可以省去中间交换缓冲过程的数据完整性检验,加快写操作的速度。</P><P> 表1给出了在与MCS-51兼容的微处理器上本Flash文件系统实例,对Sumsung KM29U128 Fl<BR> ash存储器(16KB/Block×1024Block)[4]进行管理应用中的系统资源开销。地于一般的<BR> 成本要求来讲,是可以接受的。</P><P> 表1 一个应用实例中本Flash文件系统的系统资源开销</P><P> 程序代码开销 8.28 KB <BR> 额外的Flash占用 8 Blocks/1024 Blocks=0.78% <BR> 运行时RAM开销 总和 0.79 KB <BR> 页面缓冲区 0.50 KB <BR> 文件打开表 0.13 KB <BR> FAT项更新表 0.08 KB <BR> 其它 0.08 KB </P><P> 5 基于存储内容的自适应环境管理策略</P><P> 嵌入式系统中应用Flash存储器,与多媒体相关的应用占据相当的比例,如数码相机、语<BR> 音监录、MP3播放器等。存储在Flash上的内容多数是多媒体数据流,这种应用相对于普通<BR> 文件系统的单纯数据业务具有其自己的数据特点。据此在本Flash文件系统上提了出了基<BR> 于存储内容的自适应坏损<BR> 管理策略。</P><P> Flash存储器上存储的内容包括数据文件和多媒体数据流。数据文件对于数据完整性要求<BR> 很严格,不允许存储中出现任何错误。但多媒体数据流则不同,很多种多媒体数据流允许<BR> 一定情况下传输差错,一些甚至允许传输差错很严重,如CVSD编码的语音。而Flash存储<BR> 器的区块发生物理损坏时<BR> ,经常是只有几个bit出现错误,其它部分却是完好的。综合考虑这两个方面的因素,就<BR> 可以对不同内容的数据流赋予不同的数据完整性要求。这样一方面充分发挥了Flash存储<BR> 器的存储能力,另一方面也可以降低弱数据完整性要求的数据检验强度,提高数据写入速<BR> 度。</P><P> 在本Flash文件系统中,把不同数据内容对于数据完整性的要求分成一个组别:0、1和2级<BR> 。其中,0级的数据完整性最高,不允许在存储中出现任何差错, <BR> 用于数据型的好。2级的数据完整性要求最低,允许出现较多的差错,用于抗差错性强的<BR> 多媒体码流。相应地,对于Flash存储器的每个可用区块,也按照其物理损坏的程度分成<BR> 对应的三个级别:0级的区块所有的存储单元都完好;2级的区域则存在着比较多的损坏位<BR> ;损坏程度超过2级允许 <BR> 那槌晌沟姿鸹悼椋荒茉偈褂谩4娲⒌脑蛭憾杂谔囟ǖ拇娲⒛谌萦盟鸹导侗鸩怀<BR> 涫萃暾砸蠹侗鸬腇lash区块存储。</P><P> 同时,在存储不同数据完整性要求的内容时,采用不同强度的差错校验。存储0级内容时<BR> ,每一次写入都进行差错校验,存储1级和2级内容时,以1/N的概率进行差错校验。差错<BR> 校验的结果更新该物理存储区块的损坏级别,但是损坏级别只升不降。最初的损坏级别在<BR> 格式化并建立文件系统时<BR> 设定。</P><P> 通过实验3的结果可以看到,采用存储内容自适应的坏损管理策略后,对于可容错的多媒<BR> 体码流,存储效率和存储速度都可以得到明显提高。并且,设定合适的校验概率所发生的<BR> 漏检率是很低的。</P><P> 实验3 内容自适应的坏损管理策略对多媒体数据流的应用效果</P><P> 实验条件<BR> Flash存储器规格:16KB/Block×1024Block。<BR> 0级块,不允许出现损坏,每次写入都进行校验,对应理想存储媒质;<BR> 1级块,允许1~2 bits损坏,以1/4概率校验,对应3.8E-6差错率;<BR> 2级块,允许3~8 bits损坏,以1/32概率校验,对应6.1E-5差错率。<BR> 设定Flash页面的写入以1%概率损坏1个bit,对单一文件重复进行<BR> {打开文件,写入1KB数据,关闭文件}的操作10000次。 <BR> 实验结果<BR> 存储0级数据(纯数据业务) 存储1级数据(低容错多媒体业务) 存储2级数据(高容错<BR> 多媒体业务) <BR> 被文件数据占用Flash空间 0级Blocks 625 0级Blocks 547<BR> 1级Blocks 78 0级 Blocks 616<BR> 1级 Blocks 8<BR> 2级 Blocks 1 <BR> 无法于使用的Flash空间 348 Blocks 6Blocks 0 Blocks <BR> 对数据内容进行的写入校验次数 10000次 2564次 320次 <BR> 数据写入了未达要求的存储块,而检验漏过检出的次数 0次 1次 0次 </P><P> 针对嵌入式多媒体应用中大量数据在Flash上存储的管理问题,文件系统是一种比较全面<BR> 优秀的解决方案。本文对嵌入式多媒体应用中Flash文件系统的应用特点与关键设计进行<BR> 了分析,设计实现了一个适宜于嵌入式多媒体应用的Flash文件系。其主要特点包括:</P><P> (1)完全支持文件代号管理、文件指针存取以及对应用透明的自动坏损管理这些通用文<BR> 件系统所具有的功能。</P><P> (2)针对嵌入式系统的应用环境,设计改进了本Flash文件系统的可靠性,使其可以工作<BR> 在很恶劣的条件下。</P><P> (3)针对嵌入式系统的成本与系统资源限制,改进降低了本Flash文件系统的系统资源开<BR> 销,扩大了其应用范围。</P><P> (4)针对多媒体应用的数据特点,提出了基于存储内容自适应的坏损管理策略,提高了<BR> 在多媒体应用中的存储效率与存储速度。</P><P> 最终设计的Flash文件系统其结构如图2。</P><P> 通过仿真分析,本Flash文件系统相对类似MS-DOS FAT的基础系统,在可靠性、系统<BR> 资源开销等方面的性能提高是可观的,对于多媒体数据流在Flash存储器资源有效利用和<BR> 改善存储性能等方面,也有明显的改善。因此,本Flash文件系统很适合于嵌入式多媒体<BR> 应用。 <BR> <BR> <BR>
|
|
状 态:
离线
公司简介
产品目录
|
|
公司名称:
|
中华工控网
|
联 系 人: |
客服中心
|
电 话: |
0755-26546361
|
传 真: |
0755-26585268 |
地 址: |
深圳市南山区创业路现代城华庭1栋6A |
邮 编: |
518054 |
主 页: |
|
|
|
|
|