CN104615546B - 文件数据管理方法及装置 - Google Patents
文件数据管理方法及装置 Download PDFInfo
- Publication number
- CN104615546B CN104615546B CN201510080418.2A CN201510080418A CN104615546B CN 104615546 B CN104615546 B CN 104615546B CN 201510080418 A CN201510080418 A CN 201510080418A CN 104615546 B CN104615546 B CN 104615546B
- Authority
- CN
- China
- Prior art keywords
- unit
- data block
- erasable
- file
- erasable unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开是文件数据管理方法及装置,用于对闪存中的文件系统进行管理,所述闪存中包括多个擦写单元,所述方法包括:当要写入目标文件的目标数据块时,根据已建立的擦写单元链表获取目标擦写单元;将所述目标数据块写入所述目标擦写单元;根据写入结果保存所述目标数据块的元信息,并更新所述目标文件的数据结构和所述目标擦写单元的数据结构。本公开可以在擦写单元中保存不同时有效的数据块,从而可以充分利用Flash的存储空间,并且由于可以避免频繁的擦除操作,因此可以提升Flash的使用性能。
Description
技术领域
本公开涉及存储技术领域,尤其涉及文件数据管理方法及装置。
背景技术
Flash(闪存)作为一种存储器,其不仅具有电子可擦除可编程的性能,还可以快速读取数据,使数据不会因为断电而丢失。一种常见的Flash为Nor Flash,通常应用在MCU(Micro Control Unit,微控制单元)上,这种Flash按照较小的单元写入数据,并且按照较大的单元擦除数据,因此需要将不能同时有效或无效的数据存放在不同的擦写单元。
相关技术中,当某个独立的小数据块占用整个擦写单元时,例如,一个字节的数据块占用了1K的擦写单元,因此浪费了Flash的存储空间,并且当该数据块变化时,需要对1K的存储空间进行擦除操作,频繁的擦除操作会缩短Flash的使用寿命。
发明内容
本公开提供了文件数据管理方法及装置,以解决相关技术中的文件数据管理方式容易浪费Flash存储空间,缩短Flash使用寿命的问题。
根据本公开实施例的第一方面,提供一种文件数据管理方法,用于对闪存中的文件系统进行管理,所述闪存中包括多个擦写单元,所述方法包括:
当要写入目标文件的目标数据块时,根据已建立的擦写单元链表获取目标擦写单元;
将所述目标数据块写入所述目标擦写单元;
根据写入结果保存所述目标数据块的元信息,并更新所述目标文件的数据结构和所述目标擦写单元的数据结构。
可选的,所述方法还包括:
当所述文件系统上电时,根据所述多个擦写单元中的数据块的元信息建立每个文件的数据结构、每个擦写单元的数据结构、以及擦写单元链表。
可选的,所述数据块的元信息包括:数据块的头信息,数据块的长度,数据块所属文件的文件名,数据块的有效性信息,数据块在所属文件中的序号;
所述建立每个文件的数据结构包括:
根据每个文件的文件名遍历所述多个擦写单元,获得与所述每个文件的文件名具有相同文件名的数据块;
计算所述具有相同文件名的数据块的长度和,将所述长度和作为所述文件的文件长度;
按照所述具有相同文件名的数据块在所述文件中的序号,获得所述文件的第一个数据块的地址信息和最后一个数据块的地址信息;
生成所述文件的数据结构,所述文件的数据结构中包括所述文件的文件名,所述文件长度,所述第一个数据块的地址信息和最后一个数据块的地址信息。
可选的,建立每个擦写单元的数据结构包括:
按照预设的写入单元的写入长度遍历每个擦写单元,获取每个擦写单元中未写入数据的剩余写入单元的剩余数量,以及已写入数据的有效写入单元的有效数量;
生成所述擦写单元的数据结构,所述擦写单元的数据结构中包括所述剩余数量和所述有效数量,其中,所述擦写单元中除所述剩余写入单元和所述有效写入单元外的写入单元为无效写入单元。
可选的,建立擦写单元链表包括:
遍历每个擦写单元的数据写入情况;
根据未写入数据的擦写单元建立空闲擦写单元队列,所述空闲擦写单元队列对为先进先出队列,以及,根据已写入数据的擦写单元建立已使用擦写单元链表,所述已使用擦写单元链表中的擦写单元中包含剩余写入单元。
可选的,所述方法还包括:
判断所述空闲擦写单元队列中的擦写单元的数量是否小于第一预设数量;
当小于所述第一预设数量时,从所述已使用擦写单元链表中获取不少于第二预设数量的擦写单元,所述不少于第二预设数量的擦写单元中的每个擦写单元的剩余数量和有效数量之和小于预设写入单元数量;
从所述空闲擦写单元队列的队尾获取至少一个擦写单元;
将所述不少于第二预设数量的擦写单元中有效性信息为有效的数据块写入所述至少一个擦写单元;
对所述不少于第二预设数量的擦写单元执行擦除操作后,将所述不少于第二预设数量的擦写单元添加到所述空闲擦写单元队列的头部。
可选的,所述根据已建立的擦写单元链表获取目标擦写单元,包括:
从所述已使用擦写单元链表中获取第一目标擦写单元;
当所述目标数据块的长度大于所述第一目标擦写单元中剩余写入单元的长度时,从所述空闲擦写单元队列的队尾获取第二目标擦写单元。
可选的,所述根据写入结果保存所述目标数据块的元信息,包括:
将所述目标文件的最后一个数据块在所述目标文件中的序号加一作为所述目标数据块在所述目标文件中的序号;
根据所述目标文件的最后一个数据块的地址信息获得所述目标数据块的头信息;
将所述目标数据块的元信息作为所述目标数据块的头部信息保存到所述目标擦写单元,其中,所述目标数据块的元信息包括所述目标数据块的头信息,目标数据块的长度,目标文件的文件名,目标数据块为有效的有效性信息,以及目标数据块在所述目标文件中的序号。
可选的,所述更新所述目标文件的数据结构和所述目标擦写单元的数据结构,包括:
根据所述目标数据块的长度,将所述目标文件的数据结构中的最后一个数据块的地址信息加一;以及,将所述目标文件的数据结构中的文件长度加上所述目标数据块的长度作为更新后的文件长度;
根据所述目标数据块占用的写入单元的占用数量,将所述目标擦写单元的剩余数量减去所述占用数量作为更新后的剩余数量,以及将所述目标擦写单元的有效数量加上所述占用数量作为更新后的有效数量。
可选的,所述方法还包括:
根据所述擦写单元中的数据块的元信息读取所述目标文件;或者,
根据所述擦写单元中的数据块的元信息删除所述目标文件。
可选的,所述根据所述擦写单元中的数据块的元信息读取所述目标文件,包括:
当要读取所述目标文件时,查找所述擦写单元中的数据块的元信息;
当查找到文件名与所述目标文件的文件名相同的数据块时,根据查找到的数据块的长度获取相应的数据块;
根据获取的数据块在所述目标文件中的序号对数据块进行组合得到所述目标文件。
可选的,所述根据所述擦写单元中的数据块的元信息删除所述目标文件,包括:
当要删除所述目标文件时,查找所述擦写单元中的数据块的元信息;
当查找到文件名与所述目标文件的文件名相同的数据块时,根据查找到的数据块的元信息更新所述目标文件的数据结构;以及,
将查找到的数据块的有效性信息修改为无效;
更新所述查找到的数据块所在的擦写单元的数据结构。
可选的,所述方法还包括:
判断更新后的擦写单元的剩余数量和有效数量的和是否小于第三预设数量;
当小于所述第三预设数量,从所述已使用擦写单元链表中获取至少一个擦写单元;
将所述更新后的擦写单元中有效性信息为有效的数据块写入所述至少一个擦写单元;
对所述更新后的擦写单元进行擦除操作后获得空闲擦写单元;
将所述空闲擦写单元添加到所述空闲擦写单元队列的头部。
根据本公开实施例的第二方面,提供一种文件数据管理装置,用于对闪存中的文件系统进行管理,所述闪存中包括多个擦写单元,所述装置包括:
获取单元,用于当要写入目标文件的目标数据块时,根据已建立的擦写单元链表获取目标擦写单元;
写入单元,用于将所述目标数据块写入所述目标擦写单元;
保存单元,用于根据写入结果保存所述目标数据块的元信息;
更新单元,用于更新所述目标文件的数据结构和所述目标擦写单元的数据结构。
可选的,所述装置还包括:
建立单元,用于当所述文件系统上电时,根据所述多个擦写单元中的数据块的元信息建立每个文件的数据结构、每个擦写单元的数据结构、以及擦写单元链表。
可选的,所述数据块的元信息包括:数据块的头信息,数据块的长度,数据块所属文件的文件名,数据块的有效性信息,数据块在所属文件中的序号;
所述建立单元包括:
数据块获取子单元,用于根据每个文件的文件名遍历所述多个擦写单元,获得与所述每个文件的文件名具有相同文件名的数据块;
文件长度计算子单元,用于计算所述具有相同文件名的数据块的长度和,将所述长度和作为所述文件的文件长度;
地址信息获取子单元,用于按照所述具有相同文件名的数据块在所述文件中的序号,获得所述文件的第一个数据块的地址信息和最后一个数据块的地址信息;
文件结构生成子单元,用于生成所述文件的数据结构,所述文件的数据结构中包括所述文件的文件名,所述文件长度,所述第一个数据块的地址信息和最后一个数据块的地址信息。
可选的,所述建立单元包括:
写入单元数量获取子单元,用于按照预设的写入单元的写入长度遍历每个擦写单元,获取每个擦写单元中未写入数据的剩余写入单元的剩余数量,以及已写入数据的有效写入单元的有效数量;
擦写单元结构生成子单元,用于生成所述擦写单元的数据结构,所述擦写单元的数据结构中包括所述剩余数量和所述有效数量,其中,所述擦写单元中除所述剩余写入单元和所述有效写入单元外的写入单元为无效写入单元。
可选的,所述建立单元包括:
擦写单元遍历子单元,用于遍历每个擦写单元的数据写入情况;
空闲擦写单元队列建立子单元,用于根据未写入数据的擦写单元建立空闲擦写单元队列,所述空闲擦写单元队列对为先进先出队列;
已使用擦写单元链表建立子单元,用于根据已写入数据的擦写单元建立已使用擦写单元链表,所述已使用擦写单元链表中的擦写单元中包含剩余写入单元。
可选的,所述装置还包括:
第一判断单元,用于判断所述空闲擦写单元队列中的擦写单元的数量是否小于第一预设数量;
所述获取单元,还用于当小于所述第一预设数量时,从所述已使用擦写单元链表中获取不少于第二预设数量的擦写单元,所述不少于第二预设数量的擦写单元中的每个擦写单元的剩余数量和有效数量之和小于预设写入单元数量,并从所述空闲擦写单元队列的队尾获取至少一个擦写单元;
所述写入单元,还用于将所述不少于第二预设数量的擦写单元中有效性信息为有效的数据块写入所述至少一个擦写单元;
第一添加单元,用于对所述不少于第二预设数量的擦写单元执行擦除操作后,将所述不少于第二预设数量的擦写单元添加到所述空闲擦写单元队列的头部。
可选的,所述获取单元包括:
第一获取子单元,用于从所述已使用擦写单元链表中获取第一目标擦写单元;
第二获取子单元,用于当所述目标数据块的长度大于所述第一目标擦写单元中剩余写入单元的长度时,从所述空闲擦写单元队列的队尾获取第二目标擦写单元。
可选的,所述保存单元包括:
序号获取子单元,用于将所述目标文件的最后一个数据块在所述目标文件中的序号加一作为所述目标数据块在所述目标文件中的序号;
头信息获取子单元,用于根据所述目标文件的最后一个数据块的地址信息获得所述目标数据块的头信息;
元信息保存子单元,用于将所述目标数据块的元信息作为所述目标数据块的头部信息保存到所述目标擦写单元,其中,所述目标数据块的元信息包括所述目标数据块的头信息,目标数据块的长度,目标文件的文件名,目标数据块为有效的有效性信息,以及目标数据块在所述目标文件中的序号。
可选的,所述更新单元包括:
文件结构更新子单元,用于根据所述目标数据块的长度,将所述目标文件的数据结构中的最后一个数据块的地址信息加一;以及,将所述目标文件的数据结构中的文件长度加上所述目标数据块的长度作为更新后的文件长度;
擦写单元结构更新子单元,用于根据所述目标数据块占用的写入单元的占用数量,将所述目标擦写单元的剩余数量减去所述占用数量作为更新后的剩余数量,以及将所述目标擦写单元的有效数量加上所述占用数量作为更新后的有效数量。
可选的,所述装置还包括至少一个下述单元:
读取单元,用于根据所述擦写单元中的数据块的元信息读取所述目标文件;
删除单元,用于根据所述擦写单元中的数据块的元信息删除所述目标文件。
可选的,所述读取单元包括:
第一元信息查找子单元,用于当要读取所述目标文件时,查找所述擦写单元中的数据块的元信息;
数据块查找子单元,用于当查找到文件名与所述目标文件的文件名相同的数据块时,根据查找到的数据块的长度获取相应的数据块;
目标文件获取子单元,用于根据获取的数据块在所述目标文件中的序号对数据块进行组合得到所述目标文件。
可选的,所述删除单元包括:
第二元信息查找子单元,用于当要删除所述目标文件时,查找所述擦写单元中的数据块的元信息;
文件数据结构更新子单元,用于当查找到文件名与所述目标文件的文件名相同的数据块时,根据查找到的数据块的元信息更新所述目标文件的数据结构;
有效性信息修改子单元,用于将查找到的数据块的有效性信息修改为无效;
擦写单元结构更新子单元,用于更新所述查找到的数据块所在的擦写单元的数据结构。
可选的,所述装置还包括:
第二判断单元,用于判断更新后的擦写单元的剩余数量和有效数量的和是否小于第三预设数量;
所述获取单元,还用于当小于所述第三预设数量,从所述已使用擦写单元链表中获取至少一个擦写单元;
所述写入单元,还用于将所述更新后的擦写单元中有效性信息为有效的数据块写入所述至少一个擦写单元;
擦除单元,用于对所述更新后的擦写单元进行擦除操作后获得空闲擦写单元;
第二添加单元,用于将所述空闲擦写单元添加到所述空闲擦写单元队列的头部。
根据本公开实施例的第三方面,提供一种文件数据管理装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:
当要写入目标文件的目标数据块时,根据已建立的擦写单元链表获取目标擦写单元;
将所述目标数据块写入所述目标擦写单元;
根据写入结果保存所述目标数据块的元信息,并更新所述目标文件的数据结构和所述目标擦写单元的数据结构。
本公开的实施例提供的技术方案可以包括以下有益效果:
本公开中将目标文件的目标数据块写入从擦写单元链表中获取的目标擦写单元,并根据写入结果保存目标数据块的元信息,已经更新目标文件的数据结构和目标擦写单元的数据结构。因此通过维护擦写单元链表,文件的数据结构和擦写单元的数据结构,可以对Flash中的文件数据进行管理,由于通过数据块的元信息可以识别不同的数据块,因此与相关技术相比,可以在擦写单元中保存不同时有效的数据块,从而可以充分利用Flash的存储空间,并且由于可以避免频繁的擦除操作,因此可以提升Flash的使用性能。
本公开中在根据数据块的元信息建立文件的数据结构时,通过文件名将文件与其对应的数据块进行关联,在建立擦写单元的数据结构时,根据擦写单元中数据块的写入情况获得剩余写入单元和有效写入单元的数量,并且根据擦写单元中数据的写入情况建立空闲擦写单元队列和已使用擦写单元链表,从而可以从空闲擦写单元队列和已使用擦写单元链表中获得用于写入数据块的擦写单元,并可以根据已写入数据块的元信息调整文件的数据结构和擦写单元的数据结构,从而对文件系统进行管理。
本公开中还可以在空闲擦写单元队列中的擦写单元的数量较少时,从已使用擦写单元链表中获得若干擦写单元,将若干擦写单元中的有效数据块搬移到空闲擦写单元队列中的至少一个擦写单元中,并将前述若干擦写单元回收到空闲擦写单元队列的头部,从而通过空闲擦写单元队列控制擦写单元的均衡使用。
本公开在获取目标擦写单元时,可以从已使用擦写单元链表和空闲擦写单元队列中获取目标擦写单元,从而可以保证Flash中擦写单元的均衡使用。
本公开中还可以根据数据块的元信息从Flash中读取文件或者删除文件,并可以在删除文件后,根据对应擦写单元中剩余写入单元和有效写入单元的数量,在该数量较小时,对擦写单元进行回收,从而可以进一步维护擦写单元的均衡使用。
本公开中可以通过在Flash存储空间中保存数据块的元信息,以及在文件系统上电时,在RAM(Random Access Memory,随机存储器)中生成文件的数据结构、擦写单元的数据结构、空闲擦写单元队列和已使用擦写单元链表,从而可以在使用较少RAM资源的同时,提高Flash的利用率,简化文件系统的擦写操作逻辑。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是本公开根据一示例性实施例示出的一种文件数据管理方法流程图。
图2A是本公开根据一示例性实施例示出的另一种文件数据管理方法流程图。
图2B是本公开根据一示例性实施例示出的一种数据块的元信息的数据结构示意图。
图2C是本公开根据一示例性实施例示出的一种空闲擦写单元队列的结构示意图。
图3是本公开根据一示例性实施例示出的另一种文件数据管理方法流程图。
图4是本公开根据一示例性实施例示出的另一种文件数据管理方法流程图。
图5是本公开根据一示例性实施例示出的另一种文件数据管理方法流程图。
图6是本公开根据一示例性实施例示出的另一种文件数据管理方法流程图。
图7是本公开根据一示例性实施例示出的一种文件数据管理装置框图。
图8是本公开根据一示例性实施例示出的另一种文件数据管理装置框图。
图9是本公开根据一示例性实施例示出的另一种文件数据管理装置框图。
图10是本公开根据一示例性实施例示出的另一种文件数据管理装置框图。
图11是本公开根据一示例性实施例示出的另一种文件数据管理装置框图。
图12是本公开根据一示例性实施例示出的另一种文件数据管理装置框图。
图13是本公开根据一示例性实施例示出的另一种文件数据管理装置框图。
图14是本公开根据一示例性实施例示出的另一种文件数据管理装置框图。
图15是本公开根据一示例性实施例示出的另一种文件数据管理装置框图。
图16是本公开根据一示例性实施例示出的另一种文件数据管理装置框图。
图17是本公开根据一示例性实施例示出的另一种文件数据管理装置框图。
图18是本公开根据一示例性实施例示出的另一种文件数据管理装置框图。
图19是本公开根据一示例性实施例示出的另一种文件数据管理装置框图。
图20是本公开根据一示例性实施例示出的一种用于文件数据管理装置的一结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
如图1所示,图1是根据一示例性实施例示出的一种文件数据管理方法流程图,该方法可以用于各种终端设备的MCU中,包括以下步骤:
在步骤101中,当要写入目标文件的目标数据块时,根据已建立的擦写单元链表获取目标擦写单元。
本公开实施例用于对Flash中的文件系统进行管理,以MCU中的Flash为例,其通常具有较小的存储空间,因此主要用于对小型文件系统进行管理,该Flash除了用于存储系统固件外,还可以用于存储系统的配置数据,当MCU应用在小型智能设备中,如智能插座、智能血压计等时,该Flash还可以用于存储这些小型设备的采集数据。
通常Flash中按照写入单元写入文件的数据块,并按照擦写单元擦除数据。本公开实施例中可以在保存数据块的同时保存数据块的元信息,从而根据数据块的元信息维护数据块所在文件的数据结构,数据块所在擦写单元的数据结构,以及擦写单元链表,从而对Flash中存储的文件数据进行管理。
其中,数据块的元信息可以包括:数据块的头信息,数据块的长度,数据块所属文件的文件名,数据块的有效性信息,数据块在所属文件中的序号;每个文件的数据结构中可以包括:文件的文件名,文件长度,第一个数据块的地址信息和最后一个数据块的地址信息;每个擦写单元的数据结构可以包括:未写入数据的剩余写入单元的剩余数量,已写入数据的有效写入单元的有效数量。
其中,擦写单元链表可以包括:空闲擦写单元队列和已使用擦写单元链表。其中,空闲擦写单元队列对为先进先出队列,该队列中包括所有未写入数据的擦写单元;已使用擦写单元队列中包括已写入数据的擦写单元,且这些擦写单元中还包含剩余写入单元。
本步骤中,当要写入目标文件的目标数据块时,可以从已使用擦写单元链表中获取第一目标擦写单元,该第一目标擦写单元可以具体包括至少一个擦写单元;当目标数据块的长度大于第一目标擦写单元中剩余写入单元的长度时,可以进一步从空闲擦写单元队列的队尾获取第二目标擦写单元,该第二目标擦写单元也可以包括至少一个擦写单元。需要说明的是,上述第一目标擦写单元和第二目标擦写单元的描述方式仅为了区别擦写单元的出处不同,并不用于限制擦写单元的具体数量。
在步骤102中,将目标数据块写入目标擦写单元。
本步骤中,可以按照预设的写入单元的写入长度向目标擦写单元中写入目标数据块,根据目标数据块的长度不同,可能占用不同数量的擦写单元。
在步骤103中,根据写入结果保存目标数据块的元信息。
本公开实施例中,当写入目标数据块完成后,可以将目标数据块的元信息作为目标数据块的头部信息保存到目标擦写单元中。其中,可以将目标文件的最后一个数据块在目标文件中的序号加一作为目标数据块在目标文件中的序号;根据目标文件的最后一个数据块的地址信息获得目标数据块的头信息;除了上述目标数据块的序号和头信息外,目标数据块的元信息中还包括目标数据块的长度,目标文件的文件名,以及目标数据块为有效的有效性信息。
在步骤104中,更新目标文件的数据结构和目标擦写单元的数据结构。
在保存目标数据块的元信息后,可以根据该元信息对目标文件的数据结构和目标擦写单元的数据结构进行更新。其中,在对目标文件的数据结构进行更新时,可以根据目标数据块的长度,将目标文件的数据结构中的最后一个数据块的地址信息加一,将目标文件的数据结构中的文件长度加上目标数据块的长度作为更新后的文件长度;在对目标擦写单元的数据结构进行更新时,可以根据目标数据块占用的写入单元的占用数量,将目标擦写单元的剩余数量减去占用数量作为更新后的剩余数量,以及将目标擦写单元的有效数量加上占用数量作为更新后的有效数量。
由上述实施例可见,该实施例通过维护擦写单元链表,文件的数据结构和擦写单元的数据结构,可以对Flash中的文件数据进行管理,由于通过数据块的元信息可以识别不同的数据块,因此与相关技术相比,可以在擦写单元中保存不同时有效的数据块,从而可以充分利用Flash的存储空间,并且由于可以避免频繁的擦除操作,因此可以提升Flash的使用性能。
如图2A所示,图2A是根据一示例性实施例示出的另一种文件数据管理方法流程图,该方法可以用于各种终端设备的MCU中,该实施例详细描述了通过预先建立的文件的数据结构、擦写单元的数据结构以及擦写单元链表进行文件管理的过程,包括以下步骤:
在步骤201中,在文件系统上电时,根据擦写单元中的数据块的元信息建立每个文件的数据结构、每个擦写单元的数据结构、以及擦写单元链表。
MCU作为一种单片机,其将CPU(Central Process ing Unit,中央处理器)、存储设备和多种I/O(Input/Output,输入/输出)接口集成在一片芯片上,从而形成芯片级的计算机。MCU上的非易失性存储设备可以具体为NOR Flash,本公开实施例可以用于对该Flash中的文件系统进行管理。
通常Flash中按照写入单元写入文件的数据块,并按照擦写单元擦除数据。本公开实施例中可以在保存数据块的同时保存数据块的元信息,从而根据数据块的元信息维护数据块所在文件的数据结构,数据块所在擦写单元的数据结构,以及擦写单元链表,从而对Flash中存储的文件数据进行管理。
参见图2B,为本公开中数据块的元信息的数据结构示意图,其中数据块的元信息可以包括:数据块的头信息,用于表示数据块在Flash中的起始存储位置,其可以用字节进行表征;数据块的长度,用于表示数据块占用的字节数;数据块的CRC(Cycl ic RedundancyCheck,循环冗余校验码)校验值,用于在读取该数据块时校验数据是否正确;数据块所属文件的文件名,用于表示该数据块所属的文件,在文件系统较小时,为了节省存储空间,文件名可以通过较少的字节进行描述,例如一个数字;数据块的有效性信息,用于表示该数据块当前是有效数据块还是无效数据块,其中可以通过“0xFFFF”表示数据块有效,而其他任意数值可以表示数据块无效(即该数据块可以被删除);数据块在所属文件中的序号,用于表示该数据块在其所属文件中的位置。
本公开中当向Flash的擦写单元中写入数据块时,可以同时在数据块的头部保存数据块的元信息。如下为通过程序语言来描述数据块的元信息的一种数据结构示例:
本步骤中,在建立每个文件的数据结构时,可以根据每个文件的文件名遍历Flash中的擦写单元,获得与每个文件的文件名具有相同文件名的数据块,计算具有相同文件名的数据块的长度和,将该长度和作为对应文件的文件长度,然后按照具有相同文件名的数据块在文件中的序号,获得该文件的第一个数据块的地址信息和最后一个数据块的地址信息;基于上述获得的信息生成文件的数据结构,该文件的数据结构中包括文件的文件名,文件长度,第一个数据块的地址信息和最后一个数据块的地址信息。如下为通过程序语言描述的一种文件的数据结构示例:
本步骤中,在建立每个擦写单元的数据结构时,可以按照预设的写入单元的写入长度遍历每个擦写单元,获取每个擦写单元中未写入数据的剩余写入单元的剩余数量,以及已写入数据的有效写入单元的有效数量;基于获取的上述信息,生成擦写单元的数据结构,该擦写单元的数据结构中包括剩余数量和有效数量,其中,擦写单元中除剩余写入单元和有效写入单元外的写入单元为无效写入单元。如下为通过程序语言描述的一种擦写单元的数据结构示例:
本步骤中,在建立擦写单元链表时,可以遍历每个擦写单元的数据写入情况,根据未写入数据的擦写单元建立空闲擦写单元队列,该空闲擦写单元队列对为先进先出队列,如图2C所示,为本实施例中一种空闲擦写单元队列的结构示意图;根据已写入数据的擦写单元建立已使用擦写单元链表,该已使用擦写单元链表中的擦写单元中包含剩余写入单元。
在步骤202中,当要写入目标文件的目标数据块时,根据擦写单元链表获取目标擦写单元。
本步骤中,当要写入目标文件的目标数据块时,可以从已使用擦写单元链表中获取第一目标擦写单元,该第一目标擦写单元可以具体包括至少一个擦写单元;当目标数据块的长度大于第一目标擦写单元中剩余写入单元的长度时,可以进一步从空闲擦写单元队列的队尾获取第二目标擦写单元,该第二目标擦写单元也可以包括至少一个擦写单元。需要说明的是,上述第一目标擦写单元和第二目标擦写单元的描述方式仅为了区别擦写单元的出处不同,并不用于限制擦写单元的具体数量。
在步骤203中,将目标数据块写入目标擦写单元。
上述无论擦写单元队列,还是已使用擦写单元链表中的擦写单元,都可以保存擦写单元在Flash中的地址。本步骤中,可以根据目标擦写单元的地址,按照预设的写入单元的写入长度向目标擦写单元中写入目标数据块,其中根据目标数据块的长度不同,可能占用不同数量的擦写单元。
在步骤204中,根据写入结果保存目标数据块的元信息。
本公开实施例中,当写入目标数据块完成后,可以将目标数据块的元信息作为目标数据块的头部信息保存到目标擦写单元中,目标数据块的元信息的数据结构与图2B中示出的数据结构一致。其中,可以将目标文件的最后一个数据块在目标文件中的序号加一作为目标数据块在目标文件中的序号,即block_num=last_block+1;根据目标文件的最后一个数据块的地址信息获得目标数据块的头信息。
在步骤205中,更新目标文件的数据结构和目标擦写单元的数据结构。
在保存目标数据块的元信息后,可以根据该元信息对目标文件的数据结构和目标擦写单元的数据结构进行更新。其中,在对目标文件的数据结构进行更新时,可以根据目标数据块的长度,将目标文件的数据结构中的最后一个数据块的地址信息加一,将目标文件的数据结构中的文件长度加上目标数据块的长度作为更新后的文件长度;在对目标擦写单元的数据结构进行更新时,可以根据目标数据块占用的写入单元的占用数量,将目标擦写单元的剩余数量减去占用数量作为更新后的剩余数量,以及将目标擦写单元的有效数量加上占用数量作为更新后的有效数量。
由上述实施例可见,该实施例通过维护擦写单元链表,文件的数据结构和擦写单元的数据结构,可以对Flash中的文件数据进行管理,由于通过数据块的元信息可以识别不同的数据块,因此与相关技术相比,可以在擦写单元中保存不同时有效的数据块,从而可以充分利用Flash的存储空间,并且由于可以避免频繁的擦除操作,因此可以提升Flash的使用性能。
如图3所示,图3是根据一示例性实施例示出的另一种文件数据管理方法流程图,该方法可以用于各种终端设备的MCU中,该实施例在前述图2所示实施例的基础上,详细描述了一种对空闲擦写单元队列进行维护的过程,包括以下步骤:
在步骤301中,完成向目标擦写单元中写入数据块。
在步骤302中,判断空闲擦写单元队列中的擦写单元的数量是否小于第一预设数量,若是,则执行步骤303;否则,结束当前流程。
本实施例中,可以通过对擦写单元进行回收实现对空闲擦写单元队列的维护,其中可以在空闲擦写单元队列中的擦写单元的数量较小时触发回收操作,该较小数量可以表示为第一预设数量,其具体数值可以根据应用需求灵活设置,对此本公开实施例不进行限制。
在步骤303中,从已使用擦写单元链表中获取不少于第二预设数量的擦写单元,该不少于第二预设数量的擦写单元中的每个擦写单元的剩余数量和有效数量之和小于预设写入单元数量。
在根据步骤302的判断结果确定空闲擦写单元队列中的擦写单元的数量小于第一预设数量时,从已使用擦写单元链表中获得不少于第二预设数量的擦写单元,这些擦写单元的剩余数量和有效数量之和小于预设写入单元数量,即这些擦写单元中的无效写入单元数量较多。
在步骤304中,从空闲擦写单元队列的队尾获取至少一个擦写单元。
在步骤305中,将不少于第二预设数量的擦写单元中有效性信息为有效的数据块写入该至少一个擦写单元。
在从空闲擦写单元队列获取至少一个擦写单元后,可以将步骤302中获得的不少于第二预设数量的擦写单元中的数据块搬移到该至少一个擦写单元中,其中搬移的数据块即为有效性信息为有效的数据块。
在步骤306中,对不少于第二预设数量的擦写单元执行擦除操作后,将不少于第二预设数量的擦写单元添加到空闲擦写单元队列的头部。
在步骤305执行完成后,可以对不少于第二预设数量的擦写单元执行擦除操作,实现对这些擦写单元的回收,并按照先进先出原则,将这些擦写单元添加到空闲擦写单元队列的头部,从而通过空闲擦写单元队列控制擦写单元的均衡使用。
如图4所示,图4是根据一示例性实施例示出的另一种文件数据管理方法流程图,该方法可以用于各种终端设备的MCU中,该实施例在前述图2所示实施例的基础上,详细描述了文件读取过程,包括以下步骤:
在步骤401中,当要读取目标文件时,查找擦写单元中的数据块的元信息。
在步骤402中,当查找到文件名与目标文件的文件名相同的数据块时,根据查找到的数据块的长度获取相应的数据块。
其中,当数据块的元信息中包含CRC校验值时,可以根据该CRC校验值验证读取到的每个数据块是否正确。
在步骤403中,根据获取的数据块在目标文件中的序号对数据块进行组合得到要读取的目标文件。
如图5所示,图5是根据一示例性实施例示出的另一种文件数据管理方法流程图,该方法可以用于各种终端设备的MCU中,该实施例在前述图2所示实施例的基础上,详细描述了文件删除过程,包括以下步骤:
在步骤501中,当要删除目标文件时,查找擦写单元中的数据块的元信息。
在步骤502中,当查找到文件名与目标文件的文件名相同的数据块时,根据查找到的数据块的元信息更新目标文件的数据结构。
本步骤中,在删除数据块后,将目标文件中的文件长度减去已删除数据块的长度,作为更新后的文件长度,以及将目标文件的数据结构中的最后一个数据块的地址信息减一。
在步骤503中,将查找到的数据块的有效性信息修改为无效。
本公开实施例中,当某个数据块无效时,并不需要立刻对该数据块所在擦写单元进行擦除操作,而是可以将该数据块的有效性信息设置为无效,从而在该数据块所在擦写单元中的有效性信息为无效的数据块超过预设数量时,再对该擦写单元执行擦除操作,从而避免频繁对擦写单元进行擦除操作,从而可以充分利用闪存的存储空间,提升闪存的使用性能。
在步骤504中,更新查找到的数据块所在的擦写单元的数据结构。
在对目标擦写单元的数据结构进行更新时,可以根据已删除数据块占用的写入单元的占用数量,该擦写单元的有效数量减去占用数量作为更新后的有效数量。
如图6所示,图6是根据一示例性实施例示出的另一种文件数据管理方法流程图,该方法可以用于各种终端设备的MCU中,该实施例在前述图5所示实施例的基础上,详细描述了另一种对空闲擦写单元队列进行维护的过程,包括以下步骤:
在步骤601中,完成目标文件的删除操作。
在步骤602中,判断更新后的擦写单元的剩余数量和有效数量的和是否小于第三预设数量,若是,则执行步骤603;否则,结束当前流程。
本实施例中,在完成删除操作后,可以通过对擦写单元进行回收实现对空闲擦写单元队列的维护,其中可以在擦写单元中的剩余数量和有效数量的和较小时触发回收操作,该较小数量可以表示为第三预设数量,其具体数值可以根据应用需求灵活设置,对此本公开实施例不进行限制。
在步骤603中,从已使用擦写单元链表中获取至少一个擦写单元。
在步骤604中,将更新后的擦写单元中有效性信息为有效的数据块写入至少一个擦写单元。
在步骤605中,对更新后的擦写单元进行擦除操作后获得空闲擦写单元。
在步骤606中,将空闲擦写单元添加到空闲擦写单元队列的头部。
本步骤中,仍然可以按照先进先出原则,将回收的擦写单元添加到空闲擦写单元队列的头部,从而通过空闲擦写单元队列控制擦写单元的均衡使用。
与前述文件数据管理方法实施例相对应,本公开还提供了文件数据管理装置的实施例。
如图7所示,图7是本公开根据一示例性实施例示出的一种文件数据管理装置框图,所述装置包括:获取单元710、写入单元720、保存单元730和更新单元740。
其中,获取单元710,被配置为当要写入目标文件的目标数据块时,根据已建立的擦写单元链表获取目标擦写单元;
写入单元720,被配置为将所述目标数据块写入所述目标擦写单元;
保存单元730,被配置为根据写入结果保存所述目标数据块的元信息;
更新单元740,被配置为更新所述目标文件的数据结构和所述目标擦写单元的数据结构。
上述实施例中,通过维护擦写单元链表,文件的数据结构和擦写单元的数据结构,可以对Flash中的文件数据进行管理,由于通过数据块的元信息可以识别不同的数据块,因此与相关技术相比,可以在擦写单元中保存不同时有效的数据块,从而可以充分利用Flash的存储空间,并且由于可以避免频繁的擦除操作,因此可以提升Flash的使用性能。
如图8所示,图8是本公开根据一示例性实施例示出的另一种文件数据管理装置框图,该实施例在前述图7所示实施例的基础上,所述装置可以进一步包括:建立单元750。
其中,建立单元750,被配置为当所述文件系统上电时,根据所述多个擦写单元中的数据块的元信息建立每个文件的数据结构、每个擦写单元的数据结构、以及擦写单元链表。
如图9所示,图9是本公开根据一示例性实施例示出的另一种文件数据管理装置框图,该实施例在前述图8所示实施例的基础上,所述建立单元750可以包括:数据块获取子单元7511、文件长度计算子单元7512、地址信息获取子单元7513和文件结构生成子单元7514。
其中,数据块获取子单元7511,被配置为根据每个文件的文件名遍历所述多个擦写单元,获得与所述每个文件的文件名具有相同文件名的数据块;
文件长度计算子单元7512,被配置为计算所述具有相同文件名的数据块的长度和,将所述长度和作为所述文件的文件长度;
地址信息获取子单元7513,被配置为按照所述具有相同文件名的数据块在所述文件中的序号,获得所述文件的第一个数据块的地址信息和最后一个数据块的地址信息;
文件结构生成子单元7514,被配置为生成所述文件的数据结构,所述文件的数据结构中包括所述文件的文件名,所述文件长度,所述第一个数据块的地址信息和最后一个数据块的地址信息。
如图10所示,图10是本公开根据一示例性实施例示出的另一种文件数据管理装置框图,该实施例在前述图9所示实施例的基础上,所述建立单元750还可以包括:写入单元数量获取子单元7521和擦写单元结构生成子单元7522。
其中,写入单元数量获取子单元7521,被配置为按照预设的写入单元的写入长度遍历每个擦写单元,获取每个擦写单元中未写入数据的剩余写入单元的剩余数量,以及已写入数据的有效写入单元的有效数量;
擦写单元结构生成子单元7522,被配置为生成所述擦写单元的数据结构,所述擦写单元的数据结构中包括所述剩余数量和所述有效数量,其中,所述擦写单元中除所述剩余写入单元和所述有效写入单元外的写入单元为无效写入单元。
如图11所示,图11是本公开根据一示例性实施例示出的另一种文件数据管理装置框图,该实施例在前述图10所示实施例的基础上,所述建立单元750还可以包括:擦写单元遍历子单元7531、空闲擦写单元队列建立子单元7532和已使用擦写单元链表建立子单元7533。
其中,擦写单元遍历子单元7531,被配置为遍历每个擦写单元的数据写入情况;
空闲擦写单元队列建立子单元7532,被配置为根据未写入数据的擦写单元建立空闲擦写单元队列,所述空闲擦写单元队列对为先进先出队列;
已使用擦写单元链表建立子单元7533,被配置为根据已写入数据的擦写单元建立已使用擦写单元链表,所述已使用擦写单元链表中的擦写单元中包含剩余写入单元。
上述实施例中,在根据数据块的元信息建立文件的数据结构时,通过文件名将文件与其对应的数据块进行关联,在建立擦写单元的数据结构时,根据擦写单元中数据块的写入情况获得剩余写入单元和有效写入单元的数量,并且根据擦写单元中数据的写入情况建立空闲擦写单元队列和已使用擦写单元链表,从而可以从空闲擦写单元队列和已使用擦写单元链表中获得用于写入数据块的擦写单元,并可以根据已写入数据块的元信息调整文件的数据结构和擦写单元的数据结构,从而对文件系统进行管理。
如图12所示,图12是本公开根据一示例性实施例示出的另一种文件数据管理装置框图,该实施例在前述图11所示实施例的基础上,所述装置还可以包括:第一判断单元760和第一添加单元770。
其中,第一判断单元760,被配置为判断所述空闲擦写单元队列中的擦写单元的数量是否小于第一预设数量;
所述获取单元710,还被配置为当小于所述第一预设数量时,从所述已使用擦写单元链表中获取不少于第二预设数量的擦写单元,所述不少于第二预设数量的擦写单元中的每个擦写单元的剩余数量和有效数量之和小于预设写入单元数量,并从所述空闲擦写单元队列的队尾获取至少一个擦写单元;
所述写入单元720,还被配置为将所述不少于第二预设数量的擦写单元中有效性信息为有效的数据块写入所述至少一个擦写单元;
第一添加单元770,被配置为对所述不少于第二预设数量的擦写单元执行擦除操作后,将所述不少于第二预设数量的擦写单元添加到所述空闲擦写单元队列的头部。
上述实施例中,在空闲擦写单元队列中的擦写单元的数量较少时,从已使用擦写单元链表中获得若干擦写单元,将若干擦写单元中的有效数据块搬移到空闲擦写单元队列中的至少一个擦写单元中,并将前述若干擦写单元回收到空闲擦写单元队列的头部,从而通过空闲擦写单元队列控制擦写单元的均衡使用。
如图13所示,图13是本公开根据一示例性实施例示出的另一种文件数据管理装置框图,该装置在前述图11所示实施例的基础上,所述获取单元710可以包括:第一获取子单元711和第二获取子单元712。
其中,第一获取子单元711,被配置为从所述已使用擦写单元链表中获取第一目标擦写单元;
第二获取子单元712,被配置为当所述目标数据块的长度大于所述第一目标擦写单元中剩余写入单元的长度时,从所述空闲擦写单元队列的队尾获取第二目标擦写单元。
上述实施例中,在获取目标擦写单元时,可以从已使用擦写单元链表和空闲擦写单元队列中获取目标擦写单元,从而可以保证Flash中擦写单元的均衡使用。
如图14所示,图14是本公开根据一示例性实施例示出的另一种文件数据管理装置框图,该装置在前述图11所示实施例的基础上,所述保存单元730可以包括:序号获取子单元731、头信息获取子单元732和元信息保存子单元733。
其中,序号获取子单元731,被配置为将所述目标文件的最后一个数据块在所述目标文件中的序号加一作为所述目标数据块在所述目标文件中的序号;
头信息获取子单元732,被配置为根据所述目标文件的最后一个数据块的地址信息获得所述目标数据块的头信息;
元信息保存子单元733,被配置为将所述目标数据块的元信息作为所述目标数据块的头部信息保存到所述目标擦写单元,其中,所述目标数据块的元信息包括所述目标数据块的头信息,目标数据块的长度,目标文件的文件名,目标数据块为有效的有效性信息,以及目标数据块在所述目标文件中的序号。
如图15所示,图15是本公开根据一示例性实施例示出的另一种文件数据管理装置框图,该装置在前述图14所示实施例的基础上,所述更新单元740可以包括:文件结构更新子单元741和擦写单元结构更新子单元742。
其中,文件结构更新子单元741,被配置为根据所述目标数据块的长度,将所述目标文件的数据结构中的最后一个数据块的地址信息加一;以及,将所述目标文件的数据结构中的文件长度加上所述目标数据块的长度作为更新后的文件长度;
擦写单元结构更新子单元742,被配置为根据所述目标数据块占用的写入单元的占用数量,将所述目标擦写单元的剩余数量减去所述占用数量作为更新后的剩余数量,以及将所述目标擦写单元的有效数量加上所述占用数量作为更新后的有效数量。
如图16所示,图16是本公开根据一示例性实施例示出的另一种文件数据管理装置框图,该装置在前述图11至图15任一所示实施例的基础上,所述装置还可以包括至少一个下述单元:读取单元780和删除单元790,为了示例方便,图16中同时示出了上述两个单元。
其中,读取单元780,被配置为根据所述擦写单元中的数据块的元信息读取所述目标文件;
删除单元790,被配置为根据所述擦写单元中的数据块的元信息删除所述目标文件。
如图17所示,图17是本公开根据一示例性实施例示出的另一种文件数据管理装置框图,该装置在前述图16所示实施例的基础上,所述读取单元780可以包括:第一元信息查找子单元781、数据块查找子单元782和目标文件获取子单元783。
其中,第一元信息查找子单元781,被配置为当要读取所述目标文件时,查找所述擦写单元中的数据块的元信息;
数据块查找子单元782,被配置为当查找到文件名与所述目标文件的文件名相同的数据块时,根据查找到的数据块的长度获取相应的数据块;
目标文件获取子单元783,被配置为根据获取的数据块在所述目标文件中的序号对数据块进行组合得到所述目标文件。
如图18所示,图18是本公开根据一示例性实施例示出的另一种文件数据管理装置框图,该装置在前述图16所示实施例的基础上,所述删除单元790可以包括:第二元信息查找子单元791、文件数据结构更新子单元792、有效性信息修改子单元793和擦写单元结构更新子单元794。
其中,第二元信息查找子单元791,被配置为当要删除所述目标文件时,查找所述擦写单元中的数据块的元信息;
文件数据结构更新子单元792,被配置为当查找到文件名与所述目标文件的文件名相同的数据块时,根据查找到的数据块的元信息更新所述目标文件的数据结构;
有效性信息修改子单元793,被配置为将查找到的数据块的有效性信息修改为无效;
擦写单元结构更新子单元794,被配置为更新所述查找到的数据块所在的擦写单元的数据结构。
如图19所示,图19是本公开根据一示例性实施例示出的另一种文件数据管理装置框图,该装置在前述图18所示实施例的基础上,所述装置还可以包括:第二判断单元810、擦除单元820和第二添加单元830。
其中,第二判断单元810,被配置为判断更新后的擦写单元的剩余数量和有效数量的和是否小于第三预设数量;
所述获取单元710,还被配置为当小于所述第三预设数量,从所述已使用擦写单元链表中获取至少一个擦写单元;
所述写入单元720,还被配置为将所述更新后的擦写单元中有效性信息为有效的数据块写入所述至少一个擦写单元;
擦除单元820,被配置为对所述更新后的擦写单元进行擦除操作后获得空闲擦写单元;
第二添加单元830,被配置为将所述空闲擦写单元添加到所述空闲擦写单元队列的头部。
上述实施例中,可以根据数据块的元信息从Flash中读取文件或者删除文件,并可以在删除文件后,根据对应擦写单元中剩余写入单元和有效写入单元的数量,在该数量较小时,对擦写单元进行回收,从而可以进一步维护擦写单元的均衡使用。
另外,本公开实施例可以通过在Flash存储空间中保存数据块的元信息,以及在文件系统上电时,在RAM中生成文件的数据结构、擦写单元的数据结构、空闲擦写单元队列和已使用擦写单元链表,从而可以在使用较少RAM资源的同时,提高Flash的利用率,简化文件系统的擦写操作逻辑。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
相应的,本公开还提供一种文件数据管理装置,所述装置包括有处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:
当要写入目标文件的目标数据块时,根据已建立的擦写单元链表获取目标擦写单元;
将所述目标数据块写入所述目标擦写单元;
根据写入结果保存所述目标数据块的元信息,并更新所述目标文件的数据结构和所述目标擦写单元的数据结构。
如图20所示,图20是本公开根据一示例性实施例示出的一种用于文件数据管理装置2000的结构示意图。例如,装置2000可以是具有MCU的终端,该终端可以具体为移动电话,计算机,数字广播终端,消息收发设备,智能插座,智能血压计,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图20,装置2000可以包括以下一个或多个组件:处理组件2002,存储器2004,电源组件2006,多媒体组件2008,音频组件2010,输入/输出(I/O)的接口2012,传感器组件2014,以及通信组件2016。
处理组件2002通常控制装置2000的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件2002可以包括一个或多个处理器2020来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件2002可以包括一个或多个模块,便于处理组件2002和其他组件之间的交互。例如,处理组件2002可以包括多媒体模块,以方便多媒体组件2008和处理组件2002之间的交互。
存储器2004被配置为存储各种类型的数据以支持在装置2000的操作。这些数据的示例包括用于在装置2000上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器2004可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件2006为装置2000的各种组件提供电力。电源组件2006可以包括电源管理系统,一个或多个电源,及其他与为装置2000生成、管理和分配电力相关联的组件。
多媒体组件2008包括在所述装置2000和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件2008包括一个前置摄像头和/或后置摄像头。当装置2000处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件2010被配置为输出和/或输入音频信号。例如,音频组件2010包括一个麦克风(MIC),当装置2000处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器2004或经由通信组件2016发送。在一些实施例中,音频组件2010还包括一个扬声器,用于输出音频信号。
I/O接口2012为处理组件2002和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件2014包括一个或多个传感器,用于为装置2000提供各个方面的状态评估。例如,传感器组件2014可以检测到装置2000的打开/关闭状态,组件的相对定位,例如所述组件为装置2000的显示器和小键盘,传感器组件2014还可以检测装置2000或装置2000一个组件的位置改变,用户与装置2000接触的存在或不存在,装置2000方位或加速/减速和装置2000的温度变化。传感器组件2014可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件2014还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件2014还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器,微波传感器或温度传感器。
通信组件2016被配置为便于装置2000和其他设备之间有线或无线方式的通信。装置2000可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件2016经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件2016还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置2000可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器2004,上述指令可由装置2000的处理器2020执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (23)
1.一种文件数据管理方法,其特征在于,用于对闪存中的文件系统进行管理,所述闪存中包括多个擦写单元,所述方法包括:
当要写入目标文件的目标数据块时,根据已建立的擦写单元链表获取目标擦写单元;
将所述目标数据块写入所述目标擦写单元;
根据写入结果保存所述目标数据块的元信息,并更新所述目标文件的数据结构和所述目标擦写单元的数据结构;
当所述文件系统上电时,根据所述多个擦写单元中的数据块的元信息建立每个文件的数据结构、每个擦写单元的数据结构、以及擦写单元链表;
所述数据块的元信息包括:数据块的头信息,数据块的长度,数据块所属文件的文件名,数据块的有效性信息,数据块在所属文件中的序号;
所述建立每个文件的数据结构包括:
根据每个文件的文件名遍历所述多个擦写单元,获得与所述每个文件的文件名具有相同文件名的数据块;
计算所述具有相同文件名的数据块的长度和,将所述长度和作为所述文件的文件长度;
按照所述具有相同文件名的数据块在所述文件中的序号,获得所述文件的第一个数据块的地址信息和最后一个数据块的地址信息;
生成所述文件的数据结构,所述文件的数据结构中包括所述文件的文件名,所述文件长度,所述第一个数据块的地址信息和最后一个数据块的地址信息。
2.根据权利要求1所述的方法,其特征在于,建立每个擦写单元的数据结构包括:
按照预设的写入单元的写入长度遍历每个擦写单元,获取每个擦写单元中未写入数据的剩余写入单元的剩余数量,以及已写入数据的有效写入单元的有效数量;
生成所述擦写单元的数据结构,所述擦写单元的数据结构中包括所述剩余数量和所述有效数量,其中,所述擦写单元中除所述剩余写入单元和所述有效写入单元外的写入单元为无效写入单元。
3.根据权利要求2所述的方法,其特征在于,建立擦写单元链表包括:
遍历每个擦写单元的数据写入情况;
根据未写入数据的擦写单元建立空闲擦写单元队列,所述空闲擦写单元队列对为先进先出队列,以及,根据已写入数据的擦写单元建立已使用擦写单元链表,所述已使用擦写单元链表中的擦写单元中包含剩余写入单元。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
判断所述空闲擦写单元队列中的擦写单元的数量是否小于第一预设数量;
当小于所述第一预设数量时,从所述已使用擦写单元链表中获取不少于第二预设数量的擦写单元,所述不少于第二预设数量的擦写单元中的每个擦写单元的剩余数量和有效数量之和小于预设写入单元数量;
从所述空闲擦写单元队列的队尾获取至少一个擦写单元;
将所述不少于第二预设数量的擦写单元中有效性信息为有效的数据块写入所述至少一个擦写单元;
对所述不少于第二预设数量的擦写单元执行擦除操作后,将所述不少于第二预设数量的擦写单元添加到所述空闲擦写单元队列的头部。
5.根据权利要求3所述的方法,其特征在于,所述根据已建立的擦写单元链表获取目标擦写单元,包括:
从所述已使用擦写单元链表中获取第一目标擦写单元;
当所述目标数据块的长度大于所述第一目标擦写单元中剩余写入单元的长度时,从所述空闲擦写单元队列的队尾获取第二目标擦写单元。
6.根据权利要求3所述的方法,其特征在于,所述根据写入结果保存所述目标数据块的元信息,包括:
将所述目标文件的最后一个数据块在所述目标文件中的序号加一作为所述目标数据块在所述目标文件中的序号;
根据所述目标文件的最后一个数据块的地址信息获得所述目标数据块的头信息;
将所述目标数据块的元信息作为所述目标数据块的头部信息保存到所述目标擦写单元,其中,所述目标数据块的元信息包括所述目标数据块的头信息,目标数据块的长度,目标文件的文件名,目标数据块为有效的有效性信息,以及目标数据块在所述目标文件中的序号。
7.根据权利要求6所述的方法,其特征在于,所述更新所述目标文件的数据结构和所述目标擦写单元的数据结构,包括:
根据所述目标数据块的长度,将所述目标文件的数据结构中的最后一个数据块的地址信息加一;以及,将所述目标文件的数据结构中的文件长度加上所述目标数据块的长度作为更新后的文件长度;
根据所述目标数据块占用的写入单元的占用数量,将所述目标擦写单元的剩余数量减去所述占用数量作为更新后的剩余数量,以及将所述目标擦写单元的有效数量加上所述占用数量作为更新后的有效数量。
8.根据权利要求3至7任一所述的方法,其特征在于,所述方法还包括:
根据所述擦写单元中的数据块的元信息读取所述目标文件;或者,
根据所述擦写单元中的数据块的元信息删除所述目标文件。
9.根据权利要求8所述的方法,其特征在于,所述根据所述擦写单元中的数据块的元信息读取所述目标文件,包括:
当要读取所述目标文件时,查找所述擦写单元中的数据块的元信息;
当查找到文件名与所述目标文件的文件名相同的数据块时,根据查找到的数据块的长度获取相应的数据块;
根据获取的数据块在所述目标文件中的序号对数据块进行组合得到所述目标文件。
10.根据权利要求8所述的方法,其特征在于,所述根据所述擦写单元中的数据块的元信息删除所述目标文件,包括:
当要删除所述目标文件时,查找所述擦写单元中的数据块的元信息;
当查找到文件名与所述目标文件的文件名相同的数据块时,根据查找到的数据块的元信息更新所述目标文件的数据结构;以及,
将查找到的数据块的有效性信息修改为无效;
更新所述查找到的数据块所在的擦写单元的数据结构。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
判断更新后的擦写单元的剩余数量和有效数量的和是否小于第三预设数量;
当小于所述第三预设数量,从所述已使用擦写单元链表中获取至少一个擦写单元;
将所述更新后的擦写单元中有效性信息为有效的数据块写入所述至少一个擦写单元;
对所述更新后的擦写单元进行擦除操作后获得空闲擦写单元;
将所述空闲擦写单元添加到所述空闲擦写单元队列的头部。
12.一种文件数据管理装置,其特征在于,用于对闪存中的文件系统进行管理,所述闪存中包括多个擦写单元,所述装置包括:
获取单元,用于当要写入目标文件的目标数据块时,根据已建立的擦写单元链表获取目标擦写单元;
写入单元,用于将所述目标数据块写入所述目标擦写单元;
保存单元,用于根据写入结果保存所述目标数据块的元信息;
更新单元,用于更新所述目标文件的数据结构和所述目标擦写单元的数据结构;
建立单元,用于当所述文件系统上电时,根据所述多个擦写单元中的数据块的元信息建立每个文件的数据结构、每个擦写单元的数据结构、以及擦写单元链表;
所述数据块的元信息包括:数据块的头信息,数据块的长度,数据块所属文件的文件名,数据块的有效性信息,数据块在所属文件中的序号;
所述建立单元包括:
数据块获取子单元,用于根据每个文件的文件名遍历所述多个擦写单元,获得与所述每个文件的文件名具有相同文件名的数据块;
文件长度计算子单元,用于计算所述具有相同文件名的数据块的长度和,将所述长度和作为所述文件的文件长度;
地址信息获取子单元,用于按照所述具有相同文件名的数据块在所述文件中的序号,获得所述文件的第一个数据块的地址信息和最后一个数据块的地址信息;
文件结构生成子单元,用于生成所述文件的数据结构,所述文件的数据结构中包括所述文件的文件名,所述文件长度,所述第一个数据块的地址信息和最后一个数据块的地址信息。
13.根据权利要求12所述的装置,其特征在于,所述建立单元包括:
写入单元数量获取子单元,用于按照预设的写入单元的写入长度遍历每个擦写单元,获取每个擦写单元中未写入数据的剩余写入单元的剩余数量,以及已写入数据的有效写入单元的有效数量;
擦写单元结构生成子单元,用于生成所述擦写单元的数据结构,所述擦写单元的数据结构中包括所述剩余数量和所述有效数量,其中,所述擦写单元中除所述剩余写入单元和所述有效写入单元外的写入单元为无效写入单元。
14.根据权利要求13所述的装置,其特征在于,所述建立单元包括:
擦写单元遍历子单元,用于遍历每个擦写单元的数据写入情况;
空闲擦写单元队列建立子单元,用于根据未写入数据的擦写单元建立空闲擦写单元队列,所述空闲擦写单元队列对为先进先出队列;
已使用擦写单元链表建立子单元,用于根据已写入数据的擦写单元建立已使用擦写单元链表,所述已使用擦写单元链表中的擦写单元中包含剩余写入单元。
15.根据权利要求14所述的装置,其特征在于,所述装置还包括:
第一判断单元,用于判断所述空闲擦写单元队列中的擦写单元的数量是否小于第一预设数量;
所述获取单元,还用于当小于所述第一预设数量时,从所述已使用擦写单元链表中获取不少于第二预设数量的擦写单元,所述不少于第二预设数量的擦写单元中的每个擦写单元的剩余数量和有效数量之和小于预设写入单元数量,并从所述空闲擦写单元队列的队尾获取至少一个擦写单元;
所述写入单元,还用于将所述不少于第二预设数量的擦写单元中有效性信息为有效的数据块写入所述至少一个擦写单元;
第一添加单元,用于对所述不少于第二预设数量的擦写单元执行擦除操作后,将所述第二预设数量的擦写单元添加到所述空闲擦写单元队列的头部。
16.根据权利要求15所述的装置,其特征在于,所述获取单元包括:
第一获取子单元,用于从所述已使用擦写单元链表中获取第一目标擦写单元;
第二获取子单元,用于当所述目标数据块的长度大于所述第一目标擦写单元中剩余写入单元的长度时,从所述空闲擦写单元队列的队尾获取第二目标擦写单元。
17.根据权利要求14所述的装置,其特征在于,所述保存单元包括:
序号获取子单元,用于将所述目标文件的最后一个数据块在所述目标文件中的序号加一作为所述目标数据块在所述目标文件中的序号;
头信息获取子单元,用于根据所述目标文件的最后一个数据块的地址信息获得所述目标数据块的头信息;
元信息保存子单元,用于将所述目标数据块的元信息作为所述目标数据块的头部信息保存到所述目标擦写单元,其中,所述目标数据块的元信息包括所述目标数据块的头信息,目标数据块的长度,目标文件的文件名,目标数据块为有效的有效性信息,以及目标数据块在所述目标文件中的序号。
18.根据权利要求17所述的装置,其特征在于,所述更新单元包括:
文件结构更新子单元,用于根据所述目标数据块的长度,将所述目标文件的数据结构中的最后一个数据块的地址信息加一;以及,将所述目标文件的数据结构中的文件长度加上所述目标数据块的长度作为更新后的文件长度;
擦写单元结构更新子单元,用于根据所述目标数据块占用的写入单元的占用数量,将所述目标擦写单元的剩余数量减去所述占用数量作为更新后的剩余数量,以及将所述目标擦写单元的有效数量加上所述占用数量作为更新后的有效数量。
19.根据权利要求14至18任一所述的装置,其特征在于,所述装置还包括至少一个下述单元:
读取单元,用于根据所述擦写单元中的数据块的元信息读取所述目标文件;
删除单元,用于根据所述擦写单元中的数据块的元信息删除所述目标文件。
20.根据权利要求19所述的装置,其特征在于,所述读取单元包括:
第一元信息查找子单元,用于当要读取所述目标文件时,查找所述擦写单元中的数据块的元信息;
数据块查找子单元,用于当查找到文件名与所述目标文件的文件名相同的数据块时,根据查找到的数据块的长度获取相应的数据块;
目标文件获取子单元,用于根据获取的数据块在所述目标文件中的序号对数据块进行组合得到所述目标文件。
21.根据权利要求19所述的装置,其特征在于,所述删除单元包括:
第二元信息查找子单元,用于当要删除所述目标文件时,查找所述擦写单元中的数据块的元信息;
文件数据结构更新子单元,用于当查找到文件名与所述目标文件的文件名相同的数据块时,根据查找到的数据块的元信息更新所述目标文件的数据结构;
有效性信息修改子单元,用于将查找到的数据块的有效性信息修改为无效;
擦写单元结构更新子单元,用于更新所述查找到的数据块所在的擦写单元的数据结构。
22.根据权利要求21所述的装置,其特征在于,所述装置还包括:
第二判断单元,用于判断更新后的擦写单元的剩余数量和有效数量的和是否小于第三预设数量;
所述获取单元,还用于当小于所述第三预设数量,从所述已使用擦写单元链表中获取至少一个擦写单元;
所述写入单元,还用于将所述更新后的擦写单元中有效性信息为有效的数据块写入所述至少一个擦写单元;
擦除单元,用于对所述更新后的擦写单元进行擦除操作后获得空闲擦写单元;
第二添加单元,用于将所述空闲擦写单元添加到所述空闲擦写单元队列的头部。
23.一种文件数据管理装置,其特征在于,用于对闪存中的文件系统进行管理,所述闪存中包括多个擦写单元,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:
当要写入目标文件的目标数据块时,根据已建立的擦写单元链表获取目标擦写单元;
将所述目标数据块写入所述目标擦写单元;
根据写入结果保存所述目标数据块的元信息,并更新所述目标文件的数据结构和所述目标擦写单元的数据结构;
当所述文件系统上电时,根据所述多个擦写单元中的数据块的元信息建立每个文件的数据结构、每个擦写单元的数据结构、以及擦写单元链表;
所述数据块的元信息包括:数据块的头信息,数据块的长度,数据块所属文件的文件名,数据块的有效性信息,数据块在所属文件中的序号;
所述建立每个文件的数据结构包括:
根据每个文件的文件名遍历所述多个擦写单元,获得与所述每个文件的文件名具有相同文件名的数据块;
计算所述具有相同文件名的数据块的长度和,将所述长度和作为所述文件的文件长度;
按照所述具有相同文件名的数据块在所述文件中的序号,获得所述文件的第一个数据块的地址信息和最后一个数据块的地址信息;
生成所述文件的数据结构,所述文件的数据结构中包括所述文件的文件名,所述文件长度,所述第一个数据块的地址信息和最后一个数据块的地址信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510080418.2A CN104615546B (zh) | 2015-02-13 | 2015-02-13 | 文件数据管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510080418.2A CN104615546B (zh) | 2015-02-13 | 2015-02-13 | 文件数据管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104615546A CN104615546A (zh) | 2015-05-13 |
CN104615546B true CN104615546B (zh) | 2018-04-27 |
Family
ID=53150002
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510080418.2A Active CN104615546B (zh) | 2015-02-13 | 2015-02-13 | 文件数据管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104615546B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106873906A (zh) * | 2017-01-04 | 2017-06-20 | 北京百度网讯科技有限公司 | 用于管理元信息的方法和装置 |
CN107688542B (zh) * | 2017-08-17 | 2020-10-09 | 歌尔股份有限公司 | 存储数据处理方法和装置 |
CN110174998A (zh) * | 2019-05-05 | 2019-08-27 | 上海威固信息技术股份有限公司 | 一种提高高速信号采集系统实时性的方法 |
CN112035060B (zh) * | 2020-08-17 | 2024-04-26 | 合肥康芯威存储技术有限公司 | 一种存储介质的错误检测方法、系统及存储系统 |
CN112162933B (zh) * | 2020-09-08 | 2023-07-21 | 杭州涂鸦信息技术有限公司 | 一种闪存的数据结构、存储方法、读取方法及转移方法 |
CN114115754B (zh) * | 2022-01-28 | 2022-04-05 | 北京紫光青藤微系统有限公司 | 用于数据更新的方法及装置、电子设备、存储介质 |
CN115016728A (zh) * | 2022-05-05 | 2022-09-06 | 阿里巴巴(中国)有限公司 | 数据处理方法以及装置 |
CN115495024B (zh) * | 2022-11-16 | 2023-03-10 | 石家庄科林电气股份有限公司 | 基于NandFlash的录波文件存储方法、装置、终端及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6662264B2 (en) * | 1993-03-11 | 2003-12-09 | Hitachi, Ltd. | File memory device and information processing apparatus using the same |
CN101014929A (zh) * | 2004-07-30 | 2007-08-08 | 美国联合包裹服务公司 | 使用nvram进行存储器管理的系统、方法、计算机可读介质和设备 |
CN101529395A (zh) * | 2006-08-31 | 2009-09-09 | 夏普株式会社 | 文件系统 |
CN103268201A (zh) * | 2013-04-19 | 2013-08-28 | 北京经纬恒润科技有限公司 | 一种数据存储方法、存储装置及读取方法 |
-
2015
- 2015-02-13 CN CN201510080418.2A patent/CN104615546B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6662264B2 (en) * | 1993-03-11 | 2003-12-09 | Hitachi, Ltd. | File memory device and information processing apparatus using the same |
CN101014929A (zh) * | 2004-07-30 | 2007-08-08 | 美国联合包裹服务公司 | 使用nvram进行存储器管理的系统、方法、计算机可读介质和设备 |
CN101529395A (zh) * | 2006-08-31 | 2009-09-09 | 夏普株式会社 | 文件系统 |
CN103268201A (zh) * | 2013-04-19 | 2013-08-28 | 北京经纬恒润科技有限公司 | 一种数据存储方法、存储装置及读取方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104615546A (zh) | 2015-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104615546B (zh) | 文件数据管理方法及装置 | |
WO2019120068A1 (zh) | 缩略图显示控制方法及移动终端 | |
US20200210048A1 (en) | Multimedia resource management method and apparatus, and storage medium | |
CN104536935B (zh) | 计算显示方法、计算编辑方法及装置 | |
WO2022083241A1 (zh) | 信息引导方法及装置 | |
CN104679599A (zh) | 在应用程序间进行复制的方法和装置 | |
WO2017177596A1 (zh) | 应用的状态信息显示方法及装置 | |
CN103631580B (zh) | 一种生成主题图标的方法和装置 | |
CN106066770A (zh) | 存储空间管理方法及装置 | |
CN106161931A (zh) | 图像预览的方法及装置 | |
US11290591B2 (en) | Dialing method and mobile terminal | |
CN106681667A (zh) | 一种图片展示方法、装置及移动终端 | |
CN111258952B (zh) | 一种数据存储控制方法、装置及存储介质 | |
CN113238752A (zh) | 代码生成方法、装置、电子设备及存储介质 | |
CN107580112A (zh) | 一种显示用户资料的方法、终端及存储介质 | |
CN107231283A (zh) | 消息管理方法及装置、消息预读方法及装置 | |
CN107423059A (zh) | 页面的显示方法、装置及终端 | |
CN107402756A (zh) | 用于绘制页面的方法、装置及终端 | |
CN114691276B (zh) | 应用程序处理方法、智能终端及存储介质 | |
CN107239236A (zh) | 数据写入方法及装置 | |
CN104156344A (zh) | 文本编辑方法和装置 | |
CN107123078A (zh) | 显示图像的方法及装置 | |
CN105630548A (zh) | 系统更新方法及装置 | |
CN104866350B (zh) | 终端分区空间的优化方法、装置及终端 | |
CN108153846A (zh) | 电话号码标记方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |