0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于闪存平台的嵌入式文件存储空间管理系统的设计与实现

电子设计 来源:郭婷 作者:电子设计 2019-07-16 08:09 次阅读

这里开发了一个基于闪存平台的嵌入式文件系统。为保证闪存扇区的平均使用率和均衡擦写次数,引入了损坏管理办法,在这种办法中采用了动态存储空间管理模式和先入先出(FIFO)策略。所采用的冗余设计、快速计算和跟踪办法还可以延长核心扇区使用寿命,保证系统启动可靠的服务。

1 FFS存储结构和框架

嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统对功能,对可靠性、成本、体积、功耗有严格要求的专用计算机系统。

闪存的英文名称是 \“Flash Memory\” ,一般简称为 \“Flash\” ,它也属于内存器件的一种。不过闪存的物理特性与常见的内存有根本性的差异:目前各类 DDRSDRAM 或者 RDRAM 都属于挥发性内存,只要停止电流供应内存中的数据便无法保持,因此每次电脑开机都需要把数据重新载入内存;闪存则是一种不挥发性 (Non-Volatile) 内存,在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,这项特性正是闪存得以成为各类便携型数字设备的存储介质的基础。

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

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

基于闪存平台的嵌入式文件存储空间管理系统的设计与实现

2 存储空间管理

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

基于闪存平台的嵌入式文件存储空间管理系统的设计与实现

2.1 存储扇区管理

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

基于闪存平台的嵌入式文件存储空间管理系统的设计与实现

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

基于闪存平台的嵌入式文件存储空间管理系统的设计与实现

不同的系统有不同的存储空间管理模式,最简单的可能是一个命令模式。另一个常用的方式是静态存储模式,这意味着每一个文件分配固定的扇区数。在这种情况下,如果文件大小超过了给定的空间,虽然仍有未使用的扇区,但写操作却不能成功完成。同样,小文件显然将导致存储空间浪费。另外,由于过度频繁地访问同一个文件,与其他的扇区相比这种更容易损坏。所以,静态存储模式不是一个很好的选择。

基于MS-DOS的FAT系统只为数据区提供损害管理,忽视了文件系统结构区域。相对地,SRA作为FFS结构区域,由于存储了系统关键信息而成为最重要的区域。而且因频繁访问, SRA往往更易损坏。所以,这一区域应当运用一种安全策略。可以充分利用闪存存储能力,写校验时间将会减少,从而写速度将有所改善。

2.2 SRA的平均擦除和写入管理

为了实现对System record area(SRA)平均擦除和写管理,避免由系统记录扇区物理损伤而导致整体系统的故障,SRA被平均划分成3个小组。3组依次进行写操作,可以为系统记录存储安全提供一个冗余策略,从而提高系统的可靠性,延长系统寿命。这对于每次在系统通电之后获取SRA代码值是必要的。由系统记录关键字(SysKeyword)控制的值,标记着系统关闭前最后一次写操作的系统扇区的执行记录,它显示为:

基于闪存平台的嵌入式文件存储空间管理系统的设计与实现

在系统初始化时,SRA中每组的相应系统变量关键字(1~3)初始化为0。在后续操作中,各组关键字(SysKeyword)的真实值应该更新,在系统每次启动时分别从SRA读出。因此,SysCodeValue的值可根据式(1)得到。执行最后一次写操作的组号可以通过调用函数GetLastGroup-Num()获得。一旦SRA的记录数据被更改,系统关键字应该相应更新。然后包括SysKeyword的记录数据,应写入到根据以下方法获得的相应扇区。

基于闪存平台的嵌入式文件存储空间管理系统的设计与实现

下一次将被写入的该系统记录扇区的组号与转移的参量LastGroupNum可以通过调用函数GetNextGroupNum(Uchar LastGroupNum)共同获得。SysCodeValue的值将更新如下:

SysCodeValue=SysCodeValue∧2NextGroupNum-1 (2)

通过组合式(1)和式(2)可以得到每组SysKeyword的值,因此,可以迅速查出最新和最旧的记录。该方法是一种快速计算和跟踪策略,这样,根据得到的组号和SysKeyword的值,写操作可以顺利执行。

该系统记录扇区的详细参数值如表1所示。

