一种闪存中的flash文件的管理方法及系统的制作方法

文档序号:6560221阅读:157来源:国知局
专利名称:一种闪存中的flash文件的管理方法及系统的制作方法
技术领域
本发明涉及一种文件管理方法及系统,特别涉及一种闪存中的FLASH文件的管理方法及系统。
背景技术
FLASH文件系统,顾名思义就是采用闪存FLASH作为外存储器实现的文件系统。因此,FLASH文件系统的实现就必须考虑闪存存储器的特点。闪存存储器由于具有存储容量大、掉电数据不丢失以及可多次擦写等许多优点,正逐步取代其它半导体存储器件而广泛应用于移动电话、个人数字助理以及数码相机等移动电子产品中。其作为存储数据和应用程序的存储体,可以将大量数据方便、快捷地移动和交换。
FLASH文件系统多用于文件数量不多且操作简单的场合,如手机、通信设备等。在此类应用上,文件数量不多,规模也较小,但是也需要有基本的文件操作功能,在这种需求下,产生了FLASH简单文件系统。FLASH文件系统的概念和一般意义上的文件系统没有什么不同,用户可以方便的打开、关闭、读、写文件数据。但是,FLASH文件系统所管理的空间和文件数量都远远小于一般操作系统所带文件系统,因此其实现应该本着简单、实用、稳定的原则。
现有技术在使用FLASH文件时,一种是采用操作系统所带的文件系统。但是它的不足在于不是所有操作系统所带的文件系统都可以适用于闪存;同时由于FLASH文件需要动态分配文件空间,易产生空间碎片,这是因为闪存的底层技术不允许闪存中的任意地址空间被删除,而是按照扇区为单位删除,为此在删除一个文件的时候,暂时没有把整个文件所占的空间删除,仅仅是在文件头的标识里作一个删除标识,并保留在闪存中。这样,被删除文件积累到一定的数量时,就会占用相当大的空间。需要整理文件系统闪存空间,使被删除文件占用的空间重新使用。所以这种技术方案需要额外的管理开销,这对于文件数量很少的应用来说既不必要又不稳定。
现有技术的另一种技术方案是不使用文件系统,直接调用FLASH文件驱动的读写接口操作数据。但这种方案下存在的不足是使用不方便,而且缺少很多文件操作的功能;由于直接调用FLASH文件底层的驱动接口,对闪存的安全性也存有潜在威胁。

