微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 行业新闻动态 > 嵌入式系统中基于闪存平台的存储管理策略

嵌入式系统中基于闪存平台的存储管理策略

时间:06-29 来源:电子技术应用 点击:

在嵌入式系统中,由于闪存成本低、容量大、非易失、访问速度高和机械故障少的优势已逐渐成为最流行的存储大量数据的存储器。然而,闪存常见的用法是简单的流模式,它没有提供文件的存储和管理功能。解决问题的方法是建立一个管理存储空间和数据信息的文件系统。目前,商用闪存文件系统(FFS)通常是与DOS兼容,这将产生一个复杂的文件目录[1],这种系统不实用且浪费资源。

由于嵌入式系统软硬件的限制,在应用于通用计算机系统的标准文件系统(例如用于Win32/DOS的FAT和用于Linux的EXT)时,必须进行相应修改以适应嵌入式环境。在通用的文件系统趋向于简单化和专业化的进程中,研究主要集中在以下几个方面[2,3]:在一个小的高速存储器上实现嵌入式系统处理速度和有限资源的平衡;实现特定性能,如用于满足不同的嵌入式应用环境的数据加密和运行的可靠性的功能;提高嵌入式系统的实时性能。事实上,不少嵌入式系统是根据客户的特殊要求定做的。针对这种情况,开发了具有高可靠性的简化嵌入式闪存文件系统,与复杂的商用文件系统相比,这个嵌入式计算机数值控制系统更实用。


1 FFS存储结构和框架

嵌入式系统中闪存有以下特点:(1)闪存以扇区为单位执行,如果修改扇区内1 B的数据,则整个扇区的数据都将被重写;(2)通常任一扇区可重写大约0.1~1万次;(3)损坏扇区难免。在计算机数控系统中应用了闪存特性和局部处理程序访问特征,在逻辑上非结构化的数据流模式被应用到FFS,在物理上存储空间以扇区为基础分成不同的块[4]。闪存文件系统(FFS)不仅提供了根据文件名查找和访问文件,使得有限的存储空间得到合理和充分利用,而且还提供基于存储内容的擦写策略损坏扇区的适应性管理,因此,在某种程度上FFS的可靠性有所提高。

为了使闪存文件系统在不同的平台上更易于进行维护、升级和移植,基于Madnick分层模型设计了一个文件系统分层结构。图1所示的文件系统包括2个主要部分:文件管理单元和存储空间管理单元。较低层为上层部分提供服务。每一层仅涉及接口,而不是更低或上层内部结构。

2 存储空间管理

作为嵌入式系统的一部分,闪存存储管理的主要功能包括提高使用效率、加快执行速度和根据其物理特性使用特殊算法管理闪存内存单元的使用频率[5]。存储空间管理单元在逻辑上由3个层次组成:文件物理层、存储设备分配层和闪存驱动层[6]。闪存驱动层为上层提供最基本的驱动程序,如下:

2.1 存储扇区管理

本文开发的FFS存储结构类似于MS-DOS的FAT,是FAT系统的修改。图2显示了一系列模式的基本存储结构。


系统记录区(SRA)存储介质信息和最重要的文件系统信息,如闪存类型、容量、扇区数和扇区利用现状。这个扇区的利用状况包括文件数、未使用的扇区数、损坏扇区数、第一个和最后一个未使用的扇区编号。图3显示了在SRA上的内存分配。文件信息区域(FIA)用于存储文件的详细信息,如文件名、文件类型、文件大小、文件属性和闪存链表项。程序数据区(PDA)用于存储程序数据。在图2阴影部分是每个区域损坏的扇区。如果损坏的扇区数达到给定界限值,警报将自动启动。图3为SRA上的内存分配情况,不同部分存储特定的记录信息:1为闪存内存类型;2为闪存内存容量;3为扇区数;4为文件数;5为未使用扇区数;6为损坏的扇区数;7为最后一次写入FIA的扇区组数;8为第一个未使用扇区号;9为最后未使用扇区号;10为系统记录控制的关键字;11为下一个要写入的扇区号。

不同的系统有不同的存储空间管理模式,最简单的可能是一个命令模式,但它并不适用于某些特殊应用。例如,在计算机数控系统中使用命令模式,用户不方便编辑、修改或者删除由各种机器处理指令组成的G代码程序。另一个常用的方式是静态存储模式,这意味着每一个文件分配固定的扇区数。在这种情况下,如果文件大小超过了给定的空间,虽然仍有未使用的扇区,但写操作却不能成功完成。同样,小文件显然将导致存储空间浪费。此外,由于过度频繁地访问同一个文件,与其他的扇区相比这样的扇区更易于损坏。因此,静态存储模式不是一个很好的选择。

为了克服这些问题,提出了一个动态存储空间管理模式,采用平均擦除和写入策略。先入先出(FIFO)的引入,保证了闪存存储扇区的平均使用。当系统第一次加电,未使用的扇区都初始化为一个双链表。此后,这些扇区应该从链表头节点转到尾节点。这样,在访问每个扇区的频率将趋于平等,每个扇区将不会过度频繁读取/写入。假设链表有N个节点,每个扇区访问的概率只有1/N,因此,闪存的使用寿命可

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top