中国·芯片交易在线
首页 | 供应信息 | 求购信息 | 库存查询 | 新闻中心 | 展会资讯 | IC厂商 | 技术资料 | 自由区域
   新闻首页 |  行业动态 | 新品发布 | 政策法规 | 科技成果 | 模拟技术 | 嵌入系统 | 传感控制 | 存储设计  
当前位置:IC72首页>> IC新闻中心>> 存储设计 >>电子行业新闻正文

FLASH存储管理子系统的设计与实现

时间:2008/6/11 9:34:00  作者:  来源:IC72  浏览人数:1418
 
 

      [摘要]:本文以TRI公司的基于NOR Flash的Flash管理软件FMM为例,详细介绍嵌入式系统中如何根据Flash的物理特性来进行Flash存储管理,并比较与不采用FMM的Flash在性能上的优劣。 

      关键词:嵌入式系统 Flash FMM

      引言

      Flash存储器是一种安全、快速的存储体,具有体积小、容量大、成本低、掉电数据不丢失等一系列优点。目前已经逐步取代其它半导体存储元件,成为嵌入式系统中主要数据和程序载体。 作为嵌入式系统存储和管理数据的功能单位,Flash存储管理的主要功能是针对Flash自身的物理特性,利用一些特定的算法来提高Flash的使用效率,加快操作速度和管理Flash各单元的使用频率。在线商城

      1. FMM子系统结构介绍:

      FLASH存储管理一般位于文件系统之下,FLASH底层驱动之上,当不存在文件系统时,可以由应用程序直接使用。

      FMM以扇区为基本管理单元,FMM上层(为应用程序或者为文件系统)只能看到逻辑扇区。逻辑扇区的总个数为FLASH可分配的虚拟扇区个数,编号从0开始。一个2M的FLASH,如果虚拟扇区大小为516字节,则支持的虚拟扇区个数为4064个,逻辑扇区从0~4063编号。物理扇区是指从FLASH的物理地址开始的扇区编号,每隔一个虚拟扇区大小,编号加1。

      由于Flash不能像普通磁盘那样进行字节的修改,甚至不能以扇区为单位进行修改;而只能以块为单位进行修改;但如果只是简单将物理扇区和逻辑扇区一一对应,那么如果我们想对扇区修改就必须将整个块的内容都擦除,然后再将修改后的内容回写;势必会造成时间和Flash寿命的损失。因此,建立一个物理扇区号和逻辑扇区号的空间映射表,使逻辑扇区与物理扇区号进行动态的匹配。这样,在修改某个扇区的内容时只要将数据写入一个新的扇区,然后将原扇区标记为DIRTY就可以了。这样,还可以消除频繁修改某个扇区带来的寿命不均的影响。

      映射表是建立在内存中的项数为M(扇区总数)的数组,每项占用2字节,用于存放对应的物理扇区号。当某项为空(NULL,用0xffff表示)时,认为该逻辑扇区空闲,未使用。

      为了实现以扇区为基础的数据管理,FMM首先对Flash中的块内存储空间逻辑上进行了重新定义,每个物理块内部又重新划分成了若干物理扇区。每个物理块内部又重新划分成了若干物理扇区。每个物理扇区由512+4字节=516(0x204)字节组成。512字节为有效数据空间,另外4字节(32位)用于存放逻辑扇区另和当前状态。定义如下:

      扇区状态  逻辑扇区号  数字空间
      4位         28位          512字节

      扇区状态有4种,用于进行掉电数据恢复:FREE—空扇区(0xF);INVALID—扇区数据无效(0xE);INUSE—扇区数据有效(0xC);DIRTY—扇区数据无用,可擦除(0x8)。

      一个物理块为一个基本擦除单位,从0开始编号。其内部包含n个扇区和一个标记。标记指示了下一个被整理的块,如果无下一个被整理的块则标记为0xffffffff。以64K大小的块为例,可以计算出每个块中可以划分出127个扇区;另外,还会有4字节的空间,专门用于标志下一个被整理块。标记为0x80808080,否则为0xffffffff。因此可以得出:

      物理扇区和绝对地址之间的对应关系:绝对地址=Flash基地址+物理扇区号×0x204+所在块号×4。块号与绝对地址之间的关系:绝对地址=Flash基地址+所在块号×64×1024。

      FMM中将扇区分为ID扇区和数据扇区两类。FMM会占用N个扇区作为标识ID(Identification)扇区,占用逻辑扇区号0~N。这一部分扇区是上层应用不能使用的,是FMM用于管理所占用的存储空间。因此上层应用所管理的逻辑扇区号必须从N+1开始。N的取值与坏扇区表的大小有关,每个FMM管理的物理扇区占用表中的1位。在每次存储数据时,可以通过查询表中的相应位来确定该扇区的有效性。III

      ID扇区主要包含如下数据:FMM版本号(2字节)、格式化次数FormatCount(2字节)、用户标识(4个字节)物理坏扇区表。目前我们N定义为1,则坏扇区表占用508字节,支持最大4064个坏物理扇区。

      2. FMM的功能划分:

      按功能,可以将FMM分解为4个基本模块:格式化模块、初始化模块、存取模块和空间整理模块。以下简单介绍各模块的操作流程。

      (1). 格式化模块

      对数据空间进行初级格式化,建立ID扇区。该模块在第一次使用数据盘之前调用,相当于低级格式化,提供接口FMMFormat()参数:FFM版本号,用户标识。

      其流程如下:格式化开始后,首先调用FMM初始化模块,将Block0标志设置为0x80,下一个被整理的Block,也是第一个非空Block。然后收集信息,创建ID扇区,最后在内存中创建空间映射表。

      (2). 初始化模块

      该模块在文件系统初始化之前调用,用于初始化FMM系统,其接口FMMInit()。

      其流程是:初始化开始以后,首先从内存池中为ID扇区申请内存,然后从内存池中为空间映射表申请内存,最后在内存中创建空间映射表。

      该模块提供空间映射表创建接口FMMMapTableCreate()。III

      创建空间映射表流程如下:首先清空内存中为映射表和ID扇区申请的空间,将Flash中的ID扇区内容读入内存中,然后扫描整个物理空间,依次读入每个物理扇区的状态和逻辑扇区号,将状态为INUSE的逻辑扇区号装入空间映射表的对应位置,并记录INUSE和DIRTY扇区的数目;最后修复扫描中发现的DAVLID扇区数据。

      该模块提供数据无效扇区修复接口FMMInvalidSectorRepair()。

      数据无效扇区修复过程如下:

