电子设备的固件升级方法及装置与流程

文档序号:14714025发布日期:2018-06-16 00:58阅读:165来源:国知局
电子设备的固件升级方法及装置与流程

本发明涉及固件升级领域,特别地,涉及一种电子设备的固件升级方法及装置。



背景技术:

随着电子技术的不断发展,各种嵌入式设备(例如,手机、平板、车载电子设备、智慧家居终端等)在各个行业迅速得以普及,它为智慧社会的构建发挥了重要的作用。在实际应用过程中,为了修复软硬件bug和产品的更新,经常需要对系统的固件进行升级。

目前的许多产品已具备固件升级功能,但在升级过程中,若用户异常终止或者遇到断电等异常情况,会导致版本更新失败,设备工作异常。目前的升级方法,若升级失败,不能完全保证能够在当前的固件版本下继续正常工作。



技术实现要素:

本发明提供了一种电子设备的固件升级方法及装置,以解决目前的升级方法不能完全保证若升级失败时在当前的固件版本下继续正常工作的技术问题。

本发明采用的技术方案如下:

一方面,本发明提供了一种电子设备的固件升级方法,电子设备的固件存储芯片中具有用于存储各个模块的固件的模块分区和与模块分区相应的模块备份分区、以及用于存储索引信息的第一索引分区和第二索引分区,该固件升级方法包括以下步骤:

步骤S100,检查第一索引分区和第二索引分区的数据完整性,当第一索引分区和第二索引分区的内容均完整且内容完全相同时,根据第一索引分区的内容加载并运行系统;

步骤S200,确定需要升级时,根据第一索引分区描述的分区信息,将需要升级的模块写入与当前分区相应的分区,在所有模块写入成功后生成所有模块的新的索引信息,并将新的索引信息写入第一索引分区和第二索引分区,写入成功则判定固件升级成功,进行系统重启。

进一步地,步骤S200包括:

步骤S203,识别第一索引分区所描述的分区信息,若第一索引分区的分区信息指示当前使用的是模块分区,则将需要升级的模块写入相应的模块备份分区;若第一索引分区的分区信息指示当前使用的是模块备份分区,则将需要升级的模块写入相应的模块分区。

进一步地,步骤S200还包括位于步骤S203之前的以下步骤:

步骤S201,获取升级文件,若成功,进入步骤S202,否则判定固件升级失败,升级结束;

步骤S202,对比升级文件的版本信息与第一索引分区的版本信息,确定是否需要升级,若升级文件的版本信息与第一索引分区的版本信息不同,则判定需要升级,否则判定固件升级失败,升级结束。

进一步地,步骤S200还包括位于步骤S203之后的以下步骤:

步骤S204,生成新的索引信息;

步骤S205,将新的索引信息写入第一索引分区,若写入成功,则进入步骤S206,否则判定固件升级失败,升级结束;

步骤S206,将新的索引信息写入第二索引分区,若写入成功,则判定固件升级成功并进行系统重启,否则判定固件升级失败,升级结束。

进一步地,步骤S100包括以下步骤:

步骤S101,检查第一索引分区的数据完整性,若通过,进入步骤S102,否则进入步骤S103;

步骤S102:检查第一索引分区的内容和第二索引分区的内容是否完全相同,若通过,进入步骤S108,否则进入步骤S104;

步骤S103:检查第二索引分区的数据完整性,如果通过,进入步骤S105,否则进入步骤S106;

步骤S104:将第一索引分区的内容复制到第二索引分区,进入步骤S108;

步骤S105:将第二索引分区的内容复制到第一索引分区,进入步骤S108;

步骤S106:将默认的索引信息复制到第一索引分区;

步骤S107:将默认的索引信息复制到第二索引分区;

步骤S108:根据第一索引分区的内容加载并运行系统。

进一步地,步骤S201包括:通过网络或者存储装置获取升级文件。

进一步地,网络包括有线网络、无线网络、移动通信网络中的任一种;存储装置包括TF卡、U盘中的任一种。

