CN109960472A - 基于Flash的嵌入式文件系统及文件系统操作方法 - Google Patents

基于Flash的嵌入式文件系统及文件系统操作方法 Download PDF

Info

Publication number
CN109960472A
CN109960472A CN201910257261.4A CN201910257261A CN109960472A CN 109960472 A CN109960472 A CN 109960472A CN 201910257261 A CN201910257261 A CN 201910257261A CN 109960472 A CN109960472 A CN 109960472A
Authority
CN
China
Prior art keywords
control information
file
file system
operational zone
operational
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.)
Granted
Application number
CN201910257261.4A
Other languages
English (en)
Other versions
CN109960472B (zh
Inventor
林样
石莹
董丹娜
陈文祥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Supcon Technology Co Ltd
Original Assignee
Zhejiang Supcon Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Supcon Technology Co Ltd filed Critical Zhejiang Supcon Technology Co Ltd
Priority to CN201910257261.4A priority Critical patent/CN109960472B/zh
Publication of CN109960472A publication Critical patent/CN109960472A/zh
Application granted granted Critical
Publication of CN109960472B publication Critical patent/CN109960472B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0736Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种基于Flash的嵌入式文件系统及文件系统操作方法,在接收到操作指令后,依据其指示的操作模式向运行区写入对应的控制信息,根据对文件系统操作,更新运行区中的控制信息,在操作完成后,使用运行区中更新后的控制信息替换目标控制信息,在替换成功后,需要将替换后的控制信息置为有效后,控制信息存储区的有效控制信息发生变化,才能说明文件操作完成,本申请发生异常关闭或掉电的情况,不管是在文件系统的操作过程中,还是在操作完成后,若未将替换后的控制信息置为有效,则控制信息存储区的有效控制信息未发生变化,文件系统保持原文件系统,从而提高了文件系统访问过程中的抗异常和抗掉电能力,确保文件系统的有效性。

Description

基于Flash的嵌入式文件系统及文件系统操作方法
技术领域
本申请涉及文件系统控制技术领域,尤其涉及一种基于Flash的嵌入式文件系统及文件系统操作方法。
背景技术
随着电子产品的日益复杂,嵌入式应用领域越来越需要控制系统的辅助。而文件系统,是控制系统的重要组成部分,对整个控制系统的性能起着重要作用,文件系统的抗异常和抗掉电能力将直接决定控制系统能否正常工作。抗异常和抗掉电能力是指在有些应用场合,文件操作过程中,突然中止更新的情况下要求原有文件不被破坏,例如,更新中突然断电或用户中止写入或通讯断线等原因。另外,在很多场合只是修改原有文件系统中的文件,如删除文件、修改文件、增加文件等操作,而不是重建文件系统,因此,双备份文件系统还需要在文件系统更新后,即,文件系统遭破坏后也要进行恢复,将文件拷贝到另一个文件系统中进行备份,以保证更新过程中断电、断网等情况时,文件能在另一个文件系统中找到,且在备份过程中,不能操作文件系统。
在控制系统中,需要对文件系统进行操作,例如:在文件系统修改过程中,在部分文件修改成功后,若文件系统发生异常或掉电导致文件系统未完整写入,则整个文件系统无法保持原有文件系统,因此,为了确保文件系统的有效性,需要提高文件系统的抗异常和抗掉电能力。
发明内容
本申请提供了一种基于Flash的嵌入式文件系统及文件系统操作方法,目的在于如何解决现有技术中对文件系统进行操作时,无法确保文件系统的有效性的问题。
为了实现上述目的,本申请提供了以下技术方案:
一种基于Flash的嵌入式文件系统,包括:
控制信息存储区和数据存储区,其中,控制信息存储区中存储至少两个控制信息组,任意一个控制信息组中至少包括两类控制信息,任意一个控制信息组对应一个文件系统;
任意一个控制信息组中,至少一类控制信息的标识为无效。
进一步的,所述数据存储区包括:
小文件数据区和大文件数据区;
所述小文件数据区用于存储小于或等于所述Flash的一个存储块容量的文件;
所述大文件数据区用于存储大于所述Flash的一个存储块容量的文件;
任意一个小文件数据区唯一对应一类控制信息。
一种文件系统操作方法,用于上述所述的基于Flash的嵌入式文件系统,该方法包括:
在接收到操作指令后,依据所述操作指令中指示的操作模式,向运行区写入与所述操作模式对应的控制信息;
依据对所述文件系统的操作,更新所述运行区中的控制信息,得到更新后的控制信息,所述操作依据所述操作指令执行;
在操作完成后,使用所述运行区中的所述更新后的控制信息替换目标控制信息,得到替换后的控制信息,所述目标控制信息为所述控制信息存储区中与所述操作模式对应的且无效的控制信息;
在替换成功后,将所述替换后的控制信息置为有效,并将其它控制信息置为无效。
进一步的,在所述依据对所述文件系统的操作,更新所述运行区中的控制信息,得到更新后的控制信息之前,还包括:
对所述文件系统中的文件进行操作。
进一步的,所述操作指令中指示的操作模式为重建模式,所述向运行区写入与所述操作模式对应的控制信息,具体为:
向所述运行区写入预设的默认控制信息。
进一步的,所述依据对所述文件系统的操作,更新所述运行区中的控制信息,得到更新后的控制信息,具体为:
依据对所述文件系统中文件的操作,更新所述运行区中所述预设的默认控制信息中的文件系统特征字和文件系统更新时间,得到所述更新后的控制信息。
进一步的,所述目标控制信息为所述控制信息存储区中与所述重建模式对应的且无效的控制信息。
进一步的,所述操作指令中指示的操作模式为更新模式或只读模式,所述向运行区写入与所述操作模式对应的控制信息,具体为:
向所述运行区写入与所述操作指令指示的文件系统的有效控制信息。
进一步的,所述依据对所述文件系统的操作,更新所述运行区中的控制信息,得到更新后的控制信息,具体为:
依据对所述文件系统中文件的操作,更新所述运行区中的有效控制信息中的文件系统特征字和文件系统更新时间,得到所述更新后的控制信息。
进一步的,所述目标控制信息为所述控制信息存储区中与所述更新模式或所述只读模式对应的且无效的控制信息。
进一步的,所述操作指令中指示的操作模式为重建模式或更新模式,则所述对所述文件系统进行操作,具体为:
根据所述运行区的控制信息判断待删除文件系统是否为有效文件系统;
若待删除文件系统为有效文件系统,则将所述待删除文件系统所对应的各个控制信息均置为无效,并返回。
进一步的,所述操作指令中指示的操作为文件创建操作,所述对所述文件系统中的文件进行操作,具体为:
根据所述运行区的控制信息检查所述文件系统是否已打开,且判断所述操作指令中指示的操作模式为非只读模式;
若是,则将所述运行区中的控制信息置为无效;
根据所述运行区的控制信息判断待创建文件是否为小文件;
在所述待创建文件为小文件的情况下,则根据所述运行区的控制信息判断当前小文件数据区的剩余扇区是否足够,所述小文件数据区设置于所述数据存储区,用于存储小于或等于所述Flash的一个存储块容量的文件;
若所述当前小文件数据区的剩余扇区足够,则为所述待创建文件在所述当前小文件数据区申请空间;
若所述当前小文件数据区的剩余扇区不足够,则判断所述操作指令中指示的操作模式是否为更新模式;
若所述文件系统的操作模式为更新模式,则为所述待创建文件从另一小文件数据区申请空间,设置需碎片整理标志,否则,返回错误信息;
在所述待创建文件为大文件的情况下,则根据所述运行区的控制信息判断剩余扇区是否足够;
若所述剩余扇区足够,则为所述待创建文件从所述大文件数据区申请空间;否则,返回错误信息。
进一步的,所述操作指令中指示的操作为文件写操作,所述对所述文件系统中的文件进行操作,具体为:
根据所述运行区的控制信息检查所述文件系统是否已打开,且判断所述操作指令中指示的操作模式是否为非只读模式;
若是,则根据所述运行区的控制信息判断待写文件是否已创建且已打开;
若是,则根据所述待写文件的文件偏移及文件扇区表将所述待写文件写入数据存储区。
进一步的,所述操作指令中指示的操作为文件读操作,所述对所述文件系统中的文件进行操作,具体为:
根据所述运行区的控制信息检查所述文件系统是否为有效文件系统且已打开;
若是,根据所述运行区的控制信息判断待读文件是否为有效文件;
在所述待读文件为有效文件的情况下,根据所述待读文件的文件偏移以及文件扇区表从所述数据存储区读取相应的数据。
进一步的,所述操作指令中指示的操作为文件关闭操作,所述对所述文件系统中的文件进行操作,具体为:
根据所述运行区的控制信息检查所述文件系统是否为有效文件系统且已打开;
若是,根据所述运行区的控制信息判断待关闭文件是否为有效文件;
在所述待关闭文件为有效文件的情况下,根据所述运行区的控制信息判断待关闭文件是否为小文件;
在所述待关闭文件为小文件的情况下,将所述运行区和所述数据存储区中的文件扇区表中所有扇区使用标志置为有效;
在所述待关闭文件为大文件的情况下,将所述运行区和所述数据存储区中的文件扇区表中所有块使用标志置为有效。
进一步的,所述操作指令中指示的操作为文件删除操作,所述对所述文件系统中的文件进行操作,具体为:
根据所述运行区的控制信息检查所述文件系统是否为有效文件系统且已打开;
若是,判断所述操作指令中指示的操作模式是否为非只读模式;
在所述文件系统为非只读模式的情况下,则根据所述运行区的控制信息判断待删除文件是否为有效文件;
若是,则将所述运行区中的控制信息置为无效。
进一步的,在接收到操作指令后,当所述操作指令中指示的操作模式为更新模式或只读模式时,若有效控制信息包括多个的情况下,将更新时间最晚的有效控制信息写入至所述运行区。
进一步的,对所述文件系统进行操作还包括:
轮询所述文件系统中的文件,根据所述运行区的控制信息检查所述文件是否为小文件;
在所述文件为小文件的情况下,根据所述运行区的控制信息检查当前小文件数据区是否需要进行碎片整理;
若是,则在另一小文件数据区申请空间,建立文件扇区表,并将所述当前小文件数据区中的数据写入到所述另一小文件数据区。
本申请所述的基于Flash的嵌入式文件系统及文件系统操作方法,在接收到操作指令后,依据该操作指令中指示的操作模式向运行区写入与操作模式对应的控制信息,根据对文件系统进行操作,对运行区中的控制信息进行更新,在对文件系统的操作完成后,使用运行区中更新后的控制信息替换目标控制信息,在替换成功后,需要将替换后的控制信息置为有效后,控制信息存储区的有效控制信息发生变化,才能说明文件操作完成,本申请发生异常关闭或掉电的情况,不管是在文件系统的操作过程中,还是在操作完成后,若未将替换后的控制信息置为有效,则控制信息存储区的有效控制信息未发生变化,文件系统保持原文件系统,且在下一次打开文件系统时所有扇区可以继续使用,从而提高了文件系统访问过程中的抗异常和抗掉电能力,确保文件系统的有效性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例公开的基于Flash的嵌入式文件系统结构示意图;
图2为本申请实施例公开的一种文件系统操作方法的流程图;
图3为本申请实施例公开的一种文件系统中文件操作方法的流程图;
图4为本申请实施例公开的另一种文件系统中文件操作方法的流程图;
图5为本申请实施例公开的另一种文件系统中文件操作方法的流程图;
图6为本申请实施例公开的另一种文件系统中文件操作方法的流程图;
图7为本申请实施例公开的另一种文件系统中文件操作方法的流程图。
具体实施方式
本申请所述的基于Flash的嵌入式文件系统及文件系统操作方法,可以应用于WebField GCS-G5控制系统和WebField GCS-G3控制系统。
本申请的目的在于:如何解决在对嵌入式文件系统进行随机操作时,提高文件系统的抗异常和掉电能力,确保文件系统的整体有效性。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供的基于Flash的嵌入式文件系统包括:控制信息存储区和数据存储区,其中,控制信息存储区中存储至少两个控制信息组,任意一个控制信息组对应一个文件系统。任意一个控制信息组中,至少一类控制信息的标识为无效。
上述数据存储区包括:小文件数据区和大文件数据区,其中:上述小文件数据区用于存储小于或等于Flash的一个存储块容量的文件,上述大文件数据区用于存储大于Flash的一个存储块容量的文件,任意一个小文件数据区唯一对应一类控制信息。
图1为本申请实施例提供的一种基于Flash的嵌入式文件系统结构示意图。如图1所示,该嵌入式文件系统位于Flash存储区,包括:控制信息存储区100和数据存储区200,其中:
上述控制信息存储区100包括4个文件系统控制信息,如图1,0#文件系统A控制信息、0#文件系统B控制信息、1#文件系统A控制信息和1#文件系统B控制信息。每2个文件系统控制信息管理一个文件系统,即0#文件系统A控制信息和0#文件系统B控制信息用于管理0#文件系统,1#文件系统A控制信息和1#文件系统B控制信息用于管理1#文件系统,其中,一个用于存储有效文件系统信息,一个用于更新模式时的临时文件系统信息。
需要说明的是,上述文件系统控制信息包括:文件系统信息、文件信息以及存储区的存储使用状态,其中,文件系统信息包括:文件系统控制信息状态、文件数量以及文件系统操作状态;文件信息包括:文件长度、文件状态、文件存储状态以及文件操作状态。
上述数据存储区200包括:2个小文件数据区和1个大文件数据区,如图1所示,0#小文件数据区和1#小文件数据区,其中:上述小文件数据区用于存储小于或等于Flash的一个存储块容量的文件,上述大文件数据区用于存储大于Flash的一个存储块容量的文件,任意一个小文件数据区唯一对应一类控制信息。
本申请实施例通过2个小文件数据区及其扇区标志管理小文件,充分利用闪存的块性能,提高读写性能;通过大文件数据及其扇区标志管理大文件,充分利用闪存的块性能,提高读写性能。
如图1所示,在RAM中设置一个运行区300,用于存储文件系统进行操作时的临时文件系统控制信息。在打开文件系统时根据操作模式选择相应控制信息存储区文件系统控制信息,并拷贝至该运行区300。
本申请实施例提供的基于Flash的嵌入式文件系统中在有效文件系统控制信息中存储文件信息,通过运行区管理文件系统控制信息、有效文件信息和扇区表,在操作文件系统中文件时,通过更新运行区中的文件信息,从空闲扇区表中申请空间。
本申请实施例在上述公开的基于Flash的嵌入式文件系统的基础上,还公开了一种文件系统操作方法,用于上述的基于Flash的嵌入式文件系统,在对嵌入式文件系统进行随机操作时,提高文件系统的抗异常和掉电能力,确保文件系统的整体有效性。
如图2所示,本申请实施例提供一种文件系统操作方法,具体包括如下步骤:
S201:在接收到操作指令后,依据该操作指令中指示的操作模式,向运行区写入与操作模式对应的控制信息。
本申请实施例中,操作指令用于指示对文件系统的操作模式,其中,操作模式包括重建模式、更新模式和只读模式,例如:操作指令为对0#文件系统进行重建操作,则该操作指令中指示的操作模式为重建模式。在接收到操作指令后,确定与重建模式对应的控制信息为0#文件系统A控制信息,则将0#文件系统A控制信息写入到运行区。
需要说明的是,在操作指令中指示的操作模式为重建模式时,向运行区写入与操作模式对应的控制信息,具体为:向运行区写入预设的默认控制信息。该预设的默认控制信息可以是任意一个文件系统控制信息,也可以是对文件系统控制信息进行初始化后的控制信息。初始化控制信息包括:初始化文件信息和初始化扇区信息,其中,初始化文件信息包括:初始化所有文件状态为无效状态、初始化文件长度为0、初始化起始扇区号为0和初始化文件扇区数量为0;初始化扇区信息包括:扇区状态初始化为未擦除;下一个扇区指向NULL;文件最大扇区序号数初始化成0;文件系统状态初始化成正常;当前文件系统有效文件个数初始化成0;文件系统序号初始化;Flash块空闲初始化成0,表示可整块擦除。
需要说明的是,在操作指令中指示的操作模式为更新模式或只读模式时,向运行区写入与操作模式对应的控制信息,具体为:向运行区写入与该操作指令指示的文件系统的有效控制信息,即,将与该操作指令指示的文件系统的有效控制信息写入到运行区。例如:0#文件系统A控制信息为有效控制信息,则0#文件系统A控制信息为无效,则将0#文件系统A控制信息写入运行区。
进一步,需要说明的是,在接收到操作指令后,当操作指令中指示的操作模式为更新模式或只读模式时,若有效控制信息包括多个的情况下,将更新时间最晚的有效控制信息写入至运行区。
S202:依据对文件系统的操作,更新运行区中的控制信息,得到更新后的控制信息,操作依据操作指令执行。
本申请实施例中,若操作指令中指示的操作模式为重建模式,则依据对文件系统的操作,更新运行区中的控制信息,得到更新后的控制信息,具体包括如下步骤:
依据对文件系统中文件的操作,更新运行区中预设的默认控制信息中的文件系统特征字和文件系统更新时间,得到更新后的控制信息。
需要说明的是,若操作指令中指示的操作模式为重建模式,则需要对文件系统进行重建操作,根据对文件系统的操作,更新运行区中预设的默认控制信息中的文件系统特征字和文件系统更新时间,将运行区中预设的默认控制信息中的文件系统特征字和文件系统更新时间得到的文件系统控制信息作为更新后的控制信息。
在本申请实施例中,在对文件系统的重建模式下,对文件系统中文件进行操作包括:文件创建操作、文件写操作、文件读操作、文件关闭操作和文件删除操作等。
本申请实施例中,操作指令中指示的操作模式为更新模式或只读模式,则依据对文件系统的操作,更新运行区中的控制信息,得到更新后的控制信息,具体包括如下步骤:
依据对文件系统中文件的操作,更新运行区中的有效控制信息中的文件系统特征字和文件系统更新时间,得到更新后的控制信息。
需要说明的是,若操作指令中指示的操作模式为更新模式,则需要对文件系统进行更新操作,根据对文件系统的操作,更新运行区中的有效控制信息中的文件系统特征字和文件系统更新时间,将运行区中的有效控制信息中的文件系统特征字和文件系统更新时间得到的文件系统控制信息作为更新后的控制信息。
在本申请实施例中,在对文件系统的更新模式下,对文件系统中文件进行操作包括:文件创建操作、文件写操作、文件读操作、文件关闭操作和文件删除操作等。
需要说明的是,若操作指令中指示的操作模式为只读模式,则需要对文件系统进行只读操作,根据对文件系统的操作,更新运行区中的有效控制信息中的文件系统特征字和文件系统更新时间,将运行区中的有效控制信息中的文件系统特征字和文件系统更新时间得到的文件系统控制信息作为更新后的控制信息。
在本申请实施例中,在对文件系统的只读模式下,对文件系统中文件进行操作包括:文件读操作和文件关闭操作等。
本申请实施例中,若操作指令中指示的对文件系统的操作为删除文件系统,则对文件系统的操作,具体为:
根据运行区的控制信息判断待删除文件系统是否为有效文件系统,若该待删除文件系统为有效文件系统,则将该待删除文件系统所对应的各个控制信息均置为无效,并返回,实现文件系统的删除;若该待删除文件系统为无效文件系统,则直接返回。
需要说明的是,无论是在重建模式还是更新模式下,在依据对文件系统的操作,更新运行区中的控制信息,得到更新后的控制信息,操作依据操作指令执行之前,还包括:对文件系统中的文件进行操作,具体的,对文件系统中文件的操作包括:创建文件、写文件、读文件、关闭文件和删除文件等。下面对文件系统中文件进行操作可以具体为:
若操作指令中指示的操作为文件创建操作,如图3所示,则对文件系统中的文件进行操作,具体可以包括如下步骤:
S301:根据运行区的控制信息检查文件系统是否已打开,且判断所述操作指令中指示的操作模式为非只读模式,若是,则执行S302,若否,则返回。
S302:将运行区中的控制信息置为无效。
S303:根据运行区的控制信息判断待创建文件是否为小文件,若是,则执行S304:,若否,则执行S308。
S304:根据运行区的控制信息判断当前小文件数据区的剩余扇区是否足够,上述小文件数据区设置于数据存储区,用于存储小于或等于所述Flash的一个存储块容量的文件,若是,则执行S305,若否,则执行S306。
S305:为待创建文件在当前小文件数据区申请空间。
S306:判断操作指令中指示的操作模式是否为更新模式,若是,则执行S307,若否,则返回错误信息。
S307:为待创建文件从另一小文件数据区申请空间,设置需碎片整理标志。
S308:根据运行区的控制信息判断剩余扇区是否足够,若是,则执行S309,若否,则返回错误信息。
S309:为待创建文件从大文件数据区申请空间。
本申请实施例在创建文件时检查数据区是否超过当前数据区,若否,则从空闲扇区申请,否则置碎片整理标志,减少文件操作,实现损坏均衡。
若操作指令中指示的操作为文件写操作,如图4所示,则对文件系统中的文件进行操作,具体可以包括如下步骤:
S401:根据运行区的控制信息检查文件系统是否已打开,且判断操作指令中指示的操作模式是否为非只读模式,若是,则执行S402,若否,则返回。
S402:根据运行区的控制信息判断待写文件是否已创建且已打开,若是,则执行S403,若否,则返回。
S403:根据待写文件的文件偏移及文件扇区表将待写文件写入数据存储区。
若操作指令中指示的操作为文件读操作,如图5所示,则对文件系统中的文件进行操作,具体可以包括如下步骤:
S501:根据运行区的控制信息检查文件系统是否为有效文件系统且已打开,若是,则执行S502,若否,则返回。
S502:根据运行区的控制信息判断待读文件是否为有效文件,若是,则执行S503,若否,则返回。
S503:根据待读文件的文件偏移以及文件扇区表从数据存储区读取相应的数据。
若操作指令中指示的操作为文件关闭操作,如图6所示,则对文件系统的中文件进行操作,具体可以包括如下步骤:
S601:根据运行区的控制信息检查文件系统是否为有效文件系统且已打开,若是,则执行S602,若否,则返回。
S602:根据运行区的控制信息判断待关闭文件是否为有效文件,若是,则执行S603,若否,则返回。
S603:根据运行区的控制信息判断待关闭文件是否为小文件,若是,则执行S604,若否,则执行S605。
S604:将运行区和数据存储区中的文件扇区表中所有扇区使用标志置为有效;
S605:将运行区和数据存储区中的文件扇区表中所有块使用标志置为有效。
若操作指令中指示的操作为文件删除操作,如图7所示,则对文件系统中文件进行操作,具体可以包括如下步骤:
S701:根据运行区的控制信息检查文件系统是否为有效文件系统且已打开,若是,则执行S702,若否,则返回。
S702:判断操作指令中指示的操作模式是否为非只读模式,若是,则执行S703,若否,则返回。
S703:根据运行区的控制信息判断待删除文件是否为有效文件,若是,则执行S704,若否,则返回。
S704:将运行区中的控制信息置为无效。
本申请实施例中,通过扇区管理,在删除文件时,将扇区信息标注为未擦除,在擦除时标志为未使用;在创建文件时优先选择未使用扇区,减少相同扇区重复擦除次数,实现损耗均衡。
S203:在操作完成后,使用运行区中的更新后的控制信息替换目标控制信息,得到替换后的控制信息,目标控制信息为控制信息存储区中与操作模式对应的且无效的控制信息。
在对文件系统的操作完成后,使用运行区中更新后的控制信息替换目标控制信息,得到替换后的控制信息。
本申请实施例中,若操作指令中指示的操作模式为重建模式,则目标控制信息为控制信息存储区中与重建模式对应的且无效的控制信息。即:若需要对0#文件系统进行重建,则1#文件系统中的无效的控制信息为对应的目标控制信息。
本申请实施例中,若操作指令中指示的操作模式为更新模式或只读模式,则目标控制信息为控制信息存储区中与操作模式对应的且无效的控制信息。即:若需要对0#文件系统进行更新,其中,0#文件系统A控制信息为有效的控制信息,则0#文件系统B控制信息为无效的控制信息,即:0#文件系统B控制信息为对应的目标控制信息。
S204:在替换成功后,将所述替换后的控制信息置为有效,并将其它控制信息置为无效。
进一步地,对文件系统进行操作还包括如下步骤:
轮询文件系统中的文件,根据运行区的控制信息检查文件是否为小文件;
在文件为小文件的情况下,根据运行区的控制信息检查当前小文件数据区是否需要进行碎片整理;
若是,则在另一小文件数据区申请空间,建立文件扇区表,并将当前小文件数据区中的数据写入到另一小文件数据区。
需要说明的是,碎片整理是针对小文件进行的,对文件系统的操作过程中,若需要进行碎片整理,则说明在当前小文件数据区的文件扇区已不能满足该文件的存储,需要在另一小文件数据区申请空间,建立文件扇区表,并将当前小文件数据区中的数据写入到另一小文件数据区。
本申请实施例在碎片整理时,轮询文件所有扇区,若在当前小文件数据区,则保留扇区信息;否则从另一小文件数据区申请请空闲扇区,并更新数据和文件扇区表,达到减少碎片的目标。本申请实施例在文件系统操作完成关闭后,进行碎片整理,避免因碎片化降低文件系统性能。
有益效果:
本申请实施例提供的文件系统操作方法,通过1个运行区和4个文件系统控制信息,在操作文件系统时,根据对文件系统的操作对运行区中的文件系统控制信息进行更新、从扇区表中申请空间,在关闭文件系统时,创建、修改、删除的文件系统生效,若异常关闭或未关闭文件系统,则过程中操作的所有文件不生效,文件系统保持原文件系统,且异常关闭或未关闭文件系统,则过程中操作的所有扇区,在下一次打开文件系统后,可以继续使用,保证文件系统访问过程中的异常保护和掉电保护,确保文件系统的有效性。
本申请实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (18)

1.一种基于Flash的嵌入式文件系统,其特征在于,包括:
控制信息存储区和数据存储区,其中,控制信息存储区中存储至少两个控制信息组,任意一个控制信息组中至少包括两类控制信息,任意一个控制信息组对应一个文件系统;
任意一个控制信息组中,至少一类控制信息的标识为无效。
2.根据权利要求1所述的系统,其特征在于,所述数据存储区包括:
小文件数据区和大文件数据区;
所述小文件数据区用于存储小于或等于所述Flash的一个存储块容量的文件;
所述大文件数据区用于存储大于所述Flash的一个存储块容量的文件;
任意一个小文件数据区唯一对应一类控制信息。
3.一种文件系统操作方法,其特征在于,用于权利要求1或2所述的基于Flash的嵌入式文件系统,该方法包括:
在接收到操作指令后,依据所述操作指令中指示的操作模式,向运行区写入与所述操作模式对应的控制信息;
依据对所述文件系统的操作,更新所述运行区中的控制信息,得到更新后的控制信息,所述操作依据所述操作指令执行;
在操作完成后,使用所述运行区中的所述更新后的控制信息替换目标控制信息,得到替换后的控制信息,所述目标控制信息为所述控制信息存储区中与所述操作模式对应的且无效的控制信息;
在替换成功后,将所述替换后的控制信息置为有效,并将其它控制信息置为无效。
4.根据权利要求3所述的方法,其特征在于,在所述依据对所述文件系统的操作,更新所述运行区中的控制信息,得到更新后的控制信息之前,还包括:
对所述文件系统中的文件进行操作。
5.根据权利要求3所述的方法,其特征在于,所述操作指令中指示的操作模式为重建模式,所述向运行区写入与所述操作模式对应的控制信息,具体为:
向所述运行区写入预设的默认控制信息。
6.根据权利要求4所述的方法,其特征在于,所述依据对所述文件系统的操作,更新所述运行区中的控制信息,得到更新后的控制信息,具体为:
依据对所述文件系统中文件的操作,更新所述运行区中所述预设的默认控制信息中的文件系统特征字和文件系统更新时间,得到所述更新后的控制信息。
7.根据权利要求3所述的方法,其特征在于,所述目标控制信息为所述控制信息存储区中与所述重建模式对应的且无效的控制信息。
8.根据权利要求3所述的方法,其特征在于,所述操作指令中指示的操作模式为更新模式或只读模式,所述向运行区写入与所述操作模式对应的控制信息,具体为:
向所述运行区写入与所述操作指令指示的文件系统的有效控制信息。
9.根据权利要求8所述的方法,其特征在于,所述依据对所述文件系统的操作,更新所述运行区中的控制信息,得到更新后的控制信息,具体为:
依据对所述文件系统中文件的操作,更新所述运行区中的有效控制信息中的文件系统特征字和文件系统更新时间,得到所述更新后的控制信息。
10.根据权利要求3所述的方法,其特征在于,所述目标控制信息为所述控制信息存储区中与所述更新模式或所述只读模式对应的且无效的控制信息。
11.根据权利要求3所述的方法,其特征在于,所述操作指令中指示的操作模式为重建模式或更新模式,则所述对所述文件系统进行操作,具体为:
根据所述运行区的控制信息判断待删除文件系统是否为有效文件系统;
若待删除文件系统为有效文件系统,则将所述待删除文件系统所对应的各个控制信息均置为无效,并返回。
12.根据权利要求4-11任意一项所述的方法,其特征在于,所述操作指令中指示的操作为文件创建操作,所述对所述文件系统中的文件进行操作,具体为:
根据所述运行区的控制信息检查所述文件系统是否已打开,且判断所述操作指令中指示的操作模式为非只读模式;
若是,则将所述运行区中的控制信息置为无效;
根据所述运行区的控制信息判断待创建文件是否为小文件;
在所述待创建文件为小文件的情况下,则根据所述运行区的控制信息判断当前小文件数据区的剩余扇区是否足够,所述小文件数据区设置于所述数据存储区,用于存储小于或等于所述Flash的一个存储块容量的文件;
若所述当前小文件数据区的剩余扇区足够,则为所述待创建文件在所述当前小文件数据区申请空间;
若所述当前小文件数据区的剩余扇区不足够,则判断所述操作指令中指示的操作模式是否为更新模式;
若所述文件系统的操作模式为更新模式,则为所述待创建文件从另一小文件数据区申请空间,设置需碎片整理标志,否则,返回错误信息;
在所述待创建文件为大文件的情况下,则根据所述运行区的控制信息判断剩余扇区是否足够;
若所述剩余扇区足够,则为所述待创建文件从所述大文件数据区申请空间;否则,返回错误信息。
13.根据权利要求4-11任意一项所述的方法,其特征在于,所述操作指令中指示的操作为文件写操作,所述对所述文件系统中的文件进行操作,具体为:
根据所述运行区的控制信息检查所述文件系统是否已打开,且判断所述操作指令中指示的操作模式是否为非只读模式;
若是,则根据所述运行区的控制信息判断待写文件是否已创建且已打开;
若是,则根据所述待写文件的文件偏移及文件扇区表将所述待写文件写入数据存储区。
14.根据权利要求4-11任意一项所述的方法,其特征在于,所述操作指令中指示的操作为文件读操作,所述对所述文件系统中的文件进行操作,具体为:
根据所述运行区的控制信息检查所述文件系统是否为有效文件系统且已打开;
若是,根据所述运行区的控制信息判断待读文件是否为有效文件;
在所述待读文件为有效文件的情况下,根据所述待读文件的文件偏移以及文件扇区表从所述数据存储区读取相应的数据。
15.根据权利要求4-11任意一项所述的方法,其特征在于,所述操作指令中指示的操作为文件关闭操作,所述对所述文件系统中的文件进行操作,具体为:
根据所述运行区的控制信息检查所述文件系统是否为有效文件系统且已打开;
若是,根据所述运行区的控制信息判断待关闭文件是否为有效文件;
在所述待关闭文件为有效文件的情况下,根据所述运行区的控制信息判断待关闭文件是否为小文件;
在所述待关闭文件为小文件的情况下,将所述运行区和所述数据存储区中的文件扇区表中所有扇区使用标志置为有效;
在所述待关闭文件为大文件的情况下,将所述运行区和所述数据存储区中的文件扇区表中所有块使用标志置为有效。
16.根据权利要求4-11任意一项所述的方法,其特征在于,所述操作指令中指示的操作为文件删除操作,所述对所述文件系统中的文件进行操作,具体为:
根据所述运行区的控制信息检查所述文件系统是否为有效文件系统且已打开;
若是,判断所述操作指令中指示的操作模式是否为非只读模式;
在所述文件系统为非只读模式的情况下,则根据所述运行区的控制信息判断待删除文件是否为有效文件;
若是,则将所述运行区中的控制信息置为无效。
17.根据权利要求3所述的方法,其特征在于,在接收到操作指令后,当所述操作指令中指示的操作模式为更新模式或只读模式时,若有效控制信息包括多个的情况下,将更新时间最晚的有效控制信息写入至所述运行区。
18.根据权利要求3所述的方法,其特征在于,对所述文件系统进行操作还包括:
轮询所述文件系统中的文件,根据所述运行区的控制信息检查所述文件是否为小文件;
在所述文件为小文件的情况下,根据所述运行区的控制信息检查当前小文件数据区是否需要进行碎片整理;
若是,则在另一小文件数据区申请空间,建立文件扇区表,并将所述当前小文件数据区中的数据写入到所述另一小文件数据区。
CN201910257261.4A 2019-04-01 2019-04-01 基于Flash的嵌入式文件系统及文件系统操作方法 Active CN109960472B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910257261.4A CN109960472B (zh) 2019-04-01 2019-04-01 基于Flash的嵌入式文件系统及文件系统操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910257261.4A CN109960472B (zh) 2019-04-01 2019-04-01 基于Flash的嵌入式文件系统及文件系统操作方法

Publications (2)

Publication Number Publication Date
CN109960472A true CN109960472A (zh) 2019-07-02
CN109960472B CN109960472B (zh) 2022-04-19

Family

ID=67025434

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910257261.4A Active CN109960472B (zh) 2019-04-01 2019-04-01 基于Flash的嵌入式文件系统及文件系统操作方法

Country Status (1)

Country Link
CN (1) CN109960472B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0636983A1 (en) * 1993-07-26 1995-02-01 International Business Machines Corporation Information processing system
CN1285591A (zh) * 1999-08-18 2001-02-28 索尼公司 数据存储媒体、数据记录设备和方法、重放设备和方法
CN1325532A (zh) * 1998-09-09 2001-12-05 夏普公司 在记录媒体上记录多媒体信息文件用的多媒体信息记录装置和方法
CN1567249A (zh) * 2003-06-16 2005-01-19 华为技术有限公司 计算机系统的内存管理方法
US20080031061A1 (en) * 2006-08-03 2008-02-07 Micron Technology, Inc. System and method for initiating a bad block disable process in a non-volatile memory
CN101201771A (zh) * 2006-12-12 2008-06-18 中兴通讯股份有限公司 保证嵌入式系统中数据一致性的方法
CN101609464A (zh) * 2009-06-22 2009-12-23 浙江大学 适合嵌入式Flash文件系统的均衡擦写实现方法
CN102023876A (zh) * 2009-09-14 2011-04-20 漳州科能电器有限公司 一种可软件在线升级的嵌入式系统及在线升级方法
CN102622301A (zh) * 2011-01-28 2012-08-01 深圳兆日科技股份有限公司 一种闪存文件的读取和更新方法及系统
CN105550060A (zh) * 2014-10-31 2016-05-04 Tcl集团股份有限公司 一种增量升级的备份方法及装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0636983A1 (en) * 1993-07-26 1995-02-01 International Business Machines Corporation Information processing system
CN1325532A (zh) * 1998-09-09 2001-12-05 夏普公司 在记录媒体上记录多媒体信息文件用的多媒体信息记录装置和方法
CN1285591A (zh) * 1999-08-18 2001-02-28 索尼公司 数据存储媒体、数据记录设备和方法、重放设备和方法
CN1567249A (zh) * 2003-06-16 2005-01-19 华为技术有限公司 计算机系统的内存管理方法
US20080031061A1 (en) * 2006-08-03 2008-02-07 Micron Technology, Inc. System and method for initiating a bad block disable process in a non-volatile memory
CN101201771A (zh) * 2006-12-12 2008-06-18 中兴通讯股份有限公司 保证嵌入式系统中数据一致性的方法
CN101609464A (zh) * 2009-06-22 2009-12-23 浙江大学 适合嵌入式Flash文件系统的均衡擦写实现方法
CN102023876A (zh) * 2009-09-14 2011-04-20 漳州科能电器有限公司 一种可软件在线升级的嵌入式系统及在线升级方法
CN102622301A (zh) * 2011-01-28 2012-08-01 深圳兆日科技股份有限公司 一种闪存文件的读取和更新方法及系统
CN105550060A (zh) * 2014-10-31 2016-05-04 Tcl集团股份有限公司 一种增量升级的备份方法及装置

Also Published As

Publication number Publication date
CN109960472B (zh) 2022-04-19

Similar Documents

Publication Publication Date Title
CN105009085B (zh) 信息处理系统、控制程序以及信息处理设备
US8099569B2 (en) Storage system and data migration method
JP4809040B2 (ja) ストレージ装置及びスナップショットのリストア方法
US7861047B2 (en) Storage device and information management system
EP2135167B1 (en) Remove-on-delete technologies for solid state drive optimization
CN101840380B (zh) 保护元数据免受意外断电影响的装置和方法
US8402234B2 (en) Storage system and storage migration method
CN102667703B (zh) 用于虚拟磁带库系统中的优化回收处理的系统和方法
CN106407040A (zh) 一种远程数据复制方法及系统
US20120144110A1 (en) Methods and structure for storage migration using storage array managed server agents
US20060047926A1 (en) Managing multiple snapshot copies of data
CN103034592B (zh) 数据处理方法和装置
JP5113537B2 (ja) 計算機システム、管理計算機及びデータ管理方法
CN103098043A (zh) 随需虚拟机映像流式传输
TW200915327A (en) Method of protecting data for power failure and controller using the same
JP2008508596A (ja) Nvramを使用するメモリ管理のためのシステム、方法、コンピュータ可読媒体、および装置
CN106527992A (zh) 一种存储设备数据销毁方法及装置
US20220182445A1 (en) Method and apparatus for performing simple storage service seamless migration using index objects
EP2017749A1 (en) Methods for implementation of data formats on a removable disk drive storage system
CN105718217A (zh) 一种精简配置存储池数据一致性维护的方法及装置
JP2008225616A (ja) ストレージシステム、リモートコピーシステム、及びデータ復元方法
JP4937863B2 (ja) 計算機システム、管理計算機及びデータ管理方法
US11516287B2 (en) Method and apparatus for performing simple storage service seamless migration using index objects
CN105808449A (zh) 一种用于虚拟机的虚拟存储映像版本管理方法和系统
JP2009064160A (ja) 計算機システム、管理計算機及びデータ管理方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant