一种嵌入式系统中的fat文件存储方法

文档序号:6436368阅读:177来源:国知局
专利名称:一种嵌入式系统中的fat文件存储方法
技术领域
本发明涉及一种嵌入式系统中的FAT文件存储方法,尤其涉及一种在嵌入式系统中采用FAT文件系统进行数据存储的方法。
背景技术
随着电子技术的发展,越来越多的电子产品应用嵌入式系统。随着用户需求的扩展,需要将这些电子产品的数据存储到设备外的存储设备上,比较通用的存储设备有U盘、 SD卡等。同时,如果需要通过PC机等带操作系统的设备来识别和读取存储到这些存储设备的数据,则需要这些嵌入式系统将导出的数据按目前主流的文件格式存储,例如FAT文件系统格式。FAT文件系统的原理可以简单的描述为把存储空间分块映射到一个表中,从而实现对存储空间的灵活支配。存储空间中的每一个块被称为簇,存储空间的映射表被称作 FAT表,系统中文件的存储不必是连续的,在FAT表中可用链表的形式把文件联系在一起。 FAT文件系统的基本结构,主要由以下三部分组成依次是引导区(BOOT区)、文件分配表区 (FAT区)、数据区(DATA区)。FAT文件系统还包括目录项,除了根目录的所有文件都对应一组数据作为文件来描述,称为文件目录项。每个文件目录项内的所有文件和子目录的文件目录项都存储在这个目录对应的存储空间内,主要包括文件名、文件属性、文件大小、文件存储位置以及一系列的事件描述等。把文件路径、文件目录项和FAT表联系在一起即可把握一个文件在硬盘中的存储情况,具体通过以下步骤定位文件的所有内容1.通过路径找到文件所在目录的簇;2.在目录对应的空间内比对文件名,找到文件对应的文件目录项; 3.通过文件目录项确定文件的起始簇和文件大小;4.根据FAT表内的簇链确定文件的存储空间。嵌入式系统的优点是低功耗、低成本,因此其硬件资源比PC机更简单,因此嵌入式系统的处理速度也更低。如果完全按照PC机上的FAT文件系统格式存储,嵌入式系统将会耗费更长的运行时间和更多的系统资源。例如,当一个应用嵌入式系统的设备外接一个存储数据较多的U盘时,要从该设备中导出一个文件到U盘中,一般耗费的时间较长,其中, 主要的耗时因为在创建FAT文件目录项的时候需要遍历U盘的FAT文件目录表,具体的做法是先搜索空闲簇,如果找不到空闲簇再回头搜索已删除的目录项。这样,由于导出文件的时候创建文件目录项耗时较长,则会导致系统其他程序的响应时间变慢,影响了系统的实时性。

发明内容
本发明所要解决的技术问题是提供一种嵌入式系统中的FAT文件存储方法,采用同时搜索空闲簇和已被删除目录项的方式,一旦搜索到两者之一,就创建目录项,减少创建 FAT文件目录项的时间,以至少解决背景技术中的问题。本发明采用的解决方案是,一种嵌入式系统中的FAT文件存储方法,使用的硬件包括嵌入式系统主机、外接存储设备,所述嵌入式系统主机支持USB HOST,所述外接存储设备的文件系统是FAT文件系统格式,所述嵌入式系统主机和外接存储设备通过USB方式连接和通讯,该方法包括(A)检测连接的过程、(B)判断是否满足存储条件的过程、(C)存储文件的过程,其特征在于,所述(C)存储文件的过程包括以下步骤
步骤Cl 同时搜索空闲簇和已被删除文件的目录项,一旦搜索到其中之一满足创建目录项条件,即在文件目录表中创建目录项;
步骤C2 从空闲区链的始端开始搜索,选择第一个满足空间要求的空闲区,为文件分配存储空间;
步骤C3:写FAT文件目录表;
步骤C4 写文件数据内容,将要存储的文件数据写入步骤C2分配的存储空间; 步骤C5 存储成功,更新FAT文件目录表,关闭文件。进一步的,所述㈧检测连接的过程具体包括嵌入式系统主机检测到通过USB接口连接的外接存储设备后,通过枚举过程获取到所连接的外接存储设备的信息。进一步的,所述获取到所连接的外接存储设备的信息至少包括容量、簇、扇区、FAT 文件目录表。进一步的,所述(B)判断是否满足存储条件的过程具体包括
步骤Bl 嵌入式系统主机判断外接存储设备是否FAT文件系统,剩余空间容量是否满足存储需求,外接存储设备是否处于持续连接状态,如果满足则继续下一步骤,不满足则退出存储;
步骤B2 搜索外接存储设备中是否存在与要存储的文件同名的文件,如果不存在则转入步骤Cl,存在则继续下一步骤;
步骤B3 提示有同名文件存在,询问是否覆盖,如果选择“是”则转入(C)存储文件的过程的步骤C2,选择“否”则退出文件存储。进一步的,所述步骤B2中搜索同名文件具体包括以下内容首先根据FAT文件目录表的特性,将每个FAT文件目录表按每个目录项32个字节划分成N个目录项;然后搜索每个目录项的第0个字节,直到遇到0x00结束,其中,目录项的第0个字节是0x00表示该目录表存储的目录项到此为止。进一步的,如果所述步骤B3中选择覆盖同名文件,则所述步骤C2中是把FAT文件目录表中原有的文件目录项的起始存储空间初始化为文件存储空间的起始地址,文件的起始长度为0。进一步的,所述步骤Cl具体包括以下内容搜索FAT文件目录表;当首先搜索到空闲簇,则将该地址分配给所要存储的文件;当首先搜索到已被删除目录项的文件时,记录其文件存储空间、文件长度信息,在该已被删除目录项的位置创建所要存储的文件的目录项,将已删除的文件存储空间的起始地址分配给所要存储的文件。进一步的,搜索FAT文件目录表的目录项的第0个字节是0xE5H表示该目录项对应的文件是被删除的,第0个字节是OxOOH表示该目录项是空闲目录项。进一步的,所述步骤C2搜索可用的簇来存储文件数据,具体是可用的簇是通过查找FAT文件目录表来实现,FAT文件目录表的前8个字节“F8 FF FF OF FF FF FF FF” 为FAT32的FAT表头标记,用以表示此处是FAT表的开始,后面的数据每四个字节为一个簇项(从第2簇开始),用以标记此簇的下一个簇号,当该簇项是“00 00 00 00”时则表示该簇
未被使用。进一步的,所述步骤Cl和步骤C2的搜索过程,还包括一个搜索计数器,根据系统对实时性的需求,为计数器设置一个阈值,当超过该阈值还未搜索到,则记录此时搜索位置,并跳出搜索循环执行其他任务,当下一个搜索周期时间到时,则从上次的搜索位置处继
续搜索。进一步的,所述步骤C5中更新FAT文件目录表,是把目前已存储文件数据的长度、 存储时间信息写入步骤Cl创建的文件目录项中。本发明采用上述方法,与现有技术相比,具有以下优点
1.本发明采用同时搜索空闲簇和已被删除目录项的方式,一旦搜索到两者之一,就创建目录项,即使一个文件具备多个目录项,充分利用FAT文件表链式管理的优点,不需要让目录项均为连续,减少了创建FAT文件目录项的时间;
2.本发明的所述步骤Cl和步骤C2的搜索过程,还包括一个搜索计数器,使用该搜索计数器进行断点搜索的方式,让系统在创建目录项的过程中消耗更少的系统资源,对于那些实时性要求很高的嵌入式系统,可在创建目录项的搜索过程中,及时响应一些特殊任务;
3.当遇到文件目录表比较大,且空闲目录项在较后面甚至已经无空闲目录项的情况, 搜索完文件目录表之后再回头搜索已被删除目录项进行创建新目录项,比较耗费时间,本发明的步骤Cl同时搜索已被删除目录项,并在已被删除目录项的位置创建所要存储的文件的目录项,将已删除的文件存储空间的起始地址分配给所要存储的文件,节省了创建目录项所耗费的时间。


