您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

嵌入式系统中的Flash存储管理

时间:2007-1-20栏目:电子通信论文

h的管理软件,其主要特点如下:
  
  *动态映射OS的逻辑扇区到物理地址;
  
  *所有物理块进行寿命均衡,同时可记录Flash的擦写次数;
  
  *掉电数据恢复,可以保证系统的稳定性;
  
  创建坏块表进行坏块管理,保证系统的可靠性。
  
  为了更好地介绍FMM的操作流程,这里先作几点说明。
  
  (1)存储空间管理
  
  为了实现以扇区为基础的数据管理,FMM首先对Flash中的块内存储空间逻辑上进行了重新定义,每个物理块内部又重新划分成了若干物理扇区。每个物理块内部又重新划分成了若干物理扇区。每个物理扇区由512+4字节=516(0x204)字节组成。512字节为有效数据空间,另外4字节(32位)用于存放逻辑扇区另和当前状态。定义如下:
  
  扇区状态逻辑扇区号数字空间4位28位125字节
  扇区状态有4种,用于进行掉电数据恢复:
  
  FREE—空扇区(0xF);
  
  DVALID—扇区数据无效(0xE);
  
  INUSE—扇区数据有效(0xC);
  
  DIRTY—扇区数据无用,可擦除(0x8)。
  
  以64K大小的块为例,可以计算出每个块中可以划分出127个扇区;另外,还会有4字节的空间,专门用于标志下一个被整理块。标记为0x80,否则为0xffffffff。
  
  因此可以得出物理扇区和绝对地址之间的对应关系:
  
  绝对地址=Flash基地址+物理扇区号×0x204+所在块号×4
  
  (2)扇区分类
  
  FMM中将扇区分为ID扇区和数据扇区两类:
  
  ①FMM会占用N个扇区作为标识ID(Identification)扇区,占用逻辑扇区号0~N。这一部分扇区是文件系统不能使用的,是FMM用于管理所占用的存储空间。因此文件系统所管理的逻辑扇区号必须从N+1开始。
  
  ID扇区主要包含如下数据:FMM版本号、写入(擦除)次数EraseCount、用户标识和坏扇区表。
  
  N的取值与坏扇区表的大小有关,每个FMM管理的物理扇区占用表中的1位。在每次存储数据时,可以通过查询表中的相应位来确定该扇区的有效性。
  
  ②数据扇区,用于存储数据。
  
  (3)空间映射表(MappingTable)
  
  由于Flash不能像普通磁盘那样进行字节的修改,甚至不能以扇区为单位进行修改;而只能以块为单位进行修改;但如果只是简单将物理扇区和逻辑扇区一一对应,那么如果我们想对扇区修改就必须将整个块的内容都擦除,然后再将修改后的内容回写;势必会造成时间和Flash寿命的损失。因此,建立一个物理扇区号和逻辑扇区号的空间映射表,使逻辑扇区与物理扇区号进行动态的匹配。这样,在修改某个扇区的内容时只要将数据写入一个新的扇区,然后将原扇区标记为DIRTY就可以了。这样,还可以消除频繁修改某个扇区带来的寿命不均的影响。
  
  映射表是建立在内存中的项数为M(扇区总数)的数组,每

上一页  [1] [2] [3] [4] 下一页

下页更精彩:1 2 3 4 下一页