CN102375760B - 嵌入式系统及其中的文件系统的倒换方法 - Google Patents
嵌入式系统及其中的文件系统的倒换方法 Download PDFInfo
- Publication number
- CN102375760B CN102375760B CN201010262748.0A CN201010262748A CN102375760B CN 102375760 B CN102375760 B CN 102375760B CN 201010262748 A CN201010262748 A CN 201010262748A CN 102375760 B CN102375760 B CN 102375760B
- Authority
- CN
- China
- Prior art keywords
- file
- file system
- packaging
- internal memory
- module
- 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
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种嵌入式系统及其中的文件系统的倒换方法,其中,倒换方法包括:嵌入式系统将第一文件系统中的文件打包至内存;打包成功后,嵌入式系统将第一文件系统格式化为第二文件系统;格式化成功后,嵌入式系统将内存中的打包文件解包至第二文件系统。本发明在文件系统的倒换过程中,确保了文件及其目录结构的完整性,并实现了由嵌入式系统自己来完成整个文件系统的倒换过程,从而实现了倒换的自动化,因此系统运行效率更高,并且节省了人力。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种嵌入式系统及其中的文件系统的倒换方法。
背景技术
嵌入式系统通常由以下几个部分组成:嵌入式系统硬件、嵌入式操作系统、以及基于该操作系统的应用软件。其中嵌入式操作系统是一个非常重要的部分,其直接决定了嵌入式系统所使用的应用软件以及文件系统的类型。目前,已经有多种不同类型的操作系统为这种需求提供了支持,比如:VxWorks、各种版本的嵌入式Linux、WindowsCE、PalmOS、Symbian等。
在实际应用中,嵌入式系统经常需要在多种操作系统之间进行切换。比如从VxWorks切换到嵌入式Linux,或者从嵌入式Linux切换到VxWorks,通常将前者称为操作系统升级(简称“升级”),将后者称为操作系统回滚(简称“回滚”)。
通常情况下,应用系统除了操作系统以外,还有许多系统配置文件、应用程序存储在磁盘或者闪存中(以下简称“存储设备”),该存储设备通常被格式化为某种文件系统,用于组织和存储嵌入式系统所需要的诸多文件。因此,在操作系统升级和回滚的过程中,如何实现文件系统的稳定倒换,是系统升级需要考虑的重要因素。一般有以下几个方面的重要因素需要考虑:
(1)升级和回滚时,不同的操作系统所支持的文件系统各不相同。比如,VxWorks支持的文件系统为TFFS文件系统,而嵌入式Linux支持的文件系统为JFFS2。因此,升级和回滚时需要保证所存储的文件的完整性和兼容性,使文件不因操作系统的改变而发生改变,避免出现文件内容被修改甚至文件不可见的情况;
(2)升级失败时,需要进行系统回滚。回滚之后,需要保证升级之前所存储的文件的完整性,即实现系统升级的可靠性,使系统不因升级失败而丢失或者损伤文件;
(3)回滚失败时,需要回退到升级后的状态。同样需要保证返回到升级后的状态之后的文件的完整性,实现可靠回退。
综上,文件系统的倒换应该使以上因素得以充分考虑。目前,经常被使用的文件系统倒换方法是以人工的方式进行倒换,具体为:首先,将所需要的文件通过FTP或者TFTP下载到本地,然后,切换系统,在对存储设备格式化后,再将之前下载到本地的文件上传至存储设备,之后启动系统,完成文件系统的倒换。
可以看出,上述方法由于以人工的方式进行倒换,因此比较浪费人力,无法实现文件系统倒换的自动化。尤其在文件系统目录结构复杂的情况下,使用这种方法进行倒换,不但极大地增加了用户的工作量,并且难以保证倒换后文件目录结构的完整性。
发明内容
本发明的主要目的在于提供一种嵌入式系统及其中的文件系统的倒换方法,以至少解决上述的比较浪费人力,无法实现文件系统倒换的自动化的问题。
根据本发明的一个方面,提供了一种嵌入式系统中的文件系统的倒换方法,包括:嵌入式系统将第一文件系统中的文件打包至内存;打包成功后,嵌入式系统将第一文件系统格式化为第二文件系统;格式化成功后,嵌入式系统将内存中的打包文件解包至第二文件系统。
进一步地,第一文件系统为非并发文件系统;将第一文件系统中的文件打包至内存包括:在内存中创建打包文件;采用串行化的操作方式依次读取第一文件系统的文件中的数据并将读取的数据写入打包文件,直至第一文件系统中的所有文件中的数据均已写入到打包文件中。
进一步地,将内存中的打包文件解包至第二文件系统包括:采用串行的操作方式依次读取打包文件中的数据并将读取的数据写入第二文件系统的对应文件中,直至打包文件中的所有数据均已解包至第二文件系统中。
进一步地,在上述的方法中,还包括:若打包失败,则嵌入式系统判断打包失败的次数是否超过打包失败次数阈值;若未超过,则嵌入式系统继续执行将第一文件系统中的文件打包至内存的步骤,否则,结束流程。
进一步地,在上述的方法中,还包括:若格式化失败,则嵌入式系统将文件系统重新格式化为第一文件系统;嵌入式系统将内存中的打包文件解包至第一文件系统。
进一步地,在嵌入式系统将内存中的打包文件解包至第二文件系统之后,还包括:若解包失败,则嵌入式系统判断解包失败的次数是否超过解包失败次数阈值;若未超过,则嵌入式系统继续执行将内存中的打包文件解包至第二文件系统的步骤;若超过,则嵌入式系统将文件系统重新格式化为第一文件系统,并将内存中的打包文件解包至第一文件系统。
根据本发明的另一方面,提供了一种嵌入式系统,包括:打包模块,用于将第一文件系统中的文件打包至内存;格式化模块,用于在打包成功后,将第一文件系统格式化为第二文件系统;解包模块,用于在格式化成功后,将内存中的打包文件解包至第二文件系统。
进一步地,还包括:接口模块,用于为第一文件系统、第二文件系统与打包模块、解包模块之间的通信提供接口,其中,上述接口包括:创建接口、打开接口、关闭接口、读取接口、和写入接口。
进一步地,打包模块将第一文件系统中的文件打包至内存的方式包括:调用上述创建接口在内存中创建打包文件;采用串行化的操作方式依次调用上述读取接口读取第一文件系统的文件中的数据并调用上述写入接口将读取的数据写入打包文件,直至第一文件系统中的所有文件中的数据均已写入到打包文件中;其中,每次调用上述读取接口读取第一文件系统的文件中的数据之前先调用上述打开接口打开该文件并在读取之后调用上述关闭接口关闭该文件,每次调用上述写入接口将读取的数据写入该打包文件之前先调用上述打开接口打开该打包文件并在写入之后调用上述关闭接口关闭该打包文件。
进一步地,解包模块将内存中的打包文件解包至第二文件系统的方式包括:采用串行的操作方式依次调用上述读取接口读取打包文件中的数据并调用上述写入接口将读取的数据写入第二文件系统的对应文件中,直至打包文件中的所有数据均已解包至第二文件系统中;其中,每次调用上述读取接口读取打包文件中的数据之前先调用上述打开接口打开该打包文件并在读取之后调用上述关闭接口关闭该打包文件,每次调用上述写入接口将读取的数据写入第二文件系统的对应文件中之前先调用上述打开接口打开该对应文件并在写入之后调用上述关闭接口关闭该对应文件。
进一步地,还包括:控制模块,用于在格式化模块将第一文件系统格式化为第二文件系统失败的情况下,将文件系统重新格式化为第一文件系统,并控制解包模块将打包文件解包至第一文件系统。
进一步地,控制模块还用于在解包模块将打包文件解包至第二文件系统失败的情况下,判断解包失败的次数是否超过解包失败次数阈值;在未超过时,控制解包模块继续执行将内存中的打包文件解包至第二文件系统的步骤;在超过时,控制格式化模块将文件系统重新格式化为第一文件系统以及将打包文件解包至第一文件系统。
通过本发明,嵌入式系统通过在文件系统的倒换过程中,先将倒换前的文件系统(即第一文件系统)中的文件打包至不会受到影响的内存中,并在格式化为倒换后的文件系统(即第二文件系统)后再将内存中的打包文件解包至倒换后的文件系统中,从而在文件系统的倒换过程中,确保了文件及其目录结构的完整性,并实现了由嵌入式系统自己来完成整个文件系统的倒换过程,从而实现了倒换的自动化,因此系统运行效率更高,并且节省了人力。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的嵌入式系统中的文件系统的倒换方法;
图2是根据本发明第一优选实施例的升级和回滚过程中的文件系统倒换过程的流程图;
图3是根据本发明优选实施例的打包的流程图;
图4是根据本发明优选实施例的解包的流程图;
图5是根据本发明第二优选实施例的文件系统的倒换过程的具体流程图;
图6是根据本发明实施例的嵌入式系统的示意图;
图7是根据本发明优选实施例的嵌入式系统的结构示意图;
图8是根据本发明优选实施例的引导装置的结构示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
图1是根据本发明实施例的嵌入式系统中的文件系统的倒换方法,包括以下步骤:
步骤S102,嵌入式系统将第一文件系统中的文件打包至内存;
例如,上述文件可以包括用户的各种配置文件、以及其他的文件或程序、目录、以及目录下的各种文件与程序等。第一文件系统中的文件打包至内存中后,即以打包文件的形式保存。
步骤S104,打包成功后,嵌入式系统将第一文件系统格式化为第二文件系统;
在实际实施时,可以在执行格式化之前,先卸载第一文件系统。格式化之后,嵌入式系统中的磁盘或闪存等存储设备即被格式化为第二文件系统。
步骤S106,格式化成功后,嵌入式系统将内存中的打包文件解包至第二文件系统。
相关技术中由于采用以人工的方式进行倒换,需要文件系统使用者去记忆与存储相关的文件、目录以及目录结构,因此比较浪费人力,无法实现文件系统倒换的自动化。本实施例中,嵌入式系统通过在文件系统的倒换过程中,先将倒换前的文件系统(即第一文件系统)中的文件打包至不会受到影响的内存中,并在格式化为倒换后的文件系统(即第二文件系统)后再将内存中的打包文件解包至倒换后的文件系统中,从而在文件系统的倒换过程中,确保了文件及其目录结构的完整性,并实现了由嵌入式系统自己来完成整个文件系统的倒换过程,从而实现了倒换的自动化,因此系统运行效率更高,并且节省了人力。
此外,使用打包的方法作为中间过程,实现了系统配置文件和程序的平滑迁移,使相关文件既能够在原操作系统中可用,也能够被升级后的操作系统所用。
如图2所示,在实际应用中,上述实施例的文件系统的倒换方法既可以应用在嵌入式系统的操作系统的升级过程中,也可以应用于操作系统的回滚过程中,设升级前的文件系统为文件系统1,升级后的文件系统为文件系统2,其文件系统的倒换过程示意如图2所示。
在操作系统的升级过程中,文件系统的倒换包括以下步骤:步骤S202,嵌入式系统将文件系统1中的文件打包进内存中;该步骤对应于图1中的步骤S102;步骤S204,卸载文件系统1,并将文件系统格式化为文件系统2,该步骤对应于图1中的步骤S104;步骤S206,将内存中的打包文件解包,解包完成后,将在文件系统2中还原文件系统1中的文件,该步骤对应于图1中的步骤S106。解包完成后,文件系统的倒换即完成。
在操作系统的回滚过程中,文件系统的倒换流程与升级过程中的流程相反,这里不再赘述。
由于在嵌入式系统中,文件系统有可能不支持并发操作(即为非并发文件系统),因此,在打包和解包时可以采用串行化的操作方式,一次仅打开一个文件,当需要打开第二个文件时,需要先将已经打开的文件关闭。因此,当第一文件系统为非并发文件系统时,可以采用串行化的操作方式将第一文件系统中的文件打包至内存,即,具体地上述步骤S102包括:在内存中创建打包文件;采用串行化的操作方式依次读取第一文件系统的文件中的数据并将读取的数据写入打包文件,直至第一文件系统中的所有文件中的数据均已写入到打包文件中。这样,可以有效地规避文件系统的不支持并发操作的局限性。
在实际应用中,采用串行化的操作方式的打包流程如图3所示,以文件系统中一个文件的打包流程为例,包括以下步骤:
步骤S302,嵌入式系统创建打包后需要生成的文件(即上述的打包文件),创建成功后关闭打包文件;
步骤S304,创建头信息,打开已经创建的打包文件,将头信息写入,写入成功后关闭打包文件;
步骤S306,打开需要打包的文件(可以为上述的第一文件系统中的文件),读取一定长度的数据,关闭文件;
步骤S308,打开打包文件,将读取的数据写入,写入后关闭文件;
步骤S310,判断文件中的数据是否已经全部读取,如果尚未读完,则继续返回执行步骤S306,直至文件中的数据全部读取后,一个文件的打包流程结束。
步骤S312,使用上述步骤S306至步骤S310继续打包其他的文件。
以上为将文件打包至文件系统中,将文件打包至内存中的流程与图3类似,这里不再赘述。
同样的,也可以采用串行化的操作方式将打包文件解包至第二文件系统中,即,具体地上述步骤S106可以包括:采用串行的操作方式依次读取打包文件中的数据并将读取的数据写入第二文件系统的对应文件中,直至打包文件中的所有数据均已写入到对应的文件中。
在实际应用中,与打包流程同样的原因,采用串行化的操作方式的解包流程如图4所示,以文件系统中单个文件的解包为例,包括以下步骤:
步骤S402,嵌入式系统打开打包文件,读取头信息后,关闭打包文件;
步骤S404,对读取到的头信息进行判断,如果头信息所描述的数据是文件则继续文件解包流程;
步骤S406,打开打包文件,读取对应数据块的一定长度的数据,读取完成后,关闭打包文件;
步骤S408,判断解包后的文件是否存在,如果不存在,则转入步骤S412,若已存在,则转入步骤S410;
步骤S410,打开文件;
步骤S412,创建文件;
步骤S414,将读取到的数据写入文件中,写入成功后关闭文件;
步骤S416,判断对应文件数据是否已经全部解包,如果尚未全部解包,则返回步骤S406,直至解包结束;
步骤S418,使用上述步骤继续解其他的文件。
以上为将文件系统中的打包文件解包至文件系统中,将内存中的打包文件解包至文件系统中的流程与上述步骤相同,这里不再赘述。
需要注意的是:如果将文件打包至文件系统中,倒换前需要首先将打包文件读取至内存中;格式化存储设备为第二文件系统后,再将内存中的打包文件写入第二文件系统,之后再将打包文件解包至第二文件系统。
实际应用时,在文件系统的倒换过程中,偶尔会发生倒换异常的情况,因此,需要对文件系统的倒换过程进行相应的保护流程,以在流程上尽可能地保护文件系统的数据、文件不发生丢失,以进一步确保文件的完整性和可靠性,尽可能地确保文件系统的倒换的安全性。保护流程主要包括以下几个方面:
(1)为打包文件分配内存中的存储空间时,如果内存的剩余存储不足,直接返回失败,倒换结束;
(2)如果打包过程中失败,则将已经为打包文件分配的内存清零,再次打包。连续打包10次均失败,则返回失败,倒换结束;
(3)如果格式化失败,则反向格式化,并将内存中的打包文件解包,复原文件;
(4)如果解包失败,则重新解包,解包过程中覆盖之前已经解包的文件。如果解包失败次数超过10次,则进行反向格式化,并将内存中的打包文件解包,复原文件。
如图5所示,增加了保护流程的文件系统的倒换流程,具体包括以下步骤:
步骤S502,嵌入式系统为打包文件分配需要的内存空间;
步骤S504,判断内存是否足够,若是,则进入步骤S506,若否,则返回失败,倒换流程结束;
步骤S506,将第一文件系统中的文件打包至内存中;
步骤S508,判断打包是否成功,若成功,则转入步骤S510,若失败,则如果打包失败,则连续尝试10次,如果都未成功,返回失败,倒换结束。
步骤S510,判断失败次数是否超过10次(即打包失败次数阈值),若超过,则返回失败,倒换流程结束,若未超过,则返回步骤S506;
步骤S512,将第一文件系统格式化为第二文件系统;
步骤S514,判断格式化是否成功,如果格式化失败,则进入步骤S516,若成功,则进入步骤S518;
步骤S516,反向格式化(即重新格式化为第一文件系统),再将内存中的打包文件解包,恢复之前文件系统的状态(即将打包文件解包至第一文件系统),倒换结束;
步骤S518,将内存中的打包文件解包至第二文件系统;
步骤S520,判断解包是否成功,若成功,则结束倒换流程,若失败,则进入步骤S522;
步骤S522,判断失败次数是否超过10次(即解包失败次数阈值),若未超过,则返回步骤S518,继续解包;如果超过10次,则反向格式化,并将文件写入,完成解包,恢复之前的流程,倒换结束;
本发明上述实施例的目的是提供一种易于实现的嵌入式系统的文件系统的倒换方法,上述实施例的方法通过使用打包的方法作为中间过程,实现文件系统的倒换;同时,可以实现自动化的倒换,从而提高了系统的运行效率。
为了使得嵌入式系统能够利用上述的方法实现文件系统的自动倒换,本发明以下实施例还提供了一种嵌入式系统,通过在该嵌入式系统中设置一引导装置,由该引导装置来执行上述实施例的方法。
图6是根据本发明实施例的嵌入式系统的示意图,包括:打包模块10,用于将第一文件系统中的文件打包至内存;格式化模块20,用于在打包成功后,将第一文件系统格式化为第二文件系统;解包模块30,用于在格式化成功后,将内存中的打包文件解包至第二文件系统。
该实施例中的嵌入式系统,通过设置在其中的打包模块、格式化模块、和解包模块来在文件系统的倒换过程中,先将倒换前的文件系统(即第一文件系统)中的文件打包至不会受到影响的内存中,并在格式化为倒换后的文件系统(即第二文件系统)后再将内存中的打包文件解包至倒换后的文件系统中,从而在文件系统的倒换过程中,确保了文件的完整性,并实现了由嵌入式系统自己来完成整个文件系统的倒换过程,从而实现了倒换的自动化,因此提高了系统运行的效率和文件系统倒换的效率,并且节省了人力。
如图7所示,上述的嵌入式系统还可以包括:接口模块40,用于为第一文件系统、第二文件系统与打包模块10、解包模块20之间的通信提供接口,其中,上述接口可以包括:创建(如vcreat:创建新的文件、vmkdir:创建目录)、打开(包括vopen:打开文件、vopendir:打开目录)、关闭(如包括vclose:关闭打开的文件、vclosedir:关闭目录)、读取(如vread:读取文件中的数据、vreaddir:读取目录)、和写入(如vwrite:将数据写入文件)。显然,还可以包括vlseek:设置文件偏移、vstat:获取文件属性、以及vchdir:改变目录等接口。通过接口模块提供的这些接口,可以为各个不同的文件系统提供统一的接口,从而为打包模块和解包模块读写各个不同的文件系统中的文件中的数据提供了方便。
例如,在打包模块10将第一文件系统中的文件打包至内存过程中,打包模块10首先调用创建接口在内存中创建打包文件;然后,采用串行化的操作方式依次调用读取接口读取第一文件系统的文件中的数据并调用写入接口将读取的数据写入打包文件,直至第一文件系统中的所有文件中的数据均已写入到打包文件中;其中,每次调用读取接口读取第一文件系统的某一文件中的数据之前先调用打开接口打开该文件并在读取之后调用关闭接口关闭该文件,每次调用写入接口将读取的数据写入该打包文件之前先调用打开接口打开该打包文件并在写入之后调用关闭接口关闭该打包文件。
在解包模块30将内存中的打包文件解包至第二文件系统的过程中,解包模块30采用串行的操作方式依次调用读取接口读取打包文件中的数据并调用写入接口将读取的数据写入第二文件系统的对应文件中,直至打包文件中的所有数据均已解包至第二文件系统中;其中,每次调用读取接口读取打包文件中的数据之前先调用打开接口打开该打包文件并在读取之后调用关闭接口关闭该打包文件,每次调用写入接口将读取的数据写入第二文件系统的对应文件中之前先调用打开接口打开该对应文件并在写入之后调用关闭接口关闭该对应文件。
如图7所示,上述嵌入式系统中还可以包括:控制模块50,用于在格式化模块20将第一文件系统格式化为第二文件系统失败的情况下,将文件系统重新格式化为第一文件系统,并控制解包模块30将打包文件解包至第一文件系统。此外,控制模块50还可以用于在解包模块将打包文件解包至第二文件系统失败的情况下,判断解包失败的次数是否超过解包失败次数阈值;在未超过时,控制解包模块继续执行将内存中的打包文件解包至第二文件系统的步骤;在超过时,控制格式化模块将文件系统重新格式化为第一文件系统以及将打包文件解包至第一文件系统。从而,控制模块除了用于控制打包模块、格式化模块、和解包模块执行各自的操作之外,还为整个的倒换流程提供了保护。
如图8所示,在实际实施时,可以将上述的第一文件系统、第二文件系统、打包模块、格式化模块、解包模块、接口模块、和控制模块统一地由一个引导装置来实现,该引导装置同时兼容升级前、后系统使用的文件系统。为了实现方便、更加符合实际应用需要,该引导装置在实际实施时可以主要由多文件系统支持模块(即第一文件系统、第二文件系统、接口模块、和格式化模块的组合)、打包解包模块(即打包模块和解包模块的组合)、以及控制模块。
如图8所示,多文件系统支持模块支持多种文件系统,并能够根据需要进行扩充,扩充时需要移植相关文件系统对应的接口,并添加文件系统识别程序。多文件系统支持模块对外提供的统一接口(即上述接口模块40中包括的接口)包括:创建、打开、关闭、读取、写入文件、打开目录、读取目录、关闭目录等。通过提供统一的接口实现了接口的透明化。打包解包模块能够通过调用统一的接口来对相应的文件系统进行各种操作。
此外,由于多文件系统支持模块对外保持接口透明,在模块内部需要对不同文件系统进行区分,因此,通过一个全局的文件系统标识符:FS来区分当前使用的文件系统,区分每个不同的文件系统的私有接口,以及辨识文件系统的倒换进行的方向。当该FS=1时,表示当前使用第一文件系统,则从外部(此处主要指打包解包模块)传进来的调用指令,会调用第一文件系统的接口;当FS=2时,表示当前使用第二文件系统,则从外部传进来的调用指令,会调用第二文件系统对应的接口。
例如:当FS指示为文件系统1时,多文件系统支持模块使用文件系统1提供的接口,格式化程序使用文件系统2提供的接口;当FS指示为文件系统2时,多文件系统支持模块使用文件系统2提供的接口,格式化程序使用文件系统1提供的接口。
其中,在引导装置启动时,需要设置FS指示当前系统的文件系统。
打包解包模块主要实现目录和文件的打包与解包,用于将用户的多个配置文件打包为一个文件,使开发者免于记忆数据目录结构与数据内容,尤其在目录结构复杂的情况下,能够有效保证用户配置文件的目录结构与配置数据的完整性。打包装置主要实现以下功能:1、支持目录与文件的打包、解包;2、同时支持文件系统与内存中打包、解包;3、支持非并发文件系统。
其中,为了支持内存中打包,设计了结构体tarBuff:
typedefstruct{
char*buffer;
intwrite_num;
intread_num;
}tarBuff;
其中,buffer成员用于存储打包好的数据;
write_num用于记录打包时已经写入内存的数据。由于打包程序以10240个字节的数据为单位,每次从需要打包的文件中读取10240个字节,之后将这些数据追加在已经写入的数据尾部,等所有的数据都写入后,就构成一个完整的打包数据。根据write_num的记录,就可以找到内存中已经打包的数据的结尾;
read_num与此类似,主要应用于解包流程,记录已经从内存中读取的数据数量,下次读取时,根据这个记录,能够找到已经读取过的数据的尾部。
除了内存中打包、解包,打包解包模块还支持文件系统中的打包、解包配置,能够将打包文件打包入内存或者打包入文件系统中,为用户提供了多种打包选择。
此外,为了支持非并发文件系统,打包解包模块还采用了串行化的操作流程,有效地解决了非并发文件系统打包和解包的问题。串行化的操作方式的主要思想是:每次调用vopen之前,必须保证对上一次调用vopen打开的文件使用了vclose。打包解包模块采用串行化的操作方式进行打包和解包时的操作流程分别如图3、图4所示。
控制模块用于在流程上尽可能地为文件系统倒换的安全性提供尽可能的保护,以在流程上尽可能地保护文件系统中的文件不被损坏。
结合图8所示的引导装置,以第一文件系统为TFFS文件系统、第二文件系统为JFFS2文件系统为例,详细说明由嵌入式系统中的该引导装置实现上述实施例的文件系统的倒换方法,包括以下步骤:
步骤1:同时兼容2种文件系统的引导装置启动,该引导装置为文件系统倒换的基础平台,其结构图如图8所示,包括以下几部分:文件系统1-TFFS文件系统;文件系统2-JFFS2文件系统;打包解包模块;和控制模块。
步骤2:打包解包模块将TFFS文件系统中所有的文件打包到内存中。打包解包模块将需要迁移的目录与文件打包到内存中。打包时,所使用的文件系统接口正是多文件系统支持模块提供的统一接口。
步骤3:将TFFS文件系统卸载,格式化文件系统为JFFS2。
步骤4:打包解包模块将内存中的打包文件进行解包,解包后,所有的目录以及文件会写入到JFFS2文件系统中。
该优选实施例在系统启动初期,通过使用同时兼容多种文件系统的引导装置,使用打包的方法作为中间过程,实现了文件系统的倒换。
从以上的描述中,可以看出,本发明实现了如下技术效果:
(1)实现了文件系统的倒换自动化,从而提高了系统的运行效率,并且节省了人力;
(2)为系统升级和回滚提供了较可靠的安全保证。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种嵌入式系统中的文件系统的倒换方法,其特征在于,包括:
所述嵌入式系统将第一文件系统中的文件打包至内存;
所述打包成功后,所述嵌入式系统将所述第一文件系统格式化为第二文件系统;
所述格式化成功后,所述嵌入式系统将所述内存中的打包文件解包至所述第二文件系统;
其中,所述第一文件系统为非并发文件系统;将第一文件系统中的文件打包至内存包括:在所述内存中创建所述打包文件;采用串行化的操作方式依次读取所述第一文件系统的文件中的数据并将读取的数据写入所述打包文件,直至所述第一文件系统中的所有文件中的数据均已写入到所述打包文件中。
2.根据权利要求1所述的方法,其特征在于,将所述内存中的打包文件解包至所述第二文件系统包括:
采用所述串行的操作方式依次读取所述打包文件中的数据并将读取的数据写入所述第二文件系统的对应文件中,直至所述打包文件中的所有数据均已解包至所述第二文件系统中。
3.根据权利要求1所述的方法,其特征在于,还包括:
若所述打包失败,则所述嵌入式系统判断打包失败的次数是否超过打包失败次数阈值;
若未超过,则所述嵌入式系统继续执行所述将第一文件系统中的文件打包至内存的步骤,否则,结束流程。
4.根据权利要求1所述的方法,其特征在于,还包括:
若所述格式化失败,则所述嵌入式系统将文件系统重新格式化为所述第一文件系统;
所述嵌入式系统将所述内存中的打包文件解包至所述第一文件系统。
5.根据权利要求1所述的方法,其特征在于,在所述嵌入式系统将所述内存中的打包文件解包至所述第二文件系统之后,还包括:
若所述解包失败,则所述嵌入式系统判断解包失败的次数是否超过解包失败次数阈值;
若未超过,则所述嵌入式系统继续执行所述将所述内存中的打包文件解包至所述第二文件系统的步骤;
若超过,则所述嵌入式系统将文件系统重新格式化为所述第一文件系统,并将所述内存中的打包文件解包至所述第一文件系统。
6.一种嵌入式系统,其特征在于,包括:
打包模块,用于将第一文件系统中的文件打包至内存;
格式化模块,用于在所述打包成功后,将所述第一文件系统格式化为第二文件系统;
解包模块,用于在所述格式化成功后,将所述内存中的打包文件解包至所述第二文件系统;
其中,所述第一文件系统为非并发文件系统;将第一文件系统中的文件打包至内存包括:在所述内存中创建所述打包文件;采用串行化的操作方式依次读取所述第一文件系统的文件中的数据并将读取的数据写入所述打包文件,直至所述第一文件系统中的所有文件中的数据均已写入到所述打包文件中。
7.根据权利要求6所述的嵌入式系统,其特征在于,还包括:
接口模块,用于为所述第一文件系统、所述第二文件系统与所述打包模块、所述解包模块之间的通信提供接口。
8.根据权利要求6所述的嵌入式系统,其特征在于,还包括:
控制模块,用于在所述格式化模块将所述第一文件系统格式化为所述第二文件系统失败的情况下,将文件系统重新格式化为所述第一文件系统,并控制所述解包模块将所述打包文件解包至所述第一文件系统。
9.根据权利要求8所述的嵌入式系统,其特征在于,所述控制模块还用于在所述解包模块将所述打包文件解包至所述第二文件系统失败的情况下,判断解包失败的次数是否超过解包失败次数阈值;在未超过时,控制所述解包模块继续执行所述将所述内存中的打包文件解包至所述第二文件系统的步骤;在超过时,控制所述格式化模块将文件系统重新格式化为所述第一文件系统以及将所述打包文件解包至所述第一文件系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010262748.0A CN102375760B (zh) | 2010-08-24 | 2010-08-24 | 嵌入式系统及其中的文件系统的倒换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010262748.0A CN102375760B (zh) | 2010-08-24 | 2010-08-24 | 嵌入式系统及其中的文件系统的倒换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102375760A CN102375760A (zh) | 2012-03-14 |
CN102375760B true CN102375760B (zh) | 2016-01-20 |
Family
ID=45794401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010262748.0A Active CN102375760B (zh) | 2010-08-24 | 2010-08-24 | 嵌入式系统及其中的文件系统的倒换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102375760B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104049985A (zh) * | 2013-03-12 | 2014-09-17 | 中兴通讯股份有限公司 | 一种跨文件系统的版本在线升级方法和装置 |
CN104881604B (zh) * | 2014-02-27 | 2019-07-16 | 中兴通讯股份有限公司 | 版本文件的运行方法及装置 |
CN104615385B (zh) * | 2015-02-13 | 2017-12-19 | 福州瑞芯微电子股份有限公司 | 一种数据交互方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1405684A (zh) * | 2001-08-22 | 2003-03-26 | 华神技术公司 | 一种x86系列兼容机及其操作系统的生成方法 |
CN1556472A (zh) * | 2003-12-31 | 2004-12-22 | 中兴通讯股份有限公司 | 一种嵌入式系统中可执行文件的压缩及其加载方法 |
CN101710373A (zh) * | 2009-12-04 | 2010-05-19 | 深圳创维数字技术股份有限公司 | 嵌入式系统的文件操作方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100504770C (zh) * | 2006-09-08 | 2009-06-24 | 华为技术有限公司 | 数据打包及其解包的方法 |
CN101639782A (zh) * | 2009-07-14 | 2010-02-03 | 上海市共进通信技术有限公司 | 基于嵌入式操作系统的系统引导载入方法 |
-
2010
- 2010-08-24 CN CN201010262748.0A patent/CN102375760B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1405684A (zh) * | 2001-08-22 | 2003-03-26 | 华神技术公司 | 一种x86系列兼容机及其操作系统的生成方法 |
CN1556472A (zh) * | 2003-12-31 | 2004-12-22 | 中兴通讯股份有限公司 | 一种嵌入式系统中可执行文件的压缩及其加载方法 |
CN101710373A (zh) * | 2009-12-04 | 2010-05-19 | 深圳创维数字技术股份有限公司 | 嵌入式系统的文件操作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102375760A (zh) | 2012-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103473067B (zh) | 嵌入式Linux分区与数据还原方法、系统及系统开发方法 | |
US20110004871A1 (en) | Embedded electronic device and firmware updating method thereof | |
US8977802B2 (en) | Access device, information recording device, controller, real time information recording system, access method, and program | |
CN103106091A (zh) | 一种基于可移动存储介质的操作系统的启动系统和方法 | |
US20060064576A1 (en) | Boot systems and methods | |
CN103455354A (zh) | 一种防止固件升级失败的方法和设备 | |
US8176009B2 (en) | Performing a pre-update on a non volatile memory | |
CN102141923B (zh) | 内存文件系统加载方法及装置 | |
CN105260215A (zh) | 一种u盘升级车载行车记录仪终端的方法 | |
EP2329368B1 (en) | Updating content without using a mini operating system | |
CN115658160B (zh) | 基于多核异构soc的多操作系统升级方法、装置及系统 | |
US7620994B2 (en) | Data recording system and data access method | |
CN109086078A (zh) | 安卓系统升级方法、装置、服务器及移动终端 | |
CN101872306B (zh) | 一种实现软件更新和软件备份的嵌入式系统及其实现方法 | |
CN102375760B (zh) | 嵌入式系统及其中的文件系统的倒换方法 | |
CN106201640A (zh) | 一种升级BootLoader程序的方法及装置 | |
EP2329367B1 (en) | Performing an in-place update of an operating storage device | |
KR100637787B1 (ko) | 파일 정보의 기록 처리 방법 및 프로그램 | |
US7257030B2 (en) | Operating a storage component | |
CN104331311A (zh) | 一种升级包生成方法和装置 | |
CN116594555A (zh) | 一种航空数据读写中间件系统 | |
CN103019773A (zh) | 系统升级掉电保护方法、系统及移动终端 | |
CN103136234A (zh) | 处理数据的方法和装置 | |
CN115718612A (zh) | 一种cf卡操作系统的更新方法 | |
CN102147712A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |