嵌入式系统中的Flash存储管理
式化,建立ID扇区。该模块在第一次使用数据盘之前调用,相当于低级格式化。过程如下:
①调用FMM初始化模块,根据结果判断该存储体是否含有FMM控制信息。如果有,将擦除次数计数器EraseCount加1,否则置为1。
②调用Flash驱动程序,将FMM所管理的空间全部擦除。
③将Block0的标志置为0x80,即下一个被整理的Block,也是第一个非空Block。
④收集有关信息,创建ID扇区写入Flash。
⑤在内存中创建空间映射表。
空间映射表的创建过程如下:
①清空内存中为映射表和ID扇区申请的空间。
②将Flash中的ID扇区内容读入内存中。
③扫描整个物理空间,依次读入每个物理扇区的状态和逻辑扇区号,将状态为INUSE的逻辑扇区号装入空间映射表的对应位置,并记录INUSE和DIRTY扇区的数目。
④修复扫描中发现的DAVLID扇区数据。
修复DAVLID扇区的过程如下:
①取出DVALID扇区的逻辑扇区号。
②如果逻辑扇区号为NULL,跳到步骤⑤。
③查询空间映射表,如果对应的物理扇区号为NULL,跳到步骤⑤。
④将查到的物理扇区置为DIRTY。
⑤将DAVLID扇区置为INUSE,将其扇区号填入空间映射表。
(2)初始化模块
该模块在文件系统初始化之前调用,用于初始化FMM系统。
①从内存池中为ID扇区申请内存。
②从内存池中为空间映射表申请内存。
③在内存中创建空间映射表。
(3)存取模块
该模块是FMM与文件系统的接口,可以分为读和写两部分。
*读数据过程:
①根据所要读取的逻辑扇区号,查表找出其对应的物理扇区号;
②根据物理扇区号计算出物理地址;
③读出该扇区数据;
④如需读多个扇区,重复步骤①~③。
*写数据流程;
Flash存储器中“写入”是将对应单元由“1”变“0”,“擦除”是由“0”变为“1”。因此,无须擦除就可以将状态FREE(0xF)依次“写”为DVALID(0xE)、INUSE(0xC)、DIRTY(0x8),如图3所示。
(4)空间整理模块
由于在写入操作中产生dirty扇区,因此当自由空间不足时,需要对空间进行整理,释放dirty扇区占用的空间用于存储数据,流程如图4所示。
根据图4可以看出,整理的过程实际是将有用扇区依次搬到空扇区中,再擦除旧块的过程,因此需要一个空块用作数据交换。
5FMM性能分析
*读出速度:读取速度基本与Flash的读速度相同。
*写入速度:写入操作速度与Flash的写入速度基本相同。
*整理速度:空间整理上由于算法的限制会耗费很长的时间,最好挑选除速度较快的Flash来进行配合使用;或者可 《嵌入式系统中的Flash存储管理(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/145686.html
①调用FMM初始化模块,根据结果判断该存储体是否含有FMM控制信息。如果有,将擦除次数计数器EraseCount加1,否则置为1。
②调用Flash驱动程序,将FMM所管理的空间全部擦除。
③将Block0的标志置为0x80,即下一个被整理的Block,也是第一个非空Block。
④收集有关信息,创建ID扇区写入Flash。
⑤在内存中创建空间映射表。
空间映射表的创建过程如下:
①清空内存中为映射表和ID扇区申请的空间。
②将Flash中的ID扇区内容读入内存中。
③扫描整个物理空间,依次读入每个物理扇区的状态和逻辑扇区号,将状态为INUSE的逻辑扇区号装入空间映射表的对应位置,并记录INUSE和DIRTY扇区的数目。
④修复扫描中发现的DAVLID扇区数据。
修复DAVLID扇区的过程如下:
①取出DVALID扇区的逻辑扇区号。
②如果逻辑扇区号为NULL,跳到步骤⑤。
③查询空间映射表,如果对应的物理扇区号为NULL,跳到步骤⑤。
④将查到的物理扇区置为DIRTY。
⑤将DAVLID扇区置为INUSE,将其扇区号填入空间映射表。
(2)初始化模块
该模块在文件系统初始化之前调用,用于初始化FMM系统。
①从内存池中为ID扇区申请内存。
②从内存池中为空间映射表申请内存。
③在内存中创建空间映射表。
(3)存取模块
该模块是FMM与文件系统的接口,可以分为读和写两部分。
*读数据过程:
①根据所要读取的逻辑扇区号,查表找出其对应的物理扇区号;
②根据物理扇区号计算出物理地址;
③读出该扇区数据;
④如需读多个扇区,重复步骤①~③。
*写数据流程;
Flash存储器中“写入”是将对应单元由“1”变“0”,“擦除”是由“0”变为“1”。因此,无须擦除就可以将状态FREE(0xF)依次“写”为DVALID(0xE)、INUSE(0xC)、DIRTY(0x8),如图3所示。
(4)空间整理模块
由于在写入操作中产生dirty扇区,因此当自由空间不足时,需要对空间进行整理,释放dirty扇区占用的空间用于存储数据,流程如图4所示。
根据图4可以看出,整理的过程实际是将有用扇区依次搬到空扇区中,再擦除旧块的过程,因此需要一个空块用作数据交换。
5FMM性能分析
*读出速度:读取速度基本与Flash的读速度相同。
*写入速度:写入操作速度与Flash的写入速度基本相同。
*整理速度:空间整理上由于算法的限制会耗费很长的时间,最好挑选除速度较快的Flash来进行配合使用;或者可 《嵌入式系统中的Flash存储管理(第3页)》