嵌入式开发 > 详情

Flash损耗均衡的嵌入式文件系统设计

发布时间:2020-06-29 发布时间:
|

引言
嵌入式系统的海量存储器多采用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地址。
操作系统中将相邻的扇区组合在一起,形成一个簇,然后再对簇进行管理。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。为了更好地管理磁盘空间和更高效地从硬盘读取数据,操作系统规定一个簇中只能放置一个文件的内容,因此文件所占用的空间,只能是簇的整数倍。本文设计的文件系统规定一个簇的大小为存储器的一个页。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
定时器CTC模式的测试