一种固件升级方法和装置制造方法及图纸

技术编号:29132442 阅读:18 留言:0更新日期:2021-07-02 22:27
本发明专利技术公开了一种固件升级方法和装置,所述方法包括:制定固件升级包,并将所述固件升级包存储于预设存储介质中;待升级设备进入升级模式,解析第一指令,开始固件升级;根据所述固件升级包在所述预设存储介质的路径信息读取所述固件升级包,根据所述分区表描述文件重新编程所述待升级设备的分区表,得到升级结果,并将所述升级结果和第二路径信息写入所述引导控制分区的第二位置;所述第二路径信息与所述第一路径信息相对应。通过本发明专利技术的固件升级方法可以将待升级设备中的旧平台固件完整升级为新平台固件,支持对待升级设备的物理分区表进行任意变更,有效满足了不同应用场景下的需求。

【技术实现步骤摘要】
一种固件升级方法和装置
本专利技术涉及一种固件升级领域,尤其涉及一种固件升级方法和装置。
技术介绍
FOTA(FirmwareOver-the-Air)固件空中下载技术,即固件在线升级技术,是通过FOTA固件升级引擎以固件升级包作为输入完成固件的升级。现有的Linux和Android固件升级,绝大多数都依赖于设备分区节点,对应的固件升级引擎基本都是基于既有的设备分区节点来完成对应分区的固件升级,这就意味着在升级过程中不能改变设备的分区表。为解决现有设备分区表无法改变的问题,现有的支持分区表升级的固件升级方法通常采用如下几种方式加以实现:一、通过逻辑分区的方式实现分区,也就是在物理上只有一个分区,在这个物理分区上通过软件模拟出多个逻辑分区,支持逻辑分区表的升级。这种方式不涉及到设备物理分区表的变更,升级时实际不会更新物理分区表(即仍不支持物理分区的变更)。二、支持物理分区表变更,但只能支持部分分区表变更或某些特定方式的变更,例如与引导程序相关联的实际物理分区不能变更,或者只能调整已有分区的大小等。然而,在很多应用场景下,需要支持设备物理分区表的任意变更。比如某一款设备早期采用一种架构方式构建其基础固件平台,它包括A、B、C、D、E五个分区,几年后出现并采用一种新的不兼容系统固件架构,它包括完全不同的A1、A2、B1、B2、C、E、F、G、K九个分区,此时就希望能够将设备固件升级到新的系统固件,这就需要支持对设备物理分区表进行任意变更的FOTA固件升级方案。然而现有的技术方案并不支持对设备物理分区表进行任意变更。
技术实现思路
为此,需要提供一种固件升级的技术方案,用以解决现有技术无法对设备的物理分区表进行任意变更的技术问题。为实现上述目的,本申请在第一方面提供了一种固件升级方法,所述方法包括:制定固件升级包,并将所述固件升级包存储于预设存储介质中;所述固件升级包包括分区表描述文件;待升级设备进入升级模式,解析第一指令,开始固件升级;所述待升级设备包括固件分区,所述固件分区包括引导控制分区,所述第一指令被预先写入所述引导控制分区的第一位置;所述第一位置与所述第一路径信息相对应,所述第一路径信息为所述固件升级包在所述预设存储介质的路径信息;根据所述固件升级包在所述预设存储介质的路径信息读取所述固件升级包,根据所述分区表描述文件重新编程所述待升级设备的分区表,得到升级结果,并将所述升级结果和第二路径信息写入所述引导控制分区的第二位置;所述第二路径信息与所述第一路径信息相对应。进一步地,“将所述升级结果和第二路径信息写入所述引导控制分区的第二位置”之后还包括:擦除所述第一位置预先写入的信息,并同步在所述第一位置写入升级标记指令和数据擦除指令,而后重启所述待升级设备。进一步地,重启所述待升级设备后,所述方法还包括:读取所述第一位置的升级标记指令,重新进入升级模式;根据所述第一位置的数据擦除指令,擦除所述待升级设备的可读写区域;读取所述第二位置的升级结果和第二路径信息,在指定的特定目录下创建一个升级成功标记文件,并将所述第二位置的升级结果和第二路径信息写入所述升级成功标记文件,清除当前所述第一位置和第二位置对应的所有信息。进一步地,在清除当前所述第一位置和第二位置对应的所有信息之后还包括:进入升级成功的新固件系统,判断所述升级成功标记文件是否存在,若是则表示固件升级成功,根据用户的数据恢复指令执行所述可读写区域的数据恢复操作。进一步地,所述固件升级包还包括标识信息、分区数据和预设校验信息;在读取所述固件升级包之后还包括对读取的所述固件升级包进行校验,具体包括:读取所述固件升级包的标识信息,将其与预设标识信息进行比较,若不一致则退出本次升级,若一致则读取所述固件升级包中的分区数据,并根据所述分区数据计算一个校验信息,将计算得到的校验信息与所述预设校验信息进行比较,若一致则继续固件升级,否则退出固件升级。进一步地,所述固件升级包还包括待升级分区镜像数,所述方法还包括:根据所述待升级分区镜像数遍历各个分区镜像,判断所述固件升级包中的各个分区镜像的数据长度是否大于分区描述文件中分配给该镜像分区的实际大小,若是则退出固件升级。进一步地,所述分区表描述文件包括依赖分区列表,所述根据所述分区表描述文件重新编程所述待升级设备的分区表包括:S1:在遍历各个分区镜像时,依次判断各个分区镜像的名称是否包含在所述依赖分区列表中,若包含在所述依赖分区列表中则根据各个分区镜像在固件升级包中的位置和长度,读取固件升级包中的待升级镜像数据;S2:根据各个所述分区镜像的名称查找所述分区表描述文件中对应分区镜像在待升级设备的存储分区的位置和长度进行数据写入;S3:回读写入到待升级设备的存储分区的各个镜像数据,将其与所述固件升级包中的对应分区数据进行比较,若不一致则重新执行步骤S1-S3。进一步地,所述分区表描述文件包括依赖分区列表,所述根据所述分区表描述文件重新编程所述待升级设备的分区表包括:S4:在遍历各个分区镜像时,依次判断各个分区镜像的名称是否包含在所述依赖分区列表中,若没有包含在所述依赖分区列表中则根据各个分区镜像在固件升级包中的位置和长度,读取固件升级包中的待升级镜像数据;S5:根据各个所述分区镜像的名称查找所述分区表描述文件中对应分区镜像在待升级设备的存储分区的存储位置和长度进行数据写入;S6:若判定分区镜像是二进制AndroidSparse格式,则首先根据分区表所指明的该分区在待升级设备的存储分区中的位置和长度,对该块存储分区全部强制赋值为0,而后根据Sparse文件格式对分区镜像进行解析,并将解析后的二进制raw数据按顺序写入该分区镜像对应的存储分区位置;S7:若判定分区镜像是二进制raw格式,则读取所述固件升级包中对应该分区镜像的数据,按照所述分区表描述文件中对应存储分区的存储位置进行写入;若当前分区镜像的数据小于所述分区表描述文件中分配给该镜像分区的实际大小,则将对应该存储分区的剩余内容全部强制赋值为0。本申请第二方面还提供了一种固件升级装置,所述固件升级装置用于执行如本申请第一方面所述的固件升级方法。区别于现有技术,通过本申请的固件升级方法和装置,能够实现将一个Android操作系统平台版本完全升级到另外一个大版本,它对legacy设备的整块存储介质完整地重新进行编程升级,从分区表到所有新版本平台的所有固件进行升级,升级后能够使legacy设备中的固件与launch设备完全一致,享受到所有launch设备能够享受到的所有创新技术体验。附图说明图1为本专利技术一具体实施方式所述固件升级方法的流程图;图2为本专利技术另一具体实施方式所述固件升级方法的流程图;图3为本专利技术另一具体实施方式所述固件升级方法的流程图;图4为本专利技术另一具体实施方式所述固件升级方法的流程图;图5为本发本文档来自技高网
...