图1是本发明中实施例的文件存储方法流程图。
具体实施例方式现结合附图和具体实施方式
对本发明进一步说明。如图1所示,一种嵌入式系统中的FAT文件存储方法,使用的硬件包括嵌入式系统主机、外接存储设备,所述嵌入式系统主机支持USB HOST,所述外接存储设备的文件系统是 FAT文件系统格式,所述嵌入式系统主机和外接存储设备通过USB方式连接和通讯,该方法包括以下步骤
步骤1 嵌入式系统主机检测到通过USB接口连接的外接存储设备后,通过枚举过程获取到所连接的外接存储设备的信息,包括容量、簇、扇区、FAT文件目录表等相关信息;
步骤2 嵌入式系统主机判断连接的外接存储设备是否FAT文件系统,剩余空间容量是否满足存储需求,外接存储设备是否处于持续连接状态,如果满足则继续下一步骤,不满足则退出存储;
步骤3:搜索外接存储设备中是否存在与要存储的文件同名的文件,如果不存在则转入步骤5,存在则继续下一步骤;
步骤4:提示有同名文件存在,询问是否覆盖,如果选择“是”则转入步骤6,选择“否” 则退出文件存储;步骤5 同时搜索空闲簇和已被删除文件的目录项,一旦搜索到其中之一满足创建目录项条件,即在文件目录表中创建目录项;
步骤6:从空闲区链的始端开始搜索,选择第一个满足空间要求的空闲区,为文件分配存储空间;
步骤7:写FAT文件目录表;
步骤8 写文件数据内容,将要存储的文件数据写入步骤6分配的存储空间; 步骤9 存储成功,更新FAT文件目录表,是把目前已存储文件数据的长度、存储时间信息写入步骤5创建的文件目录项中,关闭文件。 进一步的,所述步骤3中搜索同名文件具体包括以下内容首先根据FAT文件目录表的特性,将每个FAT文件目录表按每个目录项32个字节划分成N个目录项;然后搜索每个目录项的第0个字节,直到遇到0x00结束,其中,目录项的第0个字节是0x00表示该目录表存储的目录项到此为止。进一步的,如果所述步骤3中存在同名文件,则所述步骤6中是把FAT文件目录表中原有的文件目录项的起始存储空间初始化为文件存储空间的起始地址,文件的起始长度为0。进一步的,所述步骤5具体包括以下内容搜索FAT文件目录表,目录项的第0个字节是0xE5H表示该目录项对应的文件是被删除的,第0个字节是OxOOH表示该目录项是空闲目录项;当首先搜索到空闲簇,则将该地址分配给所要存储的文件;当首先搜索到已被删除目录项的文件时,记录其文件存储空间、文件长度信息,在该已被删除目录项的位置创建所要存储的文件的目录项,将已删除的文件存储空间的起始地址分配给所要存储的文件。进一步的,所述步骤5和步骤6均包括搜索过程,步骤5搜索FAT文件目录表的目录项,步骤6搜索可用的簇来存储文件数据,可用的簇是通过查找FAT文件目录表来实现的,FAT文件目录表的前8个字节“F8 FF FF OF FF FF FF FF”为FAT32的FAT表头标记, 用以表示此处是FAT表的开始,后面的数据每四个字节为一个簇项(从第2簇开始),用以标记此簇的下一个簇号,当该簇项是“00 00 00 00”时则表示该簇未被使用。为提高实时性, 步骤5和步骤6的搜索过程还包括一个搜索计数器,根据系统对实时性的需求,为计数器设置一个阈值,当超过该阈值还未搜索到,则记录此时搜索位置,并跳出搜索循环执行其他任务,当下一个搜索周期时间到时,则从上次的搜索位置处继续搜索。尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。
权利要求
1.一种嵌入式系统中的FAT文件存储方法,使用的硬件包括嵌入式系统主机、外接存储设备,所述嵌入式系统主机支持USB HOST,所述外接存储设备的文件系统是FAT文件系统格式,所述嵌入式系统主机和外接存储设备通过USB方式连接和通讯,该方法包括(A) 检测连接的过程、(B)判断是否满足存储条件的过程、(C)存储文件的过程,其特征在于,所述(C)存储文件的过程包括以下步骤步骤Cl 同时搜索空闲簇和已被删除文件的目录项,一旦搜索到其中之一满足创建目录项条件,即在文件目录表中创建目录项;步骤C2 从空闲区链的始端开始搜索,选择第一个满足空间要求的空闲区,为文件分配存储空间;步骤C3:写FAT文件目录表;步骤C4 写文件数据内容,将要存储的文件数据写入步骤C2分配的存储空间;步骤C5 存储成功,更新FAT文件目录表,关闭文件。
2.根据权利要求1所述的FAT文件存储方法,其特征在于所述(A)检测连接的过程具体包括嵌入式系统主机检测到通过USB接口连接的外接存储设备后,通过枚举过程获取到所连接的外接存储设备的信息。
3.根据权利要求2所述的FAT文件存储方法,其特征在于所述获取到所连接的外接存储设备的信息至少包括容量、簇、扇区、FAT文件目录表。
4.根据权利要求1所述的FAT文件存储方法,其特征在于,所述(B)判断是否满足存储条件的过程具体包括步骤Bl 嵌入式系统主机判断外接存储设备是否FAT文件系统,剩余空间容量是否满足存储需求,外接存储设备是否处于持续连接状态,如果满足则继续下一步骤,不满足则退出存储;步骤B2 搜索外接存储设备中是否存在与要存储的文件同名的文件,如果不存在则转入步骤Cl,存在则继续下一步骤;步骤B3 提示有同名文件存在,询问是否覆盖,如果选择“是”则转入(C)存储文件的过程的步骤C2,选择“否”则退出文件存储。
5.根据权利要求4所述的FAT文件存储方法,其特征在于,所述步骤B2中搜索同名文件具体包括以下内容首先根据FAT文件目录表的特性,将每个FAT文件目录表按每个目录项32个字节划分成N个目录项;然后搜索每个目录项的第0个字节,直到遇到0x00结束, 其中,目录项的第0个字节是0x00表示该目录表存储的目录项到此为止。
6.根据权利要求4所述的FAT文件存储方法,其特征在于,如果所述步骤B3中选择覆盖同名文件,则所述步骤C2中是把FAT文件目录表中原有的文件目录项的起始存储空间初始化为文件存储空间的起始地址,文件的起始长度为0。
7.根据权利要求1所述的FAT文件存储方法,其特征在于,所述步骤Cl具体包括以下内容搜索FAT文件目录表;当首先搜索到空闲簇,则将该地址分配给所要存储的文件;当首先搜索到已被删除目录项的文件时,记录其文件存储空间、文件长度信息,在该已被删除目录项的位置创建所要存储的文件的目录项,将已删除的文件存储空间的起始地址分配给所要存储的文件。
8.根据权利要求5所述的FAT文件存储方法,其特征在于,搜索FAT文件目录表的目录项的第0个字节是0xE5H表示该目录项对应的文件是被删除的,第0个字节是OxOOH表示该目录项是空闲目录项。
9.根据权利要求1所述的FAT文件存储方法,其特征在于,所述步骤C2搜索可用的簇来存储文件数据,具体是可用的簇是通过查找FAT文件目录表来实现,FAT文件目录表的前8个字节“F8 FF FF OF FF FF FF FF”为FAT32的FAT表头标记,用以表示此处是FAT表的开始,从第2簇开始,后面的数据每四个字节为一个簇项,用以标记此簇的下一个簇号, 当该簇项是“00 00 00 00”时则表示该簇未被使用。
10.根据权利要求1所述的FAT文件存储方法,其特征在于,所述步骤Cl和步骤C2的搜索过程,还包括一个搜索计数器,根据系统对实时性的需求,为计数器设置一个阈值,当超过该阈值还未搜索到,则记录此时搜索位置,并跳出搜索循环执行其他任务,当下一个搜索周期时间到时,则从上次的搜索位置处继续搜索。
11.根据权利要求1所述的FAT文件存储方法,其特征在于,所述步骤C5中更新FAT文件目录表,是把目前已存储文件数据的长度、存储时间信息写入步骤Cl创建的文件目录项中。
全文摘要
本发明的名称是一种嵌入式系统中的FAT文件存储方法。本发明使用的硬件包括嵌入式系统主机、外接存储设备,所述嵌入式系统主机支持USBHOST,所述外接存储设备的文件系统是FAT文件系统格式,所述嵌入式系统主机和外接存储设备通过USB方式连接和通讯,本发明采用同时搜索空闲簇和已被删除目录项的方式,一旦搜索到两者之一,就创建目录项,减少创建FAT文件目录项的时间。本发明应用于嵌入式系统的FAT文件存储领域。
文档编号G06F17/30GK102426586SQ201110327108
公开日2012年4月25日 申请日期2011年10月25日 优先权日2011年10月25日
发明者叶德焰, 姚亮, 张鹏, 蔡蓝图, 黄运峰 申请人:厦门雅迅网络股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1