发明内容
本发明提供了一种闪存中的FLASH文件的管理方法及系统,用以解决现有技术中存在的FLASH文件需要动态分配文件空间,易产生空间碎片,导致因额外管理而带来的不必要也不稳定的问题,还进一步解决现有技术中FLASH文件使用不方便、不灵活,而且缺少很多文件操作的功能的不足;还解决由于直接调用FLASH文件底层的驱动接口,对闪存的安全性存有的潜在威胁。
本发明提供的闪存中的FLASH文件的管理方法包括如下步骤根据FLASH文件第一属性建立索引;用户通过所述索引对FLASH文件进行操作。
较佳地,所述FLASH文件第一属性是文件长度和/或文件名和/或起始地址和/或目录名。
较佳地,所述索引在代码中静态规划建立,和/或在文件系统初始化之前建立。
较佳地,进一步包括如下步骤根据每个FLASH文件的第二属性为每个FLASH文件在所述索引中建立文件基本句柄,根据每个FLASH文件的第三属性为每个FLASH文件在所述索引中建立用户基本句柄;所述用户通过所述索引中的用户基本句柄获得对FLASH文件进行操作的权限后,根据所述索引中的文件基本句柄对FLASH文件进行操作。
较佳地,所述第二属性是实际长度和/或锁标志和/或用户数和/或用户标识数组和/或缓存区指针和/或FLASH标志。
较佳地,所述第三属性是任务标志和/或用户标识和/或访问模式和/或文件指针。
较佳地,进一步包括如下步骤将FLASH文件中不需永久保存的数据保存至随机存取存储器。
较佳地,进一步包括如下步骤为FLASH文件封装文件操作驱动接口;用户通过所述驱动接口对FLASH文件进行操作。
较佳地,所述文件操作是创建文件、和/或打开文件、和/或关闭文件、和/或读文件、和/或写文件、和/或查找文件、和/或重定位文件指针、和/或删除文件、和/或文件重命名、和/或获取文件长度。
较佳地,所述写文件操作是将文件写入闪存后返回,或立即返回后在后台起一个任务用于将文件写入闪存。
本发明还提供了一种闪存中的FLASH文件的管理系统,包括检测模块,检测闪存中的FLASH文件属性;索引模块,根据FLASH文件第一属性建立索引,用户通过所述索引对FLASH文件进行操作。
较佳地,所述索引模块进一步包括第一索引单元,用于根据每个FLASH文件的第二属性为每个FLASH文件在所述索引中建立文件基本句柄;第二索引单元,用于根据每个FLASH文件的第三属性为每个FLASH文件在所述索引中建立用户基本句柄;所述用户通过所述索引中的用户基本句柄获得对FLASH文件进行操作的权限后,根据所述索引中的文件基本句柄对FLASH文件进行操作。
较佳地,进一步包括存储模块,用于将FLASH文件中不需永久保存的数据保存至随机存取存储器。
较佳地,进一步包括接口封装模块,用于为FLASH文件封装文件操作驱动接口;用户通过所述驱动接口对FLASH文件进行操作。
本发明有益效果如下由于本发明中采用了索引的方式,使得闪存空间能够进行静态的划分,不需要动态管理,因此具有很好的稳定性,避免了FLASH文件需要动态分配文件空间,易产生空间碎片,导致因额外管理而带来的不稳定的不足。
本发明中还进一步的将FLASH文件与用随机存取存储器RAM做的内存文件空间统一管理,从而具有良好的灵活性。
本发明中还提供了标准文件访问接口,因此应用不需要为此做特殊的改变;本发明中还通过封装闪存底层驱动来增加了FLASH文件的安全性和可靠性;显然,在本发明中文件系统设计简单、实用,没有多余的功能,稳定性好;同时也具有良好的通用性,可以应用于很多使用闪存作为文件存储的场合。


图1为实施例中所述闪存中FLASH文件管理方法的实施流程示意图;图2为实施例中所述FLASH文件空间结构示意图;图3为实施例中所述文件索引表的结构示意图;图4为实施例中所述文件句柄示意图;图5为实施例中所述FLASH文件接口示意图;图6为实施例中所述闪存中FLASH文件管理系统的结构示意图。
具体实施例方式
本发明根据闪存上的应用简化实现方案,静态规划闪存上所有文件的空间,统一管理,从而达到简单、实用、稳定的目的。本发明还将提供所有文件系统所具备的基本功能,包括文件的创建、打开、关闭、读、写、删除、查找、定位等。下面结合附图对本发明的具体实施作出说明。
图1为本发明闪存中的FLASH文件的管理方法的实施流程示意图,如图所示,实施的流程为S101、检测闪存中的FLASH文件;在该步骤中主要是收集闪存上所有必须的文件,并根据文件的使用需求确定文件的最大长度,以此作为该文件在闪存上的空间划分。为现在未曾使用、将来可能使用的文件预留空间,为以后升级等可能出现的要求做准备。图2为FLASH文件空间结构示意图,闪存的空间划分如图所示,文件在闪存上的存储分两部分,一部分是文件标志头,记录文件是否存在、文件长度等,另一部分为文件本身。
优选实施中,可以将FLASH文件中不需保存的数据保存至RAM。这是考虑到某些文件不要长期保存,只用于临时存放,规划一块用RAM的内存区作为文件管理系统空间的一部分,和闪存一起做统一管理。这是因为闪存存储器的写操作则和一般的存储器有所不同,闪存的写操作必须先按存储块擦除(写入0xff到要擦除的存储单元块中),再按页顺序写入,由于闪存存储器擦除耗时较长,所以闪存存储器写入的时间主要在于闪存存储器内部的擦除操作等,而内存区文件可以频繁擦写,具有闪存不具备的优点,不过它不能永久保存,因此对于FLASH文件中使用到的临时解压文件、上下载过渡文件等具有效用。将FLASH文件和内存文件结合进行统一的空间管理,使得本发明具备了良好的灵活性。
S102、根据FLASH文件第一属性建立索引;
由于建立索引的方式是多种多样的,比如通过映射关系、建立索引库、建立连接对应关系等等,所以仅以文件索引表来建立索引为例进行说明。设计文件索引表是根据闪存中的FLASH文件第一属性,第一属性可以包括文件的最大长度、目录名、文件名、FLASH起始地址等参数。通过文件索引表可以查找文件,获取文件属性。由于本发明是静态分配闪存空间的,所以此索引表不保存到闪存中每次动态读取,因为动态读取索引表存在潜在的危险,因此文件索引表可以在代码中静态规划,也可以通过在文件系统初始化之前重新分配来实现。图3是文件索引表的结构示意图,实施例中文件索引表结构如图所示,包括了最大长度、起始地址、文件名、目录名、文件句柄。其中文件句柄是在另一优选实施方式中使用的,在下面将会对文件句柄的具体实施方式
进行说明。
S103、根据每个FLASH文件的第二属性为每个FLASH文件在所述索引中建立文件基本句柄;S104、根据每个FLASH文件的第三属性为每个FLASH文件在所述索引中建立用户基本句柄;在上述文件句柄中包括文件基本句柄与用户基本句柄,在设计文件基本句柄和用户基本句柄时分别根据第二属性和第三属性,文件基本句柄和文件的第二属性一一对应,记录文件的一切重要属性,包括文件长度、锁标志、缓存、用户标识等等。用户基本句柄对应于用户的第三属性,每个文件可以被多个用户同时打开,用户基本句柄用于保证多个用户不冲突的访问文件。操作文件都从获得句柄开始,句柄机制保障了对文件的操作安全合法。创建文件和打开文件就是分配句柄的接口,而关闭文件是释放句柄的接口。图4为文件句柄示意图,文件句柄结构如图4所示,其中文件基本句柄内容包括文件实际长度、锁标志、用户数、用户标识数组、缓存区指针、FLASH标志等等,用户基本句柄内容则包括任务标志、用户标识、访问模式、文件指针等内容。
S105、为FLASH文件封装文件操作驱动接口;
封装FLASH文件操作驱动接口是为了提供文件操作的接口,提高它的易用性与通用性,这些操作包括创建文件、打开文件、关闭文件、读文件、写文件、查找文件、重定位文件指针、删除文件、文件的重命名、获取文件长度等等。其中,写文件操作采用缓存机制,既可以用阻塞式(写入闪存后才返回),也可以采用非阻塞式(立即返回,后台起一个任务用于写闪存)。可以根据应用的不同做相应选择。图5为FLASH文件接口示意图,如图所示,简单文件系统对外提供的接口可以有创建文件(SFS_Create)、打开文件(SFS_Open)、关闭文件(SFS_Close)、读文件(SFS_Read)、写文件(SFS_Write)、查找文件(SFS_Find)、重定位文件指针(SFS_Lseek)、删除文件(SFS_Deletefile)、文件重命名(SFS_Rename)、获取文件长度(SFS_Filelength)、查找第一个文件(SFS_Findfirst)、查找下一个文件(SFS_Findnext)、查找并关闭打开的文件(SFS_Findclose)、移动文件(SFS_Movefile)、获取文件打开模式(SFS_Getfilemode)、获取文件属性(SFS_Fsattrib)等接口。用户通过这些驱动接口就可以很容易的对FLASH文件进行操作了。
基于同样的发明构思,本发明还提供了一种闪存中的FLASH文件的管理系统,下面结合附图对本系统的实施作出说明。
图6为本发明闪存中FLASH文件管理系统的结构示意图,如图所示,系统中包括检测模块601、索引模块602、存储模块603、接口封装模块604,在索引模块602中还可以进一步包括第一索引单元、第二索引单元。下面对各模块的具体实施作出说明。
检测模块检测闪存中的FLASH文件属性后,索引模块根据FLASH文件第一属性建立索引,用户通过索引对FLASH文件进行操作。
收集闪存上所有必须的文件,并根据文件的使用需求确定文件的最大长度,以此作为该文件在闪存上的空间划分。为现在未曾使用、将来可能使用的文件预留空间,为以后升级等可能出现的要求做准备。文件在闪存上的存储分两部分,一部分是文件标志头,记录文件是否存在、文件长度等,另一部分为文件本身。
由于建立索引的方式是多种多样的,所以以下同样仅以文件索引表来建立索引为例进行说明。设计文件索引表是根据所记录的文件第一属性,第一属性可以包括最大长度、目录名、文件名、FLASH起始地址等参数。通过文件索引表可以查找文件,获取文件属性。由于本发明是静态分配闪存空间的,所以此索引表不保存到闪存中每次动态读取,因为动态读取索引表存在潜在的危险,因此文件索引表可以在代码中静态规划,也可以在文件系统初始化之前重新分配。实施例中文件索引表结构包括了最大长度、起始地址、文件名、目录名、文件句柄。其中文件句柄是在优选实施方式中使用的,在下面将会对文件句柄的具体实施方式
进行说明。
优选实施中,索引模块中第一索引单元用于根据每个FLASH文件的第二属性为每个FLASH文件在所述索引中建立文件基本句柄;第二索引单元用于根据每个FLASH文件的第三属性为每个FLASH文件在所述索引中建立用户基本句柄;用户通过索引中的用户基本句柄获得对FLASH文件进行操作的权限后,根据索引中的文件基本句柄对FLASH文件进行操作。
在上述文件句柄中包括文件基本句柄与用户基本句柄,在设计文件基本句柄和用户基本句柄时分别根据第二属性和第三属性,文件基本句柄和文件的第二属性一一对应,记录文件的重要属性,包括文件长度、锁标志、缓存、用户标识等等。用户基本句柄对应于用户的第三属性,每个文件可以被多个用户同时打开,用户基本句柄用于保证多个用户不冲突的访问文件。操作文件都从获得句柄开始,句柄机制保障了对文件的操作安全合法。创建文件和打开文件就是分配句柄的接口,而关闭文件是释放句柄的接口。其中文件基本句柄内容包括文件实际长度、锁标志、用户数、用户标识数组、缓存区指针、FLASH标志等等,用户基本句柄内容则包括任务标志、用户标识、访问模式、文件指针等内容。
优选实施中,存储模块用于将FLASH文件中不需保存的数据保存至随机存取存储器RAM。
可以将FLASH文件中不需保存的数据保存至RAM。这是考虑到某些文件不要长期保存,只用于临时存放,规划一块用RAM的内存区作为文件管理系统空间的一部分,和闪存一起做统一管理。这是因为闪存存储器的写操作则和一般的存储器有所不同,闪存的写操作必须先按存储块擦除(写入0xff到要擦除的存储单元块中),再按页顺序写入,由于闪存存储器擦除耗时较长,所以闪存存储器写入的时间主要在于闪存存储器内部的擦除操作等,而内存区文件可以频繁擦写,具有闪存不具备的优点,不过它不能永久保存,因此对于临时解压文件、上下载过渡文件等具有效用。将FLASH文件和内存文件结合进行统一的空间管理,使得本发明具备了良好的灵活性。
优选实施中,还可以进一步包括接口封装模块用于为FLASH文件封装文件操作驱动接口;用户通过驱动接口对FLASH文件进行操作。
封装FLASH文件操作驱动接口是为了提供文件操作的接口,提高它的易用性与通用性,这些操作包括创建文件、打开文件、关闭文件、读文件、写文件、查找文件、重定位文件指针、删除文件、文件的重命名、获取文件长度等等。其中,写文件操作采用缓存机制,既可以用阻塞式(写入闪存后才返回),也可以采用非阻塞式(立即返回,后台起一个任务用于写闪存)。可以根据应用的不同做相应选择。简单文件系统对外提供的接口可以有创建文件(SFS_Create)、打开文件(SFS_Open)、关闭文件(SFS_Close)、读文件(SFS_Read)、写文件(SFS_Write)、查找文件(SFS_Find)、重定位文件指针(SFS_Lseek)、删除文件(SFS_Deletefile)、文件重命名(SFS_Rename)、获取文件长度(SFS_Filelength)、查找第一个文件(SFS_Findfirst)、查找下一个文件(SFS_Findnext)、查找并关闭打开的文件(SFS_Findclose)、移动文件(SFS_Movefile)、获取文件打开模式(SFS_Getfilemode)、获取文件属性(SFS_Fsattrib)等接口。用户通过这些驱动接口就可以很容易的对FLASH文件进行操作了。
由上述实施,可以看出本发明中提供标准文件访问接口,应用不需要为此做特殊的改变;封装FLASH底层驱动,增加安全性和可靠性;文件系统设计简单、实用,没有多余的功能,稳定性好;通用性好,可以应用于很多使用闪存作为文件存储的场合。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种闪存中的FLASH文件的管理方法,其特征在于,包括如下步骤根据FLASH文件第一属性建立索引;用户根据所述索引对FLASH文件进行操作。
2.如权利要求1所述的方法,其特征在于,所述FLASH文件第一属性是文件长度和/或文件名和/或起始地址和/或目录名。
3.如权利要求1所述的方法,其特征在于,所述索引在代码中静态规划建立,和/或在文件系统初始化之前建立。
4.如权利要求1所述的方法,其特征在于,进一步包括根据每个FLASH文件的第二属性为每个FLASH文件在所述索引中建立文件基本句柄,根据每个FLASH文件的第三属性为每个FLASH文件在所述索引中建立用户基本句柄;所述用户根据所述索引中的用户基本句柄获得对FLASH文件进行操作的权限后,根据所述索引中的文件基本句柄对FLASH文件进行操作。
5.如权利要求4所述的方法,其特征在于,所述第二属性是实际长度和/或锁标志和/或用户数和/或用户标识数组和/或缓存区指针和/或FLASH标志。
6.如权利要求4所述的方法,其特征在于,所述第三属性是任务标志和/或用户标识和/或访问模式和/或文件指针。
7.如权利要求1所述的方法,其特征在于,进一步包括如下步骤将FLASH文件中不需永久保存的数据保存至随机存取存储器。
8.如权利要求1所述的方法,其特征在于,进一步包括如下步骤为FLASH文件封装文件操作驱动接口;用户通过所述驱动接口对FLASH文件进行操作。
9.如权利要求8所述的方法,其特征在于,所述文件操作是创建文件、和/或打开文件、和/或关闭文件、和/或读文件、和/或写文件、和/或查找文件、和/或重定位文件指针、和/或删除文件、和/或文件重命名、和/或获取文件长度。
10.如权利要求9所述的方法,其特征在于,所述写文件操作是将文件写入闪存后返回,或立即返回后在后台起一个任务用于将文件写入闪存。
11.一种闪存中的FLASH文件的管理系统,其特征在于,包括索引模块,根据FLASH文件第一属性建立索引,用户通过所述索引对FLASH文件进行操作。
12.如权利要求11所述的系统,其特征在于,所述索引模块进一步包括第一索引单元,用于根据每个FLASH文件的第二属性为每个FLASH文件在所述索引中建立文件基本句柄;第二索引单元,用于根据每个FLASH文件的第三属性为每个FLASH文件在所述索引中建立用户基本句柄;所述用户通过所述索引中的用户基本句柄获得对FLASH文件进行操作的权限后,根据所述索引中的文件基本句柄对FLASH文件进行操作。
13.如权利要求11所述的系统,其特征在于,进一步包括存储模块,用于将FLASH文件中不需永久保存的数据保存至随机存取存储器。
14.如权利要求11所述的系统,其特征在于,进一步包括接口封装模块,用于为FLASH文件封装文件操作驱动接口;用户通过所述驱动接口对FLASH文件进行操作。
全文摘要
本发明公开了一种闪存中的FLASH文件的管理方法及系统,包括根据FLASH文件第一属性建立索引;用户根据索引对FLASH文件进行操作。本发明解决了现有技术中存在的FLASH文件需要动态分配文件空间,易产生空间碎片,导致因额外管理而带来的不必要也不稳定的问题,还进一步解决现有技术中FLASH文件使用不方便、不灵活,而且缺少很多文件操作的功能的不足;还解决了由于直接调用FLASH文件底层的驱动接口,对闪存的安全性存有的潜在威胁。本发明文件系统设计简单、实用,没有多余的功能,稳定性好;同时也具有良好的通用性,可以应用于很多使用闪存作为文件存储的场合。
文档编号G06F17/30GK1908937SQ200610104289
公开日2007年2月7日 申请日期2006年8月9日 优先权日2006年8月9日
发明者董平, 孙皓 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1