当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]Flash损耗均衡的嵌入式文件系统设计

引言
    嵌入式系统的海量存储器多采用Flash存储器实现扩展,由于Flash存储器具有有限写入次数的寿命限制,因此对于Flash存储器局部的频繁操作会缩短Flash存储器的使用寿命。如何设计出一个合理的、针对嵌入式应用的文件系统,实现Flash存储器的损耗均衡,并且实现数据的有效管理,对于提高其使用寿命具有一定的意义。
    本文基于AVR单片机扩展Flash存储器和以太网控制器设计了一款嵌入式文件系统,实现数据存储和存储器使用的损耗均衡,为延长Flash存储器的使用寿命提供研究方法。
1 硬件平台设计
    本嵌入式文件系统选用Atmel公司的AVR单片机ATmega 128和Flash存储器AT45D13081。该Flash芯片具有8 Mb存储空间,共分为4096数据页,每页可存储264字节。通过串行外围设备接口SPI实现ATmega 128和AT45DB081之间的数据通信。文件系统的硬件结构如图1所示。其中,RTL8019AS是一种全双工即插即用的以太网控制器。



2 嵌入式文件系统总体设计
    文件系统的管理是通过把它所管理的信息组织成文件形式来实现的。文件是具有名称的相关信息元素的序列。从用户角度看,文件系统主要实现了按名存储;从系统管理的角度看,它主要实现了文件存储器的空间组织及分配、文件信息的存储以及文件的保护及检索。文件系统要借助于组织良好的数据结构和算法来有效地对文件信息进行管理,使用户更方便地存储信息。文件系统对于底层硬件的特性一般并不关心,只提供简单且标准的接口。
2.1 文件系统存储结构
    根据Flash芯片的特性,为了最快捷地实现文件数据的读取,本文件系统采用单级目录结构,利用链接页的方法管理Flash的存储空间。文件系统存储结构图如图2所示。在Flash存储器中,文件系统分为3部分:文件系统信息表(FAT)、文件控制块(File Control Block,FCB)和数据区(Data Area,DA)。


    文件系统信息表(FAT)用于存放文件系统的信息和属性。数据结构包含FAT的有效性标志、文件总数、第一个文件控制块的扇区号及其在存储器中的地址,以及当前FAT在存储器中的地址。
    文件控制块(FCB)是存放在Flash中的,表示文件的静态信息。数据结构包含文件名(11字节之内)、文件首簇所在的扇区号、文件长度、文件属性、文件创建时间、下一个FCB的Flash地址以及文件控制块有效标志。文件控制块之间采用链表形式链接。
    文件句柄(File_Handle)是存放在内存中的,表示文件的动态信息。当用户打开或创建文件时,会在内存中申请一个文件句柄。数据结构包含文件句柄标示号、文件句柄状态、文件名、文件首簇号、首簇所在的扇区号、当前簇号、文件指针、文件长度以及文件的FCB地址。
    操作系统中将相邻的扇区组合在一起,形成一个簇,然后再对簇进行管理。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。为了更好地管理磁盘空间和更高效地从硬盘读取数据,操作系统规定一个簇中只能放置一个文件的内容,因此文件所占用的空间,只能是簇的整数倍。本文设计的文件系统规定一个簇的大小为存储器的一个页。[!--empirenews.page--]
2.2 文件系统体系结构
    如图3所示,文件系统对外接口函数为应用层提供统一的抽象接口和数据结构,应用程序通过文件系统对外接口函数来实现文件操作和设备管理功能,隐藏了文件系统底层驱动和设备驱动的实现细节。位于下层的设备驱动,提供了文件数据在设备上的存取操作接口。



3 嵌入式文件系统实现及设备驱动
    文件系统设计的目的在于实现对数据的有效管理以及对存储器空间的平均使用,文件系统的设计包括文件系统对外接口函数和底层驱动程序的设计。
3.1 文件系统对外接口函数
    调用文件系统的对外接口函数是应用程序使用文件系统的唯一途径,其接口的规范性、易用性、功能性关系到文件系统的开放型和用户对文件系统的接受程度。文件系统提供的对外接口函数如表1所列。应用程序通过调用这些接口函数即可实现对文件的管理和操作。


3.2 文件系统底层驱动程序
    文件底层驱动为文件系统的对外接口函数服务,包括文件系统信息表的读写、文件控制块的读写、文件句柄的读写以及各类簇的相关操作等。文件系统的底层驱动函数如表2所列。

[!--empirenews.page--]
    上述文件系统底层驱动函数中,净簇的申请函数(unsigned long app_clus(void))直接影响到对存储器存储区域的使用分配。该函数的流程体现了对存储器存储区域的使用次数的平均分配。
    函数功能描述:申请一个净簇。
    入口参数:无。
    出口参数:<0x100000,申请到净簇的页地址;NO_CLEAN_SECTOR,没有干净的存储空间。
    该函数的流程如图4所示,程序从存储区的第一页开始到最后一页申请一个净簇,若成功,返回簇地址;若失败,则进行脏簇的清理,然后从清理过的存储区中再申请一个净簇,成功则返回簇地址,失败则进行错误处理,程序结束。


3.3 Flash设备驱动
    对文件系统的操作归根结底是对存储器的读写操作。文件操作时设备驱动程序为文件系统提供对存储器的控制,一般包括读、写和复位操作。本文基于Flash芯片AT45DB081存储器,为文件系统提供表3所列的驱动函数。


    完成以上的软硬件设计,基于PC机编写一个客户端测试软件,通过自定的协议对文件进行操作,下载一个文件到文件系统,之后读取比较,从而验证文件系统的正确性。

结语
    本文的方案主要针对存储器的耗损均衡控制进行了重点设计,延长了Flash存储器的使用寿命。对于文件的校错、纠错等其他功能并未详细设计,采用单级目录,不支持多级目录。整个方案已在由单片机ATmega128及Flash AT45DB081组成的系统上具体实现及验证,取得很好的效果。本文件系统在基于Flash存储器的日志型数据采集记录应用中具有较高的应用价值。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

数字可编程变频电源是一种能够根据用户需求调整输出电压和频率的电源设备。它在工业生产和实验室研究等领域中被广泛使用。

关键字: 单片机 可编程电源 系统设计

作者 Mohamad Ali| IBM咨询首席运营官 北京2024年5月24日 /美通社/ -- 生成式AI的兴起几乎在所有面向上给业务带来改变。根据 IBM 商业价值研究院最新的年度 CEO 研究,近60%...

关键字: IBM AI BSP 模型

台北2024年5月21日 /美通社/ -- 提供针对AMD WRX90和TRX50主板优化的DDR5 OC R-DIMM 提供容量128GB(16GBx8)到768GB(96GBx8),速度5600MHz到8...

关键字: AMD 内存 BSP GB

上海2024年5月20日 /美通社/ -- 2024年5月16日,世界知名的生命科学公司 Eppendorf 集团于第二十三届生物制品年会上成功举办了"疫路超越 推流出新"的产品发布会,正式推出大规模...

关键字: RF PEN BSP IMAC

北京2024年5月20日 /美通社/ -- 过去五年里,支付和收款方式日新月异,其发展和变化比过去五十年都要迅猛。从嵌入式数字商务的出现,到"一拍即付"的...

关键字: VI BSP PAY COM

华钦科技集团(纳斯达克代码: CLPS ,以下简称"华钦科技"或"集团")近日宣布致敬 IBM 大型机 60 载辉煌历程,并将继续实施集团大型机人才培养计划。

关键字: IBM BSP 研发中心 PS

助力科研与检测新突破 上海2024年5月15日 /美通社/ -- 全球知名的科学仪器和服务提供商珀金埃尔默公司今日在上海举办了主题为"创新不止,探索无界"的新品发布会,集中展示了其在分析仪器领域的最...

关键字: 质谱仪 BSP DSC 气相色谱

上海2024年5月16日 /美通社/ -- 2024年5月10日至5月13日,富士胶片(中国)投资有限公司携旗下影像产品创新力作亮相北京P&E 2024。在数码相机展览区域,全新制定的集团使命"为世界绽...

关键字: 富士 数码相机 影像 BSP

贝克曼库尔特目前已成为MeMed Key免疫分析平台和MeMed BV检测技术的授权经销商 在原有合作的基础上,继续开发适用于贝克曼库尔特免疫分析仪的MeMed BV检测 加州布瑞亚和以色列海法2024年5月16日...

关键字: BSP IO 检测技术 免疫分析仪

英国英泰力能的燃料电池是可产业化的产品解决方案 英国首个专为乘用车市场开发的燃料电池系统 在 157kW 功率下,此燃料电池比乘用车的其他发动机更为强大 &...

关键字: ENERGY INTELLIGENT 氢燃料电池 BSP
关闭
关闭