【技术保护点】
1.一种固件升级方法,其特征在于,所述方法包括:/n制定固件升级包,并将所述固件升级包存储于预设存储介质中;所述固件升级包包括分区表描述文件;/n待升级设备进入升级模式,解析第一指令,开始固件升级;所述待升级设备包括固件分区,所述固件分区包括引导控制分区,所述第一指令被预先写入所述引导控制分区的第一位置;所述第一位置与第一路径信息相对应,所述第一路径信息为所述固件升级包在所述预设存储介质的路径信息;/n根据所述固件升级包在所述预设存储介质的路径信息读取所述固件升级包,根据所述分区表描述文件重新编程所述待升级设备的分区表,得到升级结果,并将所述升级结果和第二路径信息写入所述引导控制分区的第二位置;所述第二路径信息与所述第一路径信息相对应。/n

【技术特征摘要】
1.一种固件升级方法,其特征在于,所述方法包括:
制定固件升级包,并将所述固件升级包存储于预设存储介质中;所述固件升级包包括分区表描述文件;
待升级设备进入升级模式,解析第一指令,开始固件升级;所述待升级设备包括固件分区,所述固件分区包括引导控制分区,所述第一指令被预先写入所述引导控制分区的第一位置;所述第一位置与第一路径信息相对应,所述第一路径信息为所述固件升级包在所述预设存储介质的路径信息;
根据所述固件升级包在所述预设存储介质的路径信息读取所述固件升级包,根据所述分区表描述文件重新编程所述待升级设备的分区表,得到升级结果,并将所述升级结果和第二路径信息写入所述引导控制分区的第二位置;所述第二路径信息与所述第一路径信息相对应。


2.如权利要求1所述的固件升级方法,其特征在于,“将所述升级结果和第二路径信息写入所述引导控制分区的第二位置”之后还包括:
擦除所述第一位置预先写入的信息,并同步在所述第一位置写入升级标记指令和数据擦除指令,而后重启所述待升级设备。


3.如权利要求2述的固件升级方法,其特征在于,重启所述待升级设备后,所述方法还包括:
读取所述第一位置的升级标记指令,重新进入升级模式;
根据所述第一位置的数据擦除指令,擦除所述待升级设备的可读写区域;
读取所述第二位置的升级结果和第二路径信息,在指定的特定目录下创建一个升级成功标记文件,并将所述第二位置的升级结果和第二路径信息写入所述升级成功标记文件,清除当前所述第一位置和第二位置对应的所有信息。


4.如权利要求3所述的固件升级方法,其特征在于,在清除当前所述第一位置和第二位置对应的所有信息之后还包括:
进入升级成功的新固件系统,判断所述升级成功标记文件是否存在,若是则表示固件升级成功,根据用户的数据恢复指令执行所述可读写区域的数据恢复操作。


5.如权利要求1所述的固件升级方法,其特征在于,所述固件升级包还包括标识信息、分区数据和预设校验信息;在读取所述固件升级包之后还包括对读取的所述固件升级包进行校验,具体包括:
读取所述固件升级包的标识信息,将其与预设标识信息进行比较,若不一致则退出本次升级,若一致则读取所述固件升级包中的分区数据,并根据所述分区数据计算一个校验信息,将计算得到的校验信息与所述预设校验信息进行比较,若一致则继续固件升级,否则退出固件升级。<...

【专利技术属性】
技术研发人员:纪大峣
申请(专利权)人:瑞芯微电子股份有限公司
类型:发明
国别省市:福建;35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1