基于闪存平台的嵌入式文件存储空间管理系统的设计与实现

3 文件管理

文件管理层(FML)封装了整个文件系统,并且为操作系统和上层的应用程序提供统一标准的程序接口(APIs)。用户操作请求将被APIs移交到文件的逻辑层(FLL),然后将请求发送到文件的物理层(FPL)。

3.1 文件编辑

文件系统应提供友好的用户界面,图4显示编辑一个存储在闪存的文件流程图。首先要遍历文件信息链表,根据文件名来查找存储此文件信息的节点。因此,该文件存储空间的第一个扇区可获取,后续扇区依次获取。然后,每个扇区将逐个读取,数据将被写入缓冲区。通过建立一个双链表显示数据,然后通过人机界面进行编辑操作。最后,将修改后的数据写回到闪存,文件信息和系统记录将自动更新。

基于闪存平台的嵌入式文件存储空间管理系统的设计与实现

3.2 文件存储和文件删除

连续的文件存储结构模式(如图5中的文件N005和N011)在存储前,文件通常被划分成为大小相等的多个数据块。块的数量是由文件和块大小决定,而块的大小与存储介质有关。在本文中,闪存的存储单元(即扇区)为256 B,因此,该块的大小建议不超过256 B。块的数量(即被占用的扇区数)可以计算出,这是最低整数不少于文件字节大小除以块字节大小所得的商数。然后未使用的扇区链表的头节点作为这个文件存储空间的第一个扇区。紧随第一个扇区,很多未使用的扇区被取出后,整个文件的存储空间可用。该文件成功保存。

基于闪存平台的嵌入式文件存储空间管理系统的设计与实现

闪存的地址空间不允许随意被删除,删除一个文件时必须把扇区作为一个删除单元。因此,删除一个文件,要使用与编辑操作相同的手段获得该文件节点的存储信息,这样文件的信息可以使用。有了文件信息,文件的存储空间的第一个扇区可以得到,其他的也可以依次得到。然后未使用的扇区链表上的扇区可以通过调用函数FreeSect释放第一个扇区。最后,根据双链表的原则,这个节点将被删除。

要创建一个文件(文件名为N005,大小为912 B,第一个扇区是5号),未使用扇区链表的头节点作为这个文件的存储空间的第一个扇区。同时,在文件信息链表的尾节点写文件信息。这个文件的存储扇区数可以计算出来,结果被证明是4。然后,从未使用的扇区链表头部,4个扇区依次用于存储文件数据。从而,文件信息和系统记录更新后,文件的创建操作完成。

为了提高存储及管理嵌入式平台上文件数据的性能,本文提出了一种新的应用于闪存文件系统(FFS)的办法,有以下特点:

(1)减少写周期提高写入速度;

(2)采用动态分配存储空间,提高利用效率和延长闪存的使用寿命;

(3)相应的文件被删除后,存储扇区可以很快被释放,并可以连接到未使用的扇区链表;

(4)当损坏扇区的数量到达设置值时自动报警,确保系统处于良好状态;

(5)FAT分配的内存空间存储指针以数组的形式作为全局变量;

(6)为延长内核扇区寿命确保系统启动可靠服务,采用冗余设计、快速计算和追踪策略。

因此,本文中的FFS,特别是在可靠性、存储效率和良好的可移植性方面已获得明显的成效。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5069

    文章

    19022

    浏览量

    303420
  • FlaSh
    +关注

    关注

    10

    文章

    1622

    浏览量

    147762
  • 存储
    +关注

    关注

    13

    文章

    4265

    浏览量

    85677
收藏 人收藏

    评论

    相关推荐

    嵌入式系统U盘实时启动技术

    应用中,由于嵌入式系统功能的增强,系统映像文件的体积会不断增大,会出现超过目标板的程序存储空间的问题,从而使得新的映像
    发表于 12-25 19:40

    嵌入式Linux的文件系统及其存储机制分析

    嵌入式系统与通用PC机不同,一般没有硬盘这样的存储设备而是使用Flash闪存芯片、小型闪存卡等专为嵌入式
    发表于 09-22 15:58

    什么是基于闪存平台存储管理策略?

    作者:李建勋 樊晓光 禚真福来源:什么是基于闪存平台存储管理策略?在嵌入式系统中,由于
    发表于 07-31 08:17

    嵌入式掌上娱乐系统实现原理是什么?

    嵌入式游戏,增加了系统的娱乐性。使用触摸屏方便作为人机交互的平台。采用跨平台性能良好的Qt4 设计了应用程序和人机界面,界面友好,汉化显示,美观,操作简便,运行流畅。整个
    发表于 08-19 06:27

    嵌入式手持移动终端中文件系统实现

    器件而广泛应用于便携电子产品中。在Flash存储器中使用文件系统,可将存储空间当作直观的名称空间,不用在每次应用开发中都从头使用存储器,还可
    发表于 01-05 07:29

    嵌入式系统中的数据存储管理的相关资料分享

    【功能】: 嵌入式系统中的数据存储管理 数据查询【定义】:嵌入式数据库系统是指支持移动计算或某
    发表于 12-17 07:15

    基于嵌入式Linux操作系统的GUI平台设计与实现

    针对嵌入式系统低处理能力和低存储空间的特点,设计了GUI 平台的分层体系结构,并在此分层体系结构的基础上用C 和C++语言实现。GUI
    发表于 08-06 10:58 13次下载

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

    开发了一个基于闪存平台嵌入式文件系统。为保证闪存扇区的平均使用率和均衡擦写次数,引入了损坏管理
    发表于 09-30 16:24 21次下载

    基于闪存平台嵌入式文件存储管理系统

    嵌入式系统中,由于闪存成本低、容量大、非易失、访问速度高和机械故障少的优势已逐渐成为最流行的存储大量数据的存储器。然而,
    发表于 06-21 15:10 555次阅读
    基于<b class='flag-5'>闪存</b><b class='flag-5'>平台</b>的<b class='flag-5'>嵌入式</b><b class='flag-5'>文件</b><b class='flag-5'>存储</b><b class='flag-5'>管理</b><b class='flag-5'>系统</b>

    嵌入式Linux文件系统存储机制

    本文分析了嵌入式系统中常用的存储设备及其管理机制,介绍了常用的基于FLASH的文件系统类型
    发表于 05-14 10:22 1639次阅读
    <b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>文件系统</b>及<b class='flag-5'>存储</b>机制

    基于DSP平台嵌入式文件系统的开发与研究

    基于DSP平台嵌入式文件系统的开发与研究
    发表于 10-19 14:28 4次下载
    基于DSP<b class='flag-5'>平台</b>的<b class='flag-5'>嵌入式</b><b class='flag-5'>文件系统</b>的开发与研究

    VDK与嵌入式文件系统的投入使用

    由于低功耗、数据非易失、存储速度快、存储密度大等优点,Nand Flash在闪存行列中脱颖而出,常被用作大容量数据的存储媒质。随着存储系统
    发表于 03-27 10:50 1906次阅读
    VDK与<b class='flag-5'>嵌入式</b><b class='flag-5'>文件系统</b>的投入使用

    需要了解嵌入式Linux文件系统及其存储机制

    嵌入式系统与通用PC机不同,一般没有硬盘这样的存储设备而是使用Flash闪存芯片、小型闪存卡等专为嵌入式
    发表于 05-06 16:43 997次阅读

    基于μC/OS嵌入式操作系统嵌入式数据管理设计

    了程序查找空闲存储空间的难度,数据管理操作时间长(类似微机系统中硬盘长时间不做磁盘碎片整理会造成程序运行变慢的情况),另一方面可能造成存储空间利用率降低。本文提出了一种利用μC/OS任
    发表于 10-09 16:24 1217次阅读
    基于μC/OS<b class='flag-5'>嵌入式</b>操作<b class='flag-5'>系统</b>的<b class='flag-5'>嵌入式</b>数据<b class='flag-5'>管理</b>设计

    线性文件系统的设计方案在嵌入式应用管理Flash空间中的应用

    嵌入式系统中,为了便于对闪存(Flash)空间进行管理,会采用文件的形式来访问Flash。目前
    的头像 发表于 09-10 17:54 3015次阅读
    线性<b class='flag-5'>文件系统</b>的设计方案在<b class='flag-5'>嵌入式</b>应用<b class='flag-5'>管理</b>Flash<b class='flag-5'>空间</b>中的应用