一种数据存储的方法及装置的制作方法

文档序号:6578423阅读:156来源:国知局
专利名称:一种数据存储的方法及装置的制作方法
技术领域
本申请涉及计算机领域,特别涉及一种数据存储的方法及装置。
背景技术
存储卡〔如Compact Flash Card (CF卡)、Secure Digital Memory Card ( SD 卡)、TransFLash Card (TF卡)等〕作为 一类通用大容量存储介质,在很多嵌 入式设备中都有所应用;例如,在对稳定性要求很高的通讯系统设备上,CF 卡的应用很广泛,而在便携设备中,SD卡和TF卡应用比较广泛。存储卡通常 由卡控制器和Flash单元两部分组成,其中的Flash单元都是采用与非型Flash (NANDFlash),有读写次数(即使用寿命)的限制, 一般在1 - 10万次左右。
现有技术下,存储卡普遍的应用方法为系统首先将存储卡格式化出某种 文件系统〔如,pHILE文件系统(pSOS操作系统提供的一种文件系统)、FAT 文件系统(微软开发的一种文件系统)、FAT32文件系统(微软开发的一种文 件系统)、ext2文件系统(Linux下的一种文件系统)或ext3文件系统(Linux 下的一种文件系统)等等〕,其中,以FAT32文件系统的应用最为广泛);接着, 系统以文件的形式对存储卡进行读写操作。这种方法对于存储卡的管理很方 便。
但是,在实际应用中,经常需要在存储卡上创建很多小容量(如IK或几 K字节)的数据,例如,数据库文件、日志文件、时隙配置文件和告警文件等 等,而且这些小块数据都需要被频繁读写;那么,针对上述应用场景,现有的 存储卡应用方法存在以下缺陷
(1)系统每次需要读写文件时,无论文件大小均采用文件的形式对存储 卡进行读写操作。以存储卡格式化为FAT32文件系统为例,系统以文件形式对 存储卡进行读写操作时,需要针对位于DOS启动分区(DBR)、主文件分配表分区(FAT1)、备份文件分配表分区(FAT2)、目录区以及数据区中的多个扇 区进行读写操作,这使得读写效率难以提高。
(2 )系统访问文件的过程中,多个扇区(如,FAT32文件系统中位于DBR、 FAT1、 FAT2和目录区中的扇区)被频繁读写,而频繁读写的扇区最容易损坏, 这种方式降低了存储卡的使用寿命。
有鉴于此,需要提供一种新的存储卡应用方法,以克服上述各缺陷。

发明内容
本申请实施例提供一种数据存储的方法及装置,用以提高存储卡的访问效 率,以及延长存储卡的使用寿命。
本申请实施例提供的具体技术方案如下 一种数据存储的方法,包括 确定需要存储的数据的大小,
将所述数据的大小与设定阈值进行比较,获得比较结果;
根据所述比较结果确定所述数据的大小不大于设定阈值时,在存储卡内的 保留扇区中以线性方式对所述数据进行存储。
一种存储数据的设备,包括
存储卡,用于保存数据;
确定单元,用于确定需要存储的数据的大小,
比较单元,将所述数据的大小与设定阈值进行比较,获得比较结果;
处理单元,用于根据所述比较结果确定所述数据的大小不大于设定阔值 时,在存储卡内的保留扇区中以线性方式对所述数据进行存储。
本申请实施例中,在设备中应用存储卡时,充分利用了存储卡内的保留扇 区,把频繁读写的小块数据直接存储在保留扇区上,而不是以文件的形式存储。 这样,那么,仅仅一次的存储卡访问操作即可完成数据的调度(相当于仅仅读 写文件系统下该文件的数据区),从而减少了操作步骤,提高了存储卡的读写效率,并且由于被读写的扇区数目大大减少,也有效延长了存储卡的使用寿命。 本申请同时公开了 一种应用存储卡的设备。