IC72新闻中心

      (3)存取模块:

      该模块是FMM与文件系统的接口,可以分为读和写两部分:

      FMMRead()用户输入逻辑扇区号,扇区内偏移量,输出缓冲区,读长度。其流程比较简单:读数据开始以后,首先根据所要读取的逻辑扇区号,查表找出其对应的物理扇区号;然后根据物理扇区号计算出物理地址,最后读出该扇区数据。

      FMMWrite()用户输入逻辑扇区号,扇区内偏移量,输入缓冲区,写长度。写流程如图:

IC72新闻中心

写扇区流程图

      (4)空间整理模块:

      当磁盘空间不足时,对dirty扇区进行整理。其接口为FMMDefragment()用户提供空间整理的物理块号。

      其流程是:第一步:空间整理从物理块A开始,从A开始扫描后续块的标志字,找出被整理的块B;第二步:将块B所有状态为Inuse的扇区依次写入空扇区;第三步:标记B+1块标记为下一个被整理的块,如果A+1等于FLASH的最后一个块,将0块设置为被整理块;第四步:擦除块B;第五步:判断下一个被整理块是否为A?如果是,转到第六步;如果不是,转到第二步;第六步:将扇区中的擦除次数加1,结束。

      3. FMM的性能结论:

      通过FMM与Flash从读写速度和可用空间进行比较,我们得出以下结论:III

      读出速度:读取速度基本与Flash的读速度相同。

      写入速度:写入操作速度与Flash的写入速度基本相同。

      整理速度:空间整理上由于算法的限制会耗费很长的时间,最好挑选除速度较快的Flash来进行配合使用;或者可以采用其它的算法来进行空间整理,但会使寿命均衡有所减弱,必须根据具体的应用来选取适合的方案组合才能达到最好的效果。

      文件系统可用空间:由于FMM占用了一部分空间,因此实际文件系统可用空间小于Flash的实际物理空间。文件系统可用空间=Flash总空间-ID扇区空间-1个用于整理的保留块空间。

      4.本文创新点:

      通过运用FMM实现对Flash管理,从性能上与Flash相差无几,却提高Flash的使用效率,加快操作速度和管理Flash各单元的使用频率,具有很高的应用价值。

 
【相关文章】
·FLASH存储管理子系统的设计与实现
 
 
IC新闻搜索
 
热点新闻
基于红外超声光电编码器的室内移动小车定位系
基于闪烁存储器的TMS320VC5409DSP并行引导装载方法
非移动市场需求飙升,ARM预计2010年出货量超50亿片
一种快速响应的电容式湿度传感器感湿薄膜设计
利用特殊应用模拟开关改进便携式设计
无线传感器网络跨层通信协议的设计
基于ARM9内核Processor对外部NAND FLASH的控制实现
基于GSM技术的汽车防盗系统的设计
热电阻在烟叶初烤炕房温度控制中的应用
高速数据转换系统对时钟和数据传输的性能要求
友情连接
 关于我们  IC论坛  意见反馈  设置首页  广告服务  用户帮助  联系我们
copyright:(1998-2005) IC72 中国·芯片交易在线
(北京)联系电话:(010)82614113、82614123 传真:(010)82614123 客户服务:service@IC72.com 库存上载:IC72@IC72.com
在线MSN咨询:ic72sale8@hotmail.com 通信地址:北京市西城区西直门内大街2号大厦15层 邮政编码:100013
(深圳)联系方式: 在线MSN咨询:ic72sale6@hotmail.com 在线QQ咨询:191232636 通信地址:深圳市福田区振华路
注 册 号: 1101081318959(1-1)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9