嵌入式系统及其中的文件系统的倒换方法.pdf

上传人:Y94****206 文档编号:1001570 上传时间:2018-03-24 格式:PDF 页数:18 大小:454.93KB
返回 下载 相关 举报
摘要
申请专利号:

CN201010262748.0

申请日:

2010.08.24

公开号:

CN102375760A

公开日:

2012.03.14

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/48申请日:20100824|||公开

IPC分类号:

G06F9/48

主分类号:

G06F9/48

申请人:

中兴通讯股份有限公司

发明人:

徐严涛; 崔云峰; 王亮; 薛志宏; 程圣宇

地址:

518057 广东省深圳市南山区科技南路55号

优先权:

专利代理机构:

北京康信知识产权代理有限责任公司 11240

代理人:

余刚;吴孟秋

PDF下载: PDF下载
内容摘要

本发明公开了一种嵌入式系统及其中的文件系统的倒换方法,其中,倒换方法包括:嵌入式系统将第一文件系统中的文件打包至内存;打包成功后,嵌入式系统将第一文件系统格式化为第二文件系统;格式化成功后,嵌入式系统将内存中的打包文件解包至第二文件系统。本发明在文件系统的倒换过程中,确保了文件及其目录结构的完整性,并实现了由嵌入式系统自己来完成整个文件系统的倒换过程,从而实现了倒换的自动化,因此系统运行效率更高,并且节省了人力。

权利要求书

1: 一种嵌入式系统中的文件系统的倒换方法, 其特征在于, 包括 : 所述嵌入式系统将第一文件系统中的文件打包至内存 ; 所述打包成功后, 所述嵌入式系统将所述第一文件系统格式化为第二文件系统 ; 所述格式化成功后, 所述嵌入式系统将所述内存中的打包文件解包至所述第二文件系 统。
2: 根据权利要求 1 所述的方法, 其特征在于, 所述第一文件系统为非并发文件系统 ; 将 第一文件系统中的文件打包至内存包括 : 在所述内存中创建所述打包文件 ; 采用串行化的操作方式依次读取所述第一文件系统的文件中的数据并将读取的数据 写入所述打包文件, 直至所述第一文件系统中的所有文件中的数据均已写入到所述打包文 件中。
3: 根据权利要求 2 所述的方法, 其特征在于, 将所述内存中的打包文件解包至所述第 二文件系统包括 : 采用所述串行的操作方式依次读取所述打包文件中的数据并将读取的数据写入所述 第二文件系统的对应文件中, 直至所述打包文件中的所有数据均已解包至所述第二文件系 统中。
4: 根据权利要求 1 所述的方法, 其特征在于, 还包括 : 若所述打包失败, 则所述嵌入式系统判断打包失败的次数是否超过打包失败次数阈 值; 若未超过, 则所述嵌入式系统继续执行所述将第一文件系统中的文件打包至内存的步 骤, 否则, 结束流程。
5: 根据权利要求 1 所述的方法, 其特征在于, 还包括 : 若所述格式化失败, 则所述嵌入式系统将文件系统重新格式化为所述第一文件系统 ; 所述嵌入式系统将所述内存中的打包文件解包至所述第一文件系统。
6: 根据权利要求 1 所述的方法, 其特征在于, 在所述嵌入式系统将所述内存中的打包 文件解包至所述第二文件系统之后, 还包括 : 若所述解包失败, 则所述嵌入式系统判断解包失败的次数是否超过解包失败次数阈 值; 若未超过, 则所述嵌入式系统继续执行所述将所述内存中的打包文件解包至所述第二 文件系统的步骤 ; 若超过, 则所述嵌入式系统将文件系统重新格式化为所述第一文件系统, 并将所述内 存中的打包文件解包至所述第一文件系统。
7: 一种嵌入式系统, 其特征在于, 包括 : 打包模块, 用于将第一文件系统中的文件打包至内存 ; 格式化模块, 用于在所述打包成功后, 将所述第一文件系统格式化为第二文件系统 ; 解包模块, 用于在所述格式化成功后, 将所述内存中的打包文件解包至所述第二文件 系统。
8: 根据权利要求 7 所述的嵌入式系统, 其特征在于, 还包括 : 接口模块, 用于为所述第一文件系统、 所述第二文件系统与所述打包模块、 所述解包模 2 块之间的通信提供接口。
9: 根据权利要求 7 所述的嵌入式系统, 其特征在于, 还包括 : 控制模块, 用于在所述格式化模块将所述第一文件系统格式化为所述第二文件系统失 败的情况下, 将文件系统重新格式化为所述第一文件系统, 并控制所述解包模块将所述打 包文件解包至所述第一文件系统。
10: 根据权利要求 9 所述的嵌入式系统, 其特征在于, 所述控制模块还用于在所述解包 模块将所述打包文件解包至所述第二文件系统失败的情况下, 判断解包失败的次数是否超 过解包失败次数阈值 ; 在未超过时, 控制所述解包模块继续执行所述将所述内存中的打包 文件解包至所述第二文件系统的步骤 ; 在超过时, 控制所述格式化模块将文件系统重新格 式化为所述第一文件系统以及将所述打包文件解包至所述第一文件系统。

说明书


嵌入式系统及其中的文件系统的倒换方法

    【技术领域】
     本发明涉及通信领域, 具体而言, 涉及一种嵌入式系统及其中的文件系统的倒换方法。 背景技术 嵌入式系统通常由以下几个部分组成 : 嵌入式系统硬件、 嵌入式操作系统、 以及基 于该操作系统的应用软件。其中嵌入式操作系统是一个非常重要的部分, 其直接决定了嵌 入式系统所使用的应用软件以及文件系统的类型。目前, 已经有多种不同类型的操作系统 为这种需求提供了支持, 比如 : VxWorks、 各种版本的嵌入式 Linux、 Windows CE、 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 :
     typedef struct{
     char*buffer ;
     int write_num ;
     int read_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) 为系统升级和回滚提供了较可靠的安全保证。
     显然, 本领域的技术人员应该明白, 上述的本发明的各模块或各步骤可以用通用 的计算装置来实现, 它们可以集中在单个的计算装置上, 或者分布在多个计算装置所组成 的网络上, 可选地, 它们可以用计算装置可执行的程序代码来实现, 从而, 可以将它们存储 在存储装置中由计算装置来执行, 并且在某些情况下, 可以以不同于此处的顺序执行所示 出或描述的步骤, 或者将它们分别制作成各个集成电路模块, 或者将它们中的多个模块或 步骤制作成单个集成电路模块来实现。 这样, 本发明不限制于任何特定的硬件和软件结合。
     以上所述仅为本发明的优选实施例而已, 并不用于限制本发明, 对于本领域的技 术人员来说, 本发明可以有各种更改和变化。 凡在本发明的精神和原则之内, 所作的任何修 改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。
    

嵌入式系统及其中的文件系统的倒换方法.pdf_第1页
第1页 / 共18页
嵌入式系统及其中的文件系统的倒换方法.pdf_第2页
第2页 / 共18页
嵌入式系统及其中的文件系统的倒换方法.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《嵌入式系统及其中的文件系统的倒换方法.pdf》由会员分享,可在线阅读,更多相关《嵌入式系统及其中的文件系统的倒换方法.pdf(18页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102375760A43申请公布日20120314CN102375760ACN102375760A21申请号201010262748022申请日20100824G06F9/4820060171申请人中兴通讯股份有限公司地址518057广东省深圳市南山区科技南路55号72发明人徐严涛崔云峰王亮薛志宏程圣宇74专利代理机构北京康信知识产权代理有限责任公司11240代理人余刚吴孟秋54发明名称嵌入式系统及其中的文件系统的倒换方法57摘要本发明公开了一种嵌入式系统及其中的文件系统的倒换方法,其中,倒换方法包括嵌入式系统将第一文件系统中的文件打包至内存;打包成功后,嵌入式系统将第一文件。

2、系统格式化为第二文件系统;格式化成功后,嵌入式系统将内存中的打包文件解包至第二文件系统。本发明在文件系统的倒换过程中,确保了文件及其目录结构的完整性,并实现了由嵌入式系统自己来完成整个文件系统的倒换过程,从而实现了倒换的自动化,因此系统运行效率更高,并且节省了人力。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书9页附图6页CN102375767A1/2页21一种嵌入式系统中的文件系统的倒换方法,其特征在于,包括所述嵌入式系统将第一文件系统中的文件打包至内存;所述打包成功后,所述嵌入式系统将所述第一文件系统格式化为第二文件系统;所述格式化成功后,所述嵌入式系统。

3、将所述内存中的打包文件解包至所述第二文件系统。2根据权利要求1所述的方法,其特征在于,所述第一文件系统为非并发文件系统;将第一文件系统中的文件打包至内存包括在所述内存中创建所述打包文件;采用串行化的操作方式依次读取所述第一文件系统的文件中的数据并将读取的数据写入所述打包文件,直至所述第一文件系统中的所有文件中的数据均已写入到所述打包文件中。3根据权利要求2所述的方法,其特征在于,将所述内存中的打包文件解包至所述第二文件系统包括采用所述串行的操作方式依次读取所述打包文件中的数据并将读取的数据写入所述第二文件系统的对应文件中,直至所述打包文件中的所有数据均已解包至所述第二文件系统中。4根据权利要求。

4、1所述的方法,其特征在于,还包括若所述打包失败,则所述嵌入式系统判断打包失败的次数是否超过打包失败次数阈值;若未超过,则所述嵌入式系统继续执行所述将第一文件系统中的文件打包至内存的步骤,否则,结束流程。5根据权利要求1所述的方法,其特征在于,还包括若所述格式化失败,则所述嵌入式系统将文件系统重新格式化为所述第一文件系统;所述嵌入式系统将所述内存中的打包文件解包至所述第一文件系统。6根据权利要求1所述的方法,其特征在于,在所述嵌入式系统将所述内存中的打包文件解包至所述第二文件系统之后,还包括若所述解包失败,则所述嵌入式系统判断解包失败的次数是否超过解包失败次数阈值;若未超过,则所述嵌入式系统继续。

5、执行所述将所述内存中的打包文件解包至所述第二文件系统的步骤;若超过,则所述嵌入式系统将文件系统重新格式化为所述第一文件系统,并将所述内存中的打包文件解包至所述第一文件系统。7一种嵌入式系统,其特征在于,包括打包模块,用于将第一文件系统中的文件打包至内存;格式化模块,用于在所述打包成功后,将所述第一文件系统格式化为第二文件系统;解包模块,用于在所述格式化成功后,将所述内存中的打包文件解包至所述第二文件系统。8根据权利要求7所述的嵌入式系统,其特征在于,还包括接口模块,用于为所述第一文件系统、所述第二文件系统与所述打包模块、所述解包模权利要求书CN102375760ACN102375767A2/2。

6、页3块之间的通信提供接口。9根据权利要求7所述的嵌入式系统,其特征在于,还包括控制模块,用于在所述格式化模块将所述第一文件系统格式化为所述第二文件系统失败的情况下,将文件系统重新格式化为所述第一文件系统,并控制所述解包模块将所述打包文件解包至所述第一文件系统。10根据权利要求9所述的嵌入式系统,其特征在于,所述控制模块还用于在所述解包模块将所述打包文件解包至所述第二文件系统失败的情况下,判断解包失败的次数是否超过解包失败次数阈值;在未超过时,控制所述解包模块继续执行所述将所述内存中的打包文件解包至所述第二文件系统的步骤;在超过时,控制所述格式化模块将文件系统重新格式化为所述第一文件系统以及将所。

7、述打包文件解包至所述第一文件系统。权利要求书CN102375760ACN102375767A1/9页4嵌入式系统及其中的文件系统的倒换方法技术领域0001本发明涉及通信领域,具体而言,涉及一种嵌入式系统及其中的文件系统的倒换方法。背景技术0002嵌入式系统通常由以下几个部分组成嵌入式系统硬件、嵌入式操作系统、以及基于该操作系统的应用软件。其中嵌入式操作系统是一个非常重要的部分,其直接决定了嵌入式系统所使用的应用软件以及文件系统的类型。目前,已经有多种不同类型的操作系统为这种需求提供了支持,比如VXWORKS、各种版本的嵌入式LINUX、WINDOWSCE、PALMOS、SYMBIAN等。000。

8、3在实际应用中,嵌入式系统经常需要在多种操作系统之间进行切换。比如从VXWORKS切换到嵌入式LINUX,或者从嵌入式LINUX切换到VXWORKS,通常将前者称为操作系统升级简称“升级”,将后者称为操作系统回滚简称“回滚”。0004通常情况下,应用系统除了操作系统以外,还有许多系统配置文件、应用程序存储在磁盘或者闪存中以下简称“存储设备”,该存储设备通常被格式化为某种文件系统,用于组织和存储嵌入式系统所需要的诸多文件。因此,在操作系统升级和回滚的过程中,如何实现文件系统的稳定倒换,是系统升级需要考虑的重要因素。一般有以下几个方面的重要因素需要考虑00051升级和回滚时,不同的操作系统所支持的。

9、文件系统各不相同。比如,VXWORKS支持的文件系统为TFFS文件系统,而嵌入式LINUX支持的文件系统为JFFS2。因此,升级和回滚时需要保证所存储的文件的完整性和兼容性,使文件不因操作系统的改变而发生改变,避免出现文件内容被修改甚至文件不可见的情况;00062升级失败时,需要进行系统回滚。回滚之后,需要保证升级之前所存储的文件的完整性,即实现系统升级的可靠性,使系统不因升级失败而丢失或者损伤文件;00073回滚失败时,需要回退到升级后的状态。同样需要保证返回到升级后的状态之后的文件的完整性,实现可靠回退。0008综上,文件系统的倒换应该使以上因素得以充分考虑。目前,经常被使用的文件系统倒换。

10、方法是以人工的方式进行倒换,具体为首先,将所需要的文件通过FTP或者TFTP下载到本地,然后,切换系统,在对存储设备格式化后,再将之前下载到本地的文件上传至存储设备,之后启动系统,完成文件系统的倒换。0009可以看出,上述方法由于以人工的方式进行倒换,因此比较浪费人力,无法实现文件系统倒换的自动化。尤其在文件系统目录结构复杂的情况下,使用这种方法进行倒换,不但极大地增加了用户的工作量,并且难以保证倒换后文件目录结构的完整性。发明内容0010本发明的主要目的在于提供一种嵌入式系统及其中的文件系统的倒换方法,以至说明书CN102375760ACN102375767A2/9页5少解决上述的比较浪费人。

11、力,无法实现文件系统倒换的自动化的问题。0011根据本发明的一个方面,提供了一种嵌入式系统中的文件系统的倒换方法,包括嵌入式系统将第一文件系统中的文件打包至内存;打包成功后,嵌入式系统将第一文件系统格式化为第二文件系统;格式化成功后,嵌入式系统将内存中的打包文件解包至第二文件系统。0012进一步地,第一文件系统为非并发文件系统;将第一文件系统中的文件打包至内存包括在内存中创建打包文件;采用串行化的操作方式依次读取第一文件系统的文件中的数据并将读取的数据写入打包文件,直至第一文件系统中的所有文件中的数据均已写入到打包文件中。0013进一步地,将内存中的打包文件解包至第二文件系统包括采用串行的操作。

12、方式依次读取打包文件中的数据并将读取的数据写入第二文件系统的对应文件中,直至打包文件中的所有数据均已解包至第二文件系统中。0014进一步地,在上述的方法中,还包括若打包失败,则嵌入式系统判断打包失败的次数是否超过打包失败次数阈值;若未超过,则嵌入式系统继续执行将第一文件系统中的文件打包至内存的步骤,否则,结束流程。0015进一步地,在上述的方法中,还包括若格式化失败,则嵌入式系统将文件系统重新格式化为第一文件系统;嵌入式系统将内存中的打包文件解包至第一文件系统。0016进一步地,在嵌入式系统将内存中的打包文件解包至第二文件系统之后,还包括若解包失败,则嵌入式系统判断解包失败的次数是否超过解包失。

13、败次数阈值;若未超过,则嵌入式系统继续执行将内存中的打包文件解包至第二文件系统的步骤;若超过,则嵌入式系统将文件系统重新格式化为第一文件系统,并将内存中的打包文件解包至第一文件系统。0017根据本发明的另一方面,提供了一种嵌入式系统,包括打包模块,用于将第一文件系统中的文件打包至内存;格式化模块,用于在打包成功后,将第一文件系统格式化为第二文件系统;解包模块,用于在格式化成功后,将内存中的打包文件解包至第二文件系统。0018进一步地,还包括接口模块,用于为第一文件系统、第二文件系统与打包模块、解包模块之间的通信提供接口,其中,上述接口包括创建接口、打开接口、关闭接口、读取接口、和写入接口。00。

14、19进一步地,打包模块将第一文件系统中的文件打包至内存的方式包括调用上述创建接口在内存中创建打包文件;采用串行化的操作方式依次调用上述读取接口读取第一文件系统的文件中的数据并调用上述写入接口将读取的数据写入打包文件,直至第一文件系统中的所有文件中的数据均已写入到打包文件中;其中,每次调用上述读取接口读取第一文件系统的文件中的数据之前先调用上述打开接口打开该文件并在读取之后调用上述关闭接口关闭该文件,每次调用上述写入接口将读取的数据写入该打包文件之前先调用上述打开接口打开该打包文件并在写入之后调用上述关闭接口关闭该打包文件。0020进一步地,解包模块将内存中的打包文件解包至第二文件系统的方式包括。

15、采用串行的操作方式依次调用上述读取接口读取打包文件中的数据并调用上述写入接口将读取的数据写入第二文件系统的对应文件中,直至打包文件中的所有数据均已解包至第二文件系统中;其中,每次调用上述读取接口读取打包文件中的数据之前先调用上述打开接口说明书CN102375760ACN102375767A3/9页6打开该打包文件并在读取之后调用上述关闭接口关闭该打包文件,每次调用上述写入接口将读取的数据写入第二文件系统的对应文件中之前先调用上述打开接口打开该对应文件并在写入之后调用上述关闭接口关闭该对应文件。0021进一步地,还包括控制模块,用于在格式化模块将第一文件系统格式化为第二文件系统失败的情况下,将文。

16、件系统重新格式化为第一文件系统,并控制解包模块将打包文件解包至第一文件系统。0022进一步地,控制模块还用于在解包模块将打包文件解包至第二文件系统失败的情况下,判断解包失败的次数是否超过解包失败次数阈值;在未超过时,控制解包模块继续执行将内存中的打包文件解包至第二文件系统的步骤;在超过时,控制格式化模块将文件系统重新格式化为第一文件系统以及将打包文件解包至第一文件系统。0023通过本发明,嵌入式系统通过在文件系统的倒换过程中,先将倒换前的文件系统即第一文件系统中的文件打包至不会受到影响的内存中,并在格式化为倒换后的文件系统即第二文件系统后再将内存中的打包文件解包至倒换后的文件系统中,从而在文件。

17、系统的倒换过程中,确保了文件及其目录结构的完整性,并实现了由嵌入式系统自己来完成整个文件系统的倒换过程,从而实现了倒换的自动化,因此系统运行效率更高,并且节省了人力。附图说明0024此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中0025图1是根据本发明实施例的嵌入式系统中的文件系统的倒换方法;0026图2是根据本发明第一优选实施例的升级和回滚过程中的文件系统倒换过程的流程图;0027图3是根据本发明优选实施例的打包的流程图;0028图4是根据本发明优选实施例的解包的流程图;0029图5是根据本发。

18、明第二优选实施例的文件系统的倒换过程的具体流程图;0030图6是根据本发明实施例的嵌入式系统的示意图;0031图7是根据本发明优选实施例的嵌入式系统的结构示意图;0032图8是根据本发明优选实施例的引导装置的结构示意图。具体实施方式0033下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。0034图1是根据本发明实施例的嵌入式系统中的文件系统的倒换方法,包括以下步骤0035步骤S102,嵌入式系统将第一文件系统中的文件打包至内存;0036例如,上述文件可以包括用户的各种配置文件、以及其他的文件或程序、目录、以及目录下的各。

19、种文件与程序等。第一文件系统中的文件打包至内存中后,即以打包文件的形式保存。说明书CN102375760ACN102375767A4/9页70037步骤S104,打包成功后,嵌入式系统将第一文件系统格式化为第二文件系统;0038在实际实施时,可以在执行格式化之前,先卸载第一文件系统。格式化之后,嵌入式系统中的磁盘或闪存等存储设备即被格式化为第二文件系统。0039步骤S106,格式化成功后,嵌入式系统将内存中的打包文件解包至第二文件系统。0040相关技术中由于采用以人工的方式进行倒换,需要文件系统使用者去记忆与存储相关的文件、目录以及目录结构,因此比较浪费人力,无法实现文件系统倒换的自动化。本实。

20、施例中,嵌入式系统通过在文件系统的倒换过程中,先将倒换前的文件系统即第一文件系统中的文件打包至不会受到影响的内存中,并在格式化为倒换后的文件系统即第二文件系统后再将内存中的打包文件解包至倒换后的文件系统中,从而在文件系统的倒换过程中,确保了文件及其目录结构的完整性,并实现了由嵌入式系统自己来完成整个文件系统的倒换过程,从而实现了倒换的自动化,因此系统运行效率更高,并且节省了人力。0041此外,使用打包的方法作为中间过程,实现了系统配置文件和程序的平滑迁移,使相关文件既能够在原操作系统中可用,也能够被升级后的操作系统所用。0042如图2所示,在实际应用中,上述实施例的文件系统的倒换方法既可以应用。

21、在嵌入式系统的操作系统的升级过程中,也可以应用于操作系统的回滚过程中,设升级前的文件系统为文件系统1,升级后的文件系统为文件系统2,其文件系统的倒换过程示意如图2所示。0043在操作系统的升级过程中,文件系统的倒换包括以下步骤步骤S202,嵌入式系统将文件系统1中的文件打包进内存中;该步骤对应于图1中的步骤S102;步骤S204,卸载文件系统1,并将文件系统格式化为文件系统2,该步骤对应于图1中的步骤S104;步骤S206,将内存中的打包文件解包,解包完成后,将在文件系统2中还原文件系统1中的文件,该步骤对应于图1中的步骤S106。解包完成后,文件系统的倒换即完成。0044在操作系统的回滚过程。

22、中,文件系统的倒换流程与升级过程中的流程相反,这里不再赘述。0045由于在嵌入式系统中,文件系统有可能不支持并发操作即为非并发文件系统,因此,在打包和解包时可以采用串行化的操作方式,一次仅打开一个文件,当需要打开第二个文件时,需要先将已经打开的文件关闭。因此,当第一文件系统为非并发文件系统时,可以采用串行化的操作方式将第一文件系统中的文件打包至内存,即,具体地上述步骤S102包括在内存中创建打包文件;采用串行化的操作方式依次读取第一文件系统的文件中的数据并将读取的数据写入打包文件,直至第一文件系统中的所有文件中的数据均已写入到打包文件中。这样,可以有效地规避文件系统的不支持并发操作的局限性。0。

23、046在实际应用中,采用串行化的操作方式的打包流程如图3所示,以文件系统中一个文件的打包流程为例,包括以下步骤0047步骤S302,嵌入式系统创建打包后需要生成的文件即上述的打包文件,创建成功后关闭打包文件;0048步骤S304,创建头信息,打开已经创建的打包文件,将头信息写入,写入成功后关闭打包文件;0049步骤S306,打开需要打包的文件可以为上述的第一文件系统中的文件,读取一定长度的数据,关闭文件;说明书CN102375760ACN102375767A5/9页80050步骤S308,打开打包文件,将读取的数据写入,写入后关闭文件;0051步骤S310,判断文件中的数据是否已经全部读取,如。

24、果尚未读完,则继续返回执行步骤S306,直至文件中的数据全部读取后,一个文件的打包流程结束。0052步骤S312,使用上述步骤S306至步骤S310继续打包其他的文件。0053以上为将文件打包至文件系统中,将文件打包至内存中的流程与图3类似,这里不再赘述。0054同样的,也可以采用串行化的操作方式将打包文件解包至第二文件系统中,即,具体地上述步骤S106可以包括采用串行的操作方式依次读取打包文件中的数据并将读取的数据写入第二文件系统的对应文件中,直至打包文件中的所有数据均已写入到对应的文件中。0055在实际应用中,与打包流程同样的原因,采用串行化的操作方式的解包流程如图4所示,以文件系统中单个。

25、文件的解包为例,包括以下步骤0056步骤S402,嵌入式系统打开打包文件,读取头信息后,关闭打包文件;0057步骤S404,对读取到的头信息进行判断,如果头信息所描述的数据是文件则继续文件解包流程;0058步骤S406,打开打包文件,读取对应数据块的一定长度的数据,读取完成后,关闭打包文件;0059步骤S408,判断解包后的文件是否存在,如果不存在,则转入步骤S412,若已存在,则转入步骤S410;0060步骤S410,打开文件;0061步骤S412,创建文件;0062步骤S414,将读取到的数据写入文件中,写入成功后关闭文件;0063步骤S416,判断对应文件数据是否已经全部解包,如果尚未全。

26、部解包,则返回步骤S406,直至解包结束;0064步骤S418,使用上述步骤继续解其他的文件。0065以上为将文件系统中的打包文件解包至文件系统中,将内存中的打包文件解包至文件系统中的流程与上述步骤相同,这里不再赘述。0066需要注意的是如果将文件打包至文件系统中,倒换前需要首先将打包文件读取至内存中;格式化存储设备为第二文件系统后,再将内存中的打包文件写入第二文件系统,之后再将打包文件解包至第二文件系统。0067实际应用时,在文件系统的倒换过程中,偶尔会发生倒换异常的情况,因此,需要对文件系统的倒换过程进行相应的保护流程,以在流程上尽可能地保护文件系统的数据、文件不发生丢失,以进一步确保文件。

27、的完整性和可靠性,尽可能地确保文件系统的倒换的安全性。保护流程主要包括以下几个方面00681为打包文件分配内存中的存储空间时,如果内存的剩余存储不足,直接返回失败,倒换结束;00692如果打包过程中失败,则将已经为打包文件分配的内存清零,再次打包。连续打包10次均失败,则返回失败,倒换结束;00703如果格式化失败,则反向格式化,并将内存中的打包文件解包,复原文件;说明书CN102375760ACN102375767A6/9页900714如果解包失败,则重新解包,解包过程中覆盖之前已经解包的文件。如果解包失败次数超过10次,则进行反向格式化,并将内存中的打包文件解包,复原文件。0072如图5所。

28、示,增加了保护流程的文件系统的倒换流程,具体包括以下步骤0073步骤S502,嵌入式系统为打包文件分配需要的内存空间;0074步骤S504,判断内存是否足够,若是,则进入步骤S506,若否,则返回失败,倒换流程结束;0075步骤S506,将第一文件系统中的文件打包至内存中;0076步骤S508,判断打包是否成功,若成功,则转入步骤S510,若失败,则如果打包失败,则连续尝试10次,如果都未成功,返回失败,倒换结束。0077步骤S510,判断失败次数是否超过10次即打包失败次数阈值,若超过,则返回失败,倒换流程结束,若未超过,则返回步骤S506;0078步骤S512,将第一文件系统格式化为第二文。

29、件系统;0079步骤S514,判断格式化是否成功,如果格式化失败,则进入步骤S516,若成功,则进入步骤S518;0080步骤S516,反向格式化即重新格式化为第一文件系统,再将内存中的打包文件解包,恢复之前文件系统的状态即将打包文件解包至第一文件系统,倒换结束;0081步骤S518,将内存中的打包文件解包至第二文件系统;0082步骤S520,判断解包是否成功,若成功,则结束倒换流程,若失败,则进入步骤S522;0083步骤S522,判断失败次数是否超过10次即解包失败次数阈值,若未超过,则返回步骤S518,继续解包;如果超过10次,则反向格式化,并将文件写入,完成解包,恢复之前的流程,倒换结。

30、束;0084本发明上述实施例的目的是提供一种易于实现的嵌入式系统的文件系统的倒换方法,上述实施例的方法通过使用打包的方法作为中间过程,实现文件系统的倒换;同时,可以实现自动化的倒换,从而提高了系统的运行效率。0085为了使得嵌入式系统能够利用上述的方法实现文件系统的自动倒换,本发明以下实施例还提供了一种嵌入式系统,通过在该嵌入式系统中设置一引导装置,由该引导装置来执行上述实施例的方法。0086图6是根据本发明实施例的嵌入式系统的示意图,包括打包模块10,用于将第一文件系统中的文件打包至内存;格式化模块20,用于在打包成功后,将第一文件系统格式化为第二文件系统;解包模块30,用于在格式化成功后,。

31、将内存中的打包文件解包至第二文件系统。0087该实施例中的嵌入式系统,通过设置在其中的打包模块、格式化模块、和解包模块来在文件系统的倒换过程中,先将倒换前的文件系统即第一文件系统中的文件打包至不会受到影响的内存中,并在格式化为倒换后的文件系统即第二文件系统后再将内存中的打包文件解包至倒换后的文件系统中,从而在文件系统的倒换过程中,确保了文件的完整性,并实现了由嵌入式系统自己来完成整个文件系统的倒换过程,从而实现了倒换的自动化,因此提高了系统运行的效率和文件系统倒换的效率,并且节省了人力。0088如图7所示,上述的嵌入式系统还可以包括接口模块40,用于为第一文件系统、说明书CN102375760。

32、ACN102375767A7/9页10第二文件系统与打包模块10、解包模块20之间的通信提供接口,其中,上述接口可以包括创建如VCREAT创建新的文件、VMKDIR创建目录、打开包括VOPEN打开文件、VOPENDIR打开目录、关闭如包括VCLOSE关闭打开的文件、VCLOSEDIR关闭目录、读取如VREAD读取文件中的数据、VREADDIR读取目录、和写入如VWRITE将数据写入文件。显然,还可以包括VLSEEK设置文件偏移、VSTAT获取文件属性、以及VCHDIR改变目录等接口。通过接口模块提供的这些接口,可以为各个不同的文件系统提供统一的接口,从而为打包模块和解包模块读写各个不同的文件系。

33、统中的文件中的数据提供了方便。0089例如,在打包模块10将第一文件系统中的文件打包至内存过程中,打包模块10首先调用创建接口在内存中创建打包文件;然后,采用串行化的操作方式依次调用读取接口读取第一文件系统的文件中的数据并调用写入接口将读取的数据写入打包文件,直至第一文件系统中的所有文件中的数据均已写入到打包文件中;其中,每次调用读取接口读取第一文件系统的某一文件中的数据之前先调用打开接口打开该文件并在读取之后调用关闭接口关闭该文件,每次调用写入接口将读取的数据写入该打包文件之前先调用打开接口打开该打包文件并在写入之后调用关闭接口关闭该打包文件。0090在解包模块30将内存中的打包文件解包至第。

34、二文件系统的过程中,解包模块30采用串行的操作方式依次调用读取接口读取打包文件中的数据并调用写入接口将读取的数据写入第二文件系统的对应文件中,直至打包文件中的所有数据均已解包至第二文件系统中;其中,每次调用读取接口读取打包文件中的数据之前先调用打开接口打开该打包文件并在读取之后调用关闭接口关闭该打包文件,每次调用写入接口将读取的数据写入第二文件系统的对应文件中之前先调用打开接口打开该对应文件并在写入之后调用关闭接口关闭该对应文件。0091如图7所示,上述嵌入式系统中还可以包括控制模块50,用于在格式化模块20将第一文件系统格式化为第二文件系统失败的情况下,将文件系统重新格式化为第一文件系统,并。

35、控制解包模块30将打包文件解包至第一文件系统。此外,控制模块50还可以用于在解包模块将打包文件解包至第二文件系统失败的情况下,判断解包失败的次数是否超过解包失败次数阈值;在未超过时,控制解包模块继续执行将内存中的打包文件解包至第二文件系统的步骤;在超过时,控制格式化模块将文件系统重新格式化为第一文件系统以及将打包文件解包至第一文件系统。从而,控制模块除了用于控制打包模块、格式化模块、和解包模块执行各自的操作之外,还为整个的倒换流程提供了保护。0092如图8所示,在实际实施时,可以将上述的第一文件系统、第二文件系统、打包模块、格式化模块、解包模块、接口模块、和控制模块统一地由一个引导装置来实现,。

36、该引导装置同时兼容升级前、后系统使用的文件系统。为了实现方便、更加符合实际应用需要,该引导装置在实际实施时可以主要由多文件系统支持模块即第一文件系统、第二文件系统、接口模块、和格式化模块的组合、打包解包模块即打包模块和解包模块的组合、以及控制模块。0093如图8所示,多文件系统支持模块支持多种文件系统,并能够根据需要进行扩充,扩充时需要移植相关文件系统对应的接口,并添加文件系统识别程序。多文件系统支持模块对外提供的统一接口即上述接口模块40中包括的接口包括创建、打开、关闭、读取、写入文件、打开目录、读取目录、关闭目录等。通过提供统一的接口实现了接口的透明化。打说明书CN102375760ACN。

37、102375767A8/9页11包解包模块能够通过调用统一的接口来对相应的文件系统进行各种操作。0094此外,由于多文件系统支持模块对外保持接口透明,在模块内部需要对不同文件系统进行区分,因此,通过一个全局的文件系统标识符FS来区分当前使用的文件系统,区分每个不同的文件系统的私有接口,以及辨识文件系统的倒换进行的方向。当该FS1时,表示当前使用第一文件系统,则从外部此处主要指打包解包模块传进来的调用指令,会调用第一文件系统的接口;当FS2时,表示当前使用第二文件系统,则从外部传进来的调用指令,会调用第二文件系统对应的接口。0095例如当FS指示为文件系统1时,多文件系统支持模块使用文件系统1提。

38、供的接口,格式化程序使用文件系统2提供的接口;当FS指示为文件系统2时,多文件系统支持模块使用文件系统2提供的接口,格式化程序使用文件系统1提供的接口。0096其中,在引导装置启动时,需要设置FS指示当前系统的文件系统。0097打包解包模块主要实现目录和文件的打包与解包,用于将用户的多个配置文件打包为一个文件,使开发者免于记忆数据目录结构与数据内容,尤其在目录结构复杂的情况下,能够有效保证用户配置文件的目录结构与配置数据的完整性。打包装置主要实现以下功能1、支持目录与文件的打包、解包;2、同时支持文件系统与内存中打包、解包;3、支持非并发文件系统。0098其中,为了支持内存中打包,设计了结构体。

39、TARBUFF0099TYPEDEFSTRUCT0100CHARBUFFER;0101INTWRITE_NUM;0102INTREAD_NUM;0103TARBUFF;0104其中,BUFFER成员用于存储打包好的数据;0105WRITE_NUM用于记录打包时已经写入内存的数据。由于打包程序以10240个字节的数据为单位,每次从需要打包的文件中读取10240个字节,之后将这些数据追加在已经写入的数据尾部,等所有的数据都写入后,就构成一个完整的打包数据。根据WRITE_NUM的记录,就可以找到内存中已经打包的数据的结尾;0106READ_NUM与此类似,主要应用于解包流程,记录已经从内存中读取的。

40、数据数量,下次读取时,根据这个记录,能够找到已经读取过的数据的尾部。0107除了内存中打包、解包,打包解包模块还支持文件系统中的打包、解包配置,能够将打包文件打包入内存或者打包入文件系统中,为用户提供了多种打包选择。0108此外,为了支持非并发文件系统,打包解包模块还采用了串行化的操作流程,有效地解决了非并发文件系统打包和解包的问题。串行化的操作方式的主要思想是每次调用VOPEN之前,必须保证对上一次调用VOPEN打开的文件使用了VCLOSE。打包解包模块采用串行化的操作方式进行打包和解包时的操作流程分别如图3、图4所示。0109控制模块用于在流程上尽可能地为文件系统倒换的安全性提供尽可能的保。

41、护,以在流程上尽可能地保护文件系统中的文件不被损坏。0110结合图8所示的引导装置,以第一文件系统为TFFS文件系统、第二文件系统为JFFS2文件系统为例,详细说明由嵌入式系统中的该引导装置实现上述实施例的文件系统说明书CN102375760ACN102375767A9/9页12的倒换方法,包括以下步骤0111步骤1同时兼容2种文件系统的引导装置启动,该引导装置为文件系统倒换的基础平台,其结构图如图8所示,包括以下几部分文件系统1TFFS文件系统;文件系统2JFFS2文件系统;打包解包模块;和控制模块。0112步骤2打包解包模块将TFFS文件系统中所有的文件打包到内存中。打包解包模块将需要迁移。

42、的目录与文件打包到内存中。打包时,所使用的文件系统接口正是多文件系统支持模块提供的统一接口。0113步骤3将TFFS文件系统卸载,格式化文件系统为JFFS2。0114步骤4打包解包模块将内存中的打包文件进行解包,解包后,所有的目录以及文件会写入到JFFS2文件系统中。0115该优选实施例在系统启动初期,通过使用同时兼容多种文件系统的引导装置,使用打包的方法作为中间过程,实现了文件系统的倒换。0116从以上的描述中,可以看出,本发明实现了如下技术效果01171实现了文件系统的倒换自动化,从而提高了系统的运行效率,并且节省了人力;01182为系统升级和回滚提供了较可靠的安全保证。0119显然,本领。

43、域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。0120以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。说明书CN102375760ACN102375767A1/6页13图1图2说明书附图CN102375760ACN102375767A2/6页14图3说明书附图CN102375760ACN102375767A3/6页15图4说明书附图CN102375760ACN102375767A4/6页16图5说明书附图CN102375760ACN102375767A5/6页17图6图7说明书附图CN102375760ACN102375767A6/6页18图8说明书附图CN102375760A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1