图1为本申请实施例中应用存储卡的设备功能结构示意图; 图2为本申请实施例中存储卡格式化为FAT32文件系统后一个分区的结 构框图;图3为本申请实施例中设备在存储卡内进行数据存储流程图。
具体实施方式
针对使用存储卡的各种设备,为了提高存储卡的访问效率以及延长存储卡 的使用寿命,本申请实施例中,在通过存储卡内格式化后的文件系统管理存储 卡上文件的同时,充分利用存储卡上文件系统未使用的保留扇区来执行小块数 据的读写操作,其中,保留扇区是一个广义的概念,包含存储卡上文件系统未使用以及未索引到的所有扇区。本申请实施例中,对于频繁读写的小块数据,如,数据库文件、日志文件、 时隙配置文件和告警文件等等,不采用文件的形式进行管理,而是直接在保留 扇区上进行线性存储和访问(类似于RAM或Flash的访问方式),而对于非频 繁读写的大块数据,依然采用文件形式进行管理,这样,通过上述两种管理方 式的有机结合,便可以提高存储卡的访问效率,提升存储卡的使用便利性,并 且,由于频繁被读写的扇区数目大大减少,从而有效延长了存储卡的使用寿命。下面结合附图对本申请优选的实施方式进行详细说明。参阅图l所示,使用存储卡的设备(可以是通讯系统设备或者便携式设备 等等)包括存储卡IO、确定单元ll、比较单元12和处理单元13,其中存储卡IO,用于保存数据,可以是CF卡、SD卡、TF卡等等;确定单元ll,用于确定需要存储的数据的大小,比较单元12,将所述数据的大小与设定阈值进行比较,获得比较结果; 处理单元13,用于根据所述比较结果确定所述数据的大小不大于设定阈值时,在存储卡内的保留扇区中以线性方式对所述数据进行存储。基于上述设备,本实施例中,在使用一块存储卡之前,设备先要对其进行格式化,以确定其文件系统,下面以将存储卡格式化为FAT32文件系统为例进行介绍。参阅图2所示,当 一块存储卡被格式化成FAT32文件系统之后,假设仅格 式化成一个分区,那么,存储卡内的各扇区的分布方式如下主引导扇区(Master Boot ecord, MBR),用于保存存储卡的启动代码以及 硬盘分区表(Disk Partition Table, DPT):其中,DPT内记录了4^储卡格式 化后划分出的磁盘的数目,每个磁盘的大小,以及每个磁盘的起始地址。保留扇区1,根据相关规定必须预留出的存储区域,以备存储卡功能后续 扩展时使用,本实施例中,将保留扇区1的大小预定为62个扇区, 一个扇区 的大小为512字节。操作系统引导扇区(DOS BOOT RECORD, DBR),用于记录文件系统标 识(OEM)、引导代码,以及BIOS参数块(BIOS Parameter Block , BPB ), 其中,磁盘属性包含了本磁盘内划分出的分区的数目以及第个分区的起始地 址。DBR后的第一个扇区,用于记录磁盘当前剩余容量和下一个空闲簇的起始 地址,其中, 一簇包含N个扇区,通常情况下,N=16。保留扇区2,通过DBR中BPB内的指定字节设置其大小,同样为预留出 的存储区域,以备存储卡功能后续扩展时使用。主文件分配表分区(FAT1),用于记载文件系统内保存的每份数据的存储 地址,因为,以文件形式进行管理时,每份数据的存储地址通常不是连续的,所以,需要把同一份数据保存时涉及到的多个存储地址进行统一管理,以便于 后续对数据进行读取。备份文件分配表(FATl ),用于4^FAT1中记录的内容,以便在FAT1内 的数据丢失时,根据^f分数据对FAT1进行恢复。 目录区,用于保存文件系统的根目录。 数据区,用于记录保存的各种数据。 实际应用中,各才艮目录下的子目录通常保存在数据区中。 保留扇区3,格式化后剩余的磁盘空间。以文件形式进行管理时,若设备在存储卡内创建或修改一个文件,则需要 按照DBR后的第一个扇区^ FATl ^ FAT2今目录区^数据区的顺序进行 相关操作,这一点将在后续流程中进行详细说明。另一方面,存储卡在进行格式化的时候,保留扇区的大小是可以控制的, 例如,如图2所示,保留扇区2的大小可以通过改变DBR内BPB段中的0x0e 字段来进行更改,可以实现0到32M字节的保留空间设置;而保留扇区3的 大小可以通过格式化磁盘时的容量限制来决定,可以预留更大的保留扇区空 间。本发明实施例中,在对存储卡格式化之前,需要对系统需求进行分析评估, 预测出需要创建多少频繁读写的数据块,从而确定需要预留出的保留扇区的数 目和大小。确定需求后,以某种文件系统对存储卡进行格式化,按照预测出的 系统需求对存储卡内的保留扇区的数目和大小进行设置。接着,规划出使用的 保留扇区所位于的空间区域,以FAT32文件系统为例,如图2,设置出需要使 用保留扇区l、保留扇区2和保留扇区中的一个或任意组合。最后,确定将使 用的保留扇区的地址。其中,BIOS板级支持包(Board Support Package, BSP ) 中提供对保留扇区进行操作时使用的底层接口函数,供上层软件调用,在底层 函数中,首先将保留扇区的磁头、柱面、扇区三个定位基准转化为一个线性的LBA地址,并且去掉偏移量,从而给上层软件提供一个从O地址开始的线性访 问空间,便于管理和才喿作。完成上述准备工作后,设备即可以开始对存储卡进行读写操作了,参阅图 3所示,本申请实施例中,设备在存储卡中对数据1进行存储的详细流程如下步骤300:确定需要存储的数据的大小。步骤310:将数据1的大小与设定阈值进行比较,判断数据l的大小是否 不大于该设定阈值,若是,则进行步骤320;否则,进行步骤330。本实施例中,所谓设定阈值即是指数据大小的取值范围,符合该取值范围 的即是小块数据,不符合的即是非小块数据,设定阈值的具体取值可以根据具 体的应用环境而自行设置,例如,"^lKbytes"或者"^2Kbytes"或者"^3Kbytes" 等等。步骤320:才艮据扇区的规划方式确定使用的保留扇区的基址和大小,并以 线性方式对使用的保留扇区进行写操作,以完成数据1的存储。本申请实施例中,以线性方式对保留扇区进行写操作时,可以调用BSP 底层函数,所谓线性方式即是指数据1被存储的物理位置顺序与数据1被接收 的顺序是完全一致。显然,以线性方式对数据1进行保存,避免了以文件形式进行管理时产生 的繁瑣流程,从而有效提高了数据1的存储效率。相应的,由于数据l以线性 方式进行保存,那么,设备在需要读取数据l时,同样使用线性方式对其进行 访问,这也在一定程度上提高了数据1的读取效率。步骤330:釆用文件系统提供的文件操作函数,以文件形式对数据l进行 存储。如图2所示,以文件形式对数据1进行存储时,要先根据DBR内包含的 信息确定磁盘当前剩余容量和下一个空闲簇的起始地址,接着,将数据l存储 时涉及到的存储地址保存在FAT1中,以及M在FAT2中,然后,在目录区中记录相应的根目录,最后,在数据区内按照FAT1中建立的存储地址对数据 1进行保存。以文件形式对数据1进行读取时,要先确定FAT1内记录的数据1存储地 址,以及目录区内记录的数据1的根目录,接着,在数据区中按照FAT1中保 存的存储地址对数据1进行读取。在上述实施例步骤320中,如果用于读取小块数据的保留扇区是固定的, 则也可以不确定保留扇区的基址和大小,直接在固定的保留扇区内对数据进行 读取。例如,如图2所示,假设保留扇区的规划方式为仅允许在保留扇区l 内对小块数据进行读取,则设备在接收到小块数据时,直接在保留扇区l内进 行读写操作;又例如,如图2所示,々支设保留扇区的身见划方式为允许在保留 扇区l、保留扇区2和保留扇区3内对小块数据进行读取,则设备在接收到小 块数据时,先从上述各保留扇区内选择保留扇区2,再确定保留扇区2的基址 以及大小,接着,再在保留扇区2内进行读写操作,在此不再赘述。另一方面,本实施例中,仅以FAT32文件系统为例进行介绍,存储卡格式 化为其他文件系统时,例如,pfflLE文件系统、FAT文件系统、ext2文件系统 或ext3文件系统等等,同样可以采用与上述实施例相同的方式,在保留扇区内 对小块数据进行存储,而在数据区内对非小块数据进行存储,在此亦不再赘述。综上所述,本申请实施例中,在设备中应用存储卡时,充分利用了存储卡 内的保留扇区,把频繁读写的小块数据直接存储在保留扇区上,而不是以文件 的形式存储。这样,仅仅一次的存储卡写操作(相当于仅仅写文件系统下该文 件的数据区),即可完成数据的调度,从而减少了操作步骤,提高了数据的读 写效率,同时由于读写的扇区数目大大减少,也延长了存储卡的使用寿命。以具体数据为例以文件形式读取1K数据时,需要对至少12个扇区(和簇 的大小有关系)进行读写操作,并且需要占用6ms的时间,而以线性方式读取 1K数据时,仅需要对2个扇区进行读写操作,并且仅需要占用lms的时间,显而易见,将以文件形式存储数据和以线性方式存储数据的方法进行有机结 合,可以大大避免存储小块数据时带来的频繁读写操作,从而提高了存储卡的 读写效率,也有效延长了存储卡的使用寿命。不脱离本申请的精神和范围。这样,倘若本申请实施例中的这些修改和变型属 于本申请权利要求及其等同技术的范围之内,则本申请中的实施例也意图包含 这些改动和变型在内。
权利要求
1、一种数据存储的方法,其特征在于,包括确定需要存储的数据的大小;将所述数据的大小与设定阈值进行比较,获得比较结果;根据所述比较结果确定所述数据的大小不大于设定阈值时,在存储卡内的保留扇区中以线性方式对所述数据进行存储。
2、 如权利要求1所述的方法,其特征在于,根据所述比较结果确定所述 数据的大小不大于设定阈值时,在以线性方式对存储卡内的保留扇区进行读写 操作之前,先根据扇区的规划方式确定使用的保留扇区的基址和大小。
3、 如果权利要求1所述的方法,其特征在于,根据所述比较结果确定所 述数据的大小大于设定阈值时,在存储卡内的数据区中以文件形式对所述数据 进行存储。
4、 如权利要求l、 2或3所述的方法,其特征在于,所述存储卡内的保留 扇区包含存储卡内文件系统未使用以及未索引到的所有扇区。
5、 如权利要求4所述的方法,其特征在于,所述存储卡的文件系统为pfflLE 文件系统、FAT文件系统、FAT32文件系统、ext2文件系统或ext3文件系统等。
6、 一种存储数据的设备,其特征在于,包括 存储卡,用于保存数据;确定单元,用于确定需要存储的数据的大小, 比较单元,将所述数据的大小与设定阈值进行比较,获得比较结果; 处理单元,用于根据所述比较结果确定所述数据的大小不大于设定阈值 时,在存储卡内的保留扇区中以线性方式对所述数据进行存储。
7、 如权利要求6所述的设备,其特征在于,所述处理单元根据所述比较 结果确定所述数据的大小不大于设定阈值时,在以线性方式对存储卡内的保留 扇区进行读写操作之前,先根据扇区的规划方式确定使用的保留扇区的基址和大小。
8、 如果权利要求6所述的设备,其特征在于,所述处理单元根据所述比 较结果确定所述数据的大小大于设定阈值时,在存储卡内的数据区中以文件形 式对所述数据进行存储。
9、 如权利要求6、 7或8所述的设备,其特征在于,所述存储卡内的保留 扇区包含存储卡内文件系统未使用以及未索引到的所有扇区。
10、 如权利要求9所述的设备,其特征在于,所述存储卡的文件系统为 pfflLE文件系统、FAT文件系统、FAT32文件系统、ext2文件系统或ext3文件 系统。
全文摘要
本申请公开了一种数据存储的方法,该方法为确定需要存储的数据的大小;将所述数据的大小与设定阈值进行比较,获得比较结果;根据所述比较结果确定所述数据的大小不大于设定阈值时,在存储卡内的保留扇区中以线性方式对所述数据进行存储。这样,便充分利用了存储卡内的保留扇区,把频繁读写的小块数据直接存储在保留扇区上,而不是以文件的形式存储,那么,仅仅一次的存储卡访问操作即可完成数据的调度,从而减少了操作步骤,提高了存储卡的读写效率,并且由于被读写的扇区数目大大减少,也有效延长了存储卡的使用寿命。本申请同时公开了一种存储数据的设备。
文档编号G06K19/07GK101582084SQ20091014217
公开日2009年11月18日 申请日期2009年6月3日 优先权日2009年6月3日
发明者孙士友 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1