根据本发明的另一方面,还提供了一种固件升级装置,用于对电子设备的固件进行升级,电子设备的固件存储芯片中具有用于存储各个模块的固件的模块分区和与模块分区相应的模块备份分区、以及用于存储索引信息的第一索引分区和第二索引分区,该固件升级装置包括:系统启动模块,用于检查第一索引分区和第二索引分区的数据完整性,当第一索引分区和第二索引分区的内容均完整且内容完全相同时,根据第一索引分区的内容加载并运行系统;固件升级模块,用于在确定需要升级时,根据第一索引分区描述的分区信息,将需要升级的模块写入与当前分区相应的分区,在写入成功后生成新的索引信息并将新的索引信息写入第一索引分区和第二索引分区,写入成功则判定固件升级成功,进行系统重启。

进一步地,固件升级模块包括:识别单元,用于识别第一索引分区所描述的分区信息,升级烧写单元,用于在第一索引分区的分区信息指示当前使用的是模块分区时将需要升级的模块写入相应的模块备份分区、以及在第一索引分区的分区信息指示当前使用的是模块备份分区时将需要升级的模块写入相应的模块分区。

进一步地,固件升级模块包括:获取单元,用于获取升级文件;对比单元,用于对比升级文件的版本信息与第一索引分区的版本信息;判断单元,用于根据对比模块的对比结果判断是否需要升级,若升级文件的版本信息与第一索引分区的版本信息不同,则判定需要升级,否则判定固件升级失败。

本发明的电子设备的固件升级方法和装置,各模块的存储分为相应的两个分区即模块分区和模块备份分区,索引信息的存储也包括两个分区即第一索引分区和第二索引分区,保证了索引信息的完整性和升级过程的可靠进行;在升级时通过将需要升级的模块写入与当前分区相应的分区,不会将当前模块的信息覆盖掉,因而当升级的模块写入失败时也依然有完整保存当前的固件版本,可以可靠地保证设备在固件升级失败时候仍然能够正常的工作,使得设备的可维护性大大提高,用户的满意度大大提高。

除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。下面将参照附图,对本发明作进一步详细的说明。

附图说明

构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明优选实施例的电子设备的固件升级方法的流程图;

图2是本发明优选实施例的固件分区布局图;

图3是本发明优选实施例的索引分区信息示意图;

图4是本发明优选实施例的系统启动的流程图;

图5是本发明优选实施例的固件升级的流程图;

图6是本发明优选实施例的固件升级装置的结构框图。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。

参照图1,本发明的优选实施例提供了一种电子设备的固件升级方法,电子设备的固件存储芯片中具有用于存储各个模块的固件的模块分区和与模块分区相应的模块备份分区、以及用于存储索引信息的第一索引分区和第二索引分区。该固件升级方法包括以下步骤:

步骤S100,系统启动:检查第一索引分区和第二索引分区的数据完整性,当第一索引分区和第二索引分区的内容均完整且内容完全相同时,根据第一索引分区的内容加载并运行系统.

步骤S200,固件升级:确定需要升级时,根据第一索引分区描述的分区信息,将需要升级的模块写入与当前分区相应的分区,在所有模块写入成功后生成所有模块的新的索引信息,并将新的索引信息写入第一索引分区和第二索引分区,写入成功则判定固件升级成功,进行系统重启。

本发明中,固件分区布局如图2中所示。固件分区包括启动代码、多个模块分区和相应的模块备份分区,以及与各模块分区和模块备份分区对应的第一索引分区和第二索引分区等。各索引分区的数据组成如图3中所示,其中,各模块对应在索引分区中的存储值为0或者1,当存储值为0时,表示当前模块使用模块分区,当存储值为1时表示当前模块使用模块备份分区。例如,A模块对应存储为0时,表示使用A模块分区,当A模块对应存储为1时,表示使用A模块备份分区。索引分区信息中倒数第2位表示版本信息。索引分区信息中最末位为校验码,用于完成数据完整性检查。

本发明的固件升级方法也可以包括在步骤S100系统启动之前的预烧写步骤:将各个模块的固件刷入固件存储芯片中的模块分区和与模块分区相应的模块备份分区,并将索引信息写入第一索引分区和第二索引分区。

预烧写的步骤可以是在固件存储芯片生产出厂前执行。具体地,该步骤包括:将A模块的固件刷入A模块分区和A模块备份分区,将B模块的固件刷入B模块分区和B模块备份分区,……将X模块的固件刷入X模块分区和X模块备份分区,以及将索引信息分别写入第一索引分区和第二索引分区,预先实现各模块的备份。

参照图4,作为本发明的优选实施例,步骤S100系统启动的流程具体包括以下步骤:

步骤S101,检查第一索引分区的数据完整性,若通过,进入步骤S102,否则进入步骤S103。

