基于flash存储器的嵌入式文件系统的设计与实现

基于flash存储器的嵌入式文件系统的设计与实现

ID:10734773

大小:54.50 KB

页数:4页

时间:2018-07-08

基于flash存储器的嵌入式文件系统的设计与实现_第1页
基于flash存储器的嵌入式文件系统的设计与实现_第2页
基于flash存储器的嵌入式文件系统的设计与实现_第3页
基于flash存储器的嵌入式文件系统的设计与实现_第4页
资源描述:

《基于flash存储器的嵌入式文件系统的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于FLASH存储器的嵌入式文件系统的设计与实现

2、第1摘要:基于FLASH存储器的嵌入式文件系统要求:实现数据可维护性;提高数据安全性;针对FLASH的特性进行合理的优化。我们以嵌入式操作系统ASIXOS中的文件系统为实例,从存储空间管理,文件实现,目录实现,多任务的实现四个方面描述文件系统基本功能的设计,接着提出了针对FLASH作为存储介质的嵌入式文件系统的优化设计。关键词:嵌入式;操作系统;文件系统FLASH;设计;实现  在嵌入式手持移动终端中,应用程序需要存储和检索大量的用户信息,这些信息在应用程序退出时应该被记录保存下来,同时这

3、些信息要能被多个应用程序并发使用,比如本中的数据要能够被,短消息,名片等多个应用程序共享。为达到以上要求,就引出了文件的概念,把这些用户信息以文件的形式存储在外部介质上,独立于任何应用程序。  目前通用计算机上已经有很多成熟的文件系统,如DOS下的FAT文件系统、中的FILE-S结构体的数组,用来保存已打开的文件信息,数组的大小就是当前文件系统中支持同时打开文件的最大数目。在实际系统中我们用宏定义了数组的大小,便于今后修改。FILE层模块负责所有文件I/O的打开和终止,维护设备的输入输出,调度,修改文件当前状态等工作。  FCB层模块处理

4、主存与辅存系统之间的数据交换,提供一整套文件的FCB在FLASH和RAM之间的映射关系。所谓FCB就是filecontrolblock的缩写。  Block层模块完成在辅存中动态的申请和释放Block块的工作,同时维护BlockBitmap表。这张表记录了当前Block块使用和空闲状态。  I/O缓冲层模块直接调用驱动的读写函数,完成FLASH和RAM中数据的交互。为了增强FLASH文件系统在不同FLASH存储器上的移植能力,设计时把它独立出来。2 文件系统基本功能的实现    从基本功能的角度来说,文件系统首先要能够实现存储空间管理,文

5、件管理,目录管理以及多任务的支持。以下就是ASIXOS中文件系统几种功能的实现方式。① 存储空间管理  同大多数文件系统一样,我们把文件划分为固定大小的块(Block)来存储,各个块之间不必相邻。块大小是设计时要考虑的重要因素。块越小,每个块内碎片造成的空间的浪费就越小,FLASH存储信息的效率就越高。但是时间和空间永远是一对矛盾体,随着块变小,读取文件的时间也会增加。考虑到嵌入式系统中文件的大小不会太大,初步确定每个块的大小在64~2048byte之间。在I/O缓冲模块完成构建后,通过进行效率方面的模拟测试,考虑到时空效率上的折中,我们

6、用宏定义块的大小是512byte。这样我们就达到了前面提到的从系统角度根据数据吞吐量,从用户角度根据相应时间,优化性能的目的。  一旦确定了块大小,文件系统还需要能够记录块的使用情况,以便在出现新文件和现有文件增长时知道可以使用哪些块。在这里我们使用了向量位表,每一位上用1表示空闲,用0表示使用。这样对于每次擦写64kb,每个块大小512byte的FLASH来说,只需要128bit,即16byte就可以清楚记录当前所有块的使用情况。② 文件管理  实现文件管理,最重要的一个问题是如何记录具体的文件使用到哪些块,以及这些块之间的顺序。以往的

7、文件系统多采用:连续分配,链接表分配,使用索引的链接表分配,i节点等方式来解决。例如,MSDOS中是使用索引的链接表分配,UNIX中是i节点。  针对嵌入式系统的特点,我们汲取了UNIX中i节点的设计思想,并简化它,设计了主(辅)文件控制块的分配方式,具体结构如图2所示。它不但清楚的记录了文件数据块的地址及其之间的顺序,同时可以方便的进行文件控制块之间的索引。500)this.style.ouseg(this)">  采用以上的结构,对于尺寸超出主文件控制块记录范围的文件,可以很方便的进行管理,如图3所示。500)this.style.o

8、useg(this)">③ 目录管理  对文件操作前,系统首先要利用用户给出的路径找到相应的目录,在目录中查找文件的信息。有关目录的实现,我们也借鉴了文件的实现思想。文件系统中的每个目录控制块占512byte,存放目录控制信息以及目录子项的标识信息。目录控制信息借用了主文件控制块结构描述,目录子项的标识信息就是下一级子目录和文件的信息。具体结构如图4、图5所示。500)this.style.ouseg(this)">  从上面的描述,可以很清楚的看出已经实现了目录树的结构。500)this.style.ouseg(this)">④ 多任务

9、的实现  在每一个任务控制块中加上T-FSCB结构体,对每个任务所能打开的文件个数作出限制。这样在创建任务的时候,对T-FSCB结构体进行初始化,全部为0。在结构体T-FSCB中定义了T-FS

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。