步骤S102:检查第一索引分区的内容和第二索引分区的内容是否完全相同,若通过,进入步骤S108,否则进入步骤S104。

步骤S103:检查第二索引分区的数据完整性,如果通过,进入步骤S105,否则进入步骤S106。

步骤S104:将第一索引分区的内容复制到第二索引分区,进入步骤S108。

步骤S105:将第二索引分区的内容复制到第一索引分区,进入步骤S108。

步骤S106:将默认的索引信息复制到第一索引分区。默认的索引信息可能是初始进行预烧写时生成的索引信息,或者是上一次升级成功保存的索引信息。

步骤S107:将默认的索引信息复制到第二索引分区。

步骤S108:根据第一索引分区的内容加载并运行系统。

固件升级的步骤S200必须在系统启动的步骤S100之后运行。

参照图5,作为本发明的优选实施例,步骤S200固件升级的流程具体包括以下步骤:

步骤S201,获取升级文件,若成功,进入步骤S202,否则进入步骤S207。此步骤中,可以通过网络或者存储装置获取升级文件。更具体地,网络包括有线网络、无线网络、移动通信网络中的任一种;存储装置包括TF卡、U盘中的任一种。

步骤S202,对比升级文件的版本信息与第一索引分区的版本信息,确定是否需要升级,若升级文件的版本信息与第一索引分区的版本信息不同,则判定需要升级,进入步骤S203,否则进入步骤S207。

步骤S203,识别第一索引分区所描述的分区信息,

若第一索引分区的分区信息指示当前使用的是模块分区,则将需要升级的模块写入相应的模块备份分区;若第一索引分区的分区信息指示当前使用的是模块备份分区,则将需要升级的模块写入相应的模块分区;

若需要升级的模块写入成功,进入步骤S204,否则进入步骤S207。

步骤S204,生成新的索引信息。

步骤S205,将新的索引信息写入第一索引分区,若写入成功,则进入步骤S206,否则进入步骤S207。

步骤S206,将新的索引信息写入第二索引分区,若写入成功,则进入步骤S208,否则进入步骤S207。

步骤S207,固件升级失败,进入步骤S209。

步骤S208,固件升级成功,系统重启。

步骤S209,固件升级结束。

根据本发明的另一方面,还提供了一种固件升级装置,用于对电子设备的固件进行升级。电子设备的固件存储芯片中具有用于存储各个模块的固件的模块分区和与模块分区相应的模块备份分区、以及用于存储索引信息的第一索引分区和第二索引分区。参照图6,该固件升级装置包括:系统启动模块100,用于检查第一索引分区和第二索引分区的数据完整性,当第一索引分区和第二索引分区的内容均完整且内容完全相同时,根据第一索引分区的内容加载并运行系统;固件升级模块200,用于在确定需要升级时,根据第一索引分区描述的分区信息,将需要升级的模块写入与当前分区相应的分区,在写入成功后生成新的索引信息并将新的索引信息写入第一索引分区和第二索引分区,写入成功则判定固件升级成功,进行系统重启。

进一步地,固件升级模块200包括:识别单元201,用于识别第一索引分区所描述的分区信息,升级烧写单元202,用于在第一索引分区的分区信息指示当前使用的是模块分区时将需要升级的模块写入相应的模块备份分区、以及在第一索引分区的分区信息指示当前使用的是模块备份分区时将需要升级的模块写入相应的模块分区。

进一步地,固件升级模块200包括:获取单元203,用于获取升级文件;对比单元204,用于对比升级文件的版本信息与第一索引分区的版本信息;判断单元205,用于根据对比模块的对比结果判断是否需要升级,若升级文件的版本信息与第一索引分区的版本信息不同,则判定需要升级,否则判定固件升级失败。

本发明的电子设备的固件升级方法和装置,各模块的存储分为相应的两个分区即模块分区和模块备份分区,索引信息的存储也包括两个分区即第一索引分区和第二索引分区,保证了索引信息的完整性和升级过程的可靠进行;在升级时通过将需要升级的模块写入与当前分区相应的分区,不会将当前模块的信息覆盖掉,因而当升级的模块写入失败时也依然有完整保存当前的固件版本,可以可靠地保证设备在固件升级失败时候仍然能够正常的工作,使得设备的可维护性大大提高,用户的满意度大大提高。

以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1