CN115981694A - 终端设备的ota升级方法及装置、可读存储介质、终端设备 - Google Patents
终端设备的ota升级方法及装置、可读存储介质、终端设备 Download PDFInfo
- Publication number
- CN115981694A CN115981694A CN202310074355.4A CN202310074355A CN115981694A CN 115981694 A CN115981694 A CN 115981694A CN 202310074355 A CN202310074355 A CN 202310074355A CN 115981694 A CN115981694 A CN 115981694A
- Authority
- CN
- China
- Prior art keywords
- partition
- partitions
- loaded
- target
- main
- 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.)
- Pending
Links
Images
Abstract
一种终端设备的OTA升级方法及装置、可读存储介质、终端设备,方法包括:确定第一类镜像数据和第二类镜像数据;采用第一类镜像数据对第一目标分区进行OTA升级,采用第二类镜像数据对其他目标分区进行OTA升级;根据升级结果,设置第一目标分区或第一主分区中为第一待加载分区,设置其他目标分区或其他主分区为其他待加载分区;对终端设备进行预重启,判断重启过程中加载的第一待加载分区与其他待加载分区的类型是否一致;如果不一致,则确认OTA升级存在异常;根据其他待加载分区的类型,变更第一待加载分区的类型与其他待加载分区的类型一致,然后对终端设备进行重启。上述方案有助于解决OTA升级异常时出现的终端设备变砖问题。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种终端设备的OTA升级方法及装置、可读存储介质、终端设备。
背景技术
在软件升级技术领域,虚拟AB(V-AB)分区方案推出后,得益于其具有的无缝升级等优点,很多终端设备制造厂商采用V-AB分区方式对终端设备的硬件存储空间进行软件双分区化。在V-AB分区方案中,可以将A分区命名为槽A(slot A),B分区命名为槽B(slot B)。在两个slot之间螺旋式切换升级,升级时终端设备运行在一个slot上,后台对另一个空闲slot进行升级。
具体而言,V-AB分区方案基于硬件存储空间中的用户数据分区(UserData Area,UDA)中的一部分分区,划分得到slot A分区(以下称为其他主分区)和slot B分区(以下称为其他目标分区)两大软件分区,其中,slot A分区包括uboot_a分区、dtbo_a分区等,slotB分区包括uboot_b分区、dtbo_b分区等;基于Boot硬件分区划分得到主SPL分区(以下称第一主分区)和SPL_BAK分区(以下称第一目标分区)两大软件分区,其中,主SPL分区是基于Boot0得到的,SPL_BAK分区是基于Boo1得到的。
在空中升级技术(Over-the-Air Technology,OTA)中,从服务端下载的升级包进行解包并验证后,采用二级程序加载(Second Program Loader,SPL)镜像数据,对Boot硬件分区上的主SPL分区(即,第一目标分区)或SPL_BAK分区(即,第一备份分区)进行升级,采用Userdata镜像数据对UserData硬件分区上的slot A分区(即,其他主分区)或slot B分区(即,其他目标分区)进行升级。
现有技术中,对于一些旧的不支持V-AB系统的处理器芯片,在OTA升级结束后,对终端设备进行重启过程中,无法实现对Boot硬件分区上的主SPL分区和SPL_BAK分区的选择加载。然而这种情况下,如果OTA升级过程中出现异常中断等情形,则很难保证SPL_BAK分区(第一目标分区)的程序版本与slot B分区(其他目标分区)的程序版本一致。例如,在OTA升级过程中,采用新版本的SPL镜像数据对SPL_BAK分区升级成功,而采用同一版本的UserData镜像数据对Slot B分区的升级失败,则在对终端设备重启过程中,会导致终端设备无法正常开机进入至OTA升级后的系统。由于无法进行分区的选择加载,从而尝试进入OTA升级后的系统失败的情况下,也无法回滚进入至OTA升级前的系统,从而出现终端设备变砖问题。
发明内容
本发明实施例解决的技术问题是如何实现在双分区化系统升级中,确认OTA升级异常时能回滚进入至升级前的系统,防止终端设备出现变砖问题。
为实现上述目的,本发明实施例提供一种终端设备的OTA升级方法,包括以下步骤:确定第一类镜像数据和第二类镜像数据;采用所述第一类镜像数据对第一目标分区进行OTA升级,以及采用所述第二类镜像数据对其他目标分区进行OTA升级;根据升级结果,设置所述第一目标分区或第一主分区中的一个为第一待加载分区,以及设置所述其他目标分区或其他主分区为其他待加载分区;对所述终端设备进行预重启,并判断重启过程中加载的所述第一待加载分区的类型与所述其他待加载分区的类型是否一致;如果所述第一待加载分区的类型与所述其他待加载分区的类型不一致,则确认所述OTA升级存在异常;根据所述其他待加载分区的类型,变更所述第一待加载分区的类型与所述其他待加载分区的类型一致,然后对所述终端设备进行重启。
可选的,所述第一类镜像数据为SPL镜像数据;所述第二类镜像数据为UserData镜像数据;所述第一主分区和第一目标分区是基于所述终端设备的Boot硬件分区的软件分区;所述其他主分区和其他目标分区是基于所述终端设备的UserData硬件分区的软件分区。
可选的,根据所述其他待加载分区的类型,变更所述第一待加载分区的类型与所述其他待加载分区的类型一致,然后对所述终端设备进行重启,包括:如果所述其他待加载分区为其他主分区,则将所述第一待加载分区从第一目标分区变更为第一主分区;对所述终端设备进行重启,以加载所述第一主分区和所述其他主分区,并回滚进入至OTA升级前的系统。
可选的,根据所述其他待加载分区的类型,变更所述第一待加载分区的类型与所述其他待加载分区的类型一致,然后对所述终端设备进行重启,包括:如果所述其他待加载分区为其他目标分区,则将所述第一待加载分区从第一主分区变更为第一目标分区;对所述终端设备进行重启,以加载所述第一目标分区和所述其他目标分区,并尝试进入至OTA升级后的系统。
可选的,所述方法还包括:还包括:如果设置的所述第一待加载分区为第一目标分区,且设置的所述其他待加载分区为其他目标分区,则对所述终端设备进行重启,以加载所述第一目标分区和所述其他目标分区,并尝试进入至OTA升级后的系统。
可选的,如果尝试进入至OTA升级后的系统失败,则循环对所述终端设备进行重启并尝试进入至所述OTA升级后的系统,直至重启次数达到预设阈值时,确认OTA升级失败;将所述第一待加载分区从第一目标分区变更为第一主分区,以及将所述其他待加载分区从其他目标分区变更为其他主分区;对所述终端设备进行再次重启,以加载所述第一主分区和所述其他主分区,并回滚进入至OTA升级前的系统。
可选的,所述根据升级结果,设置所述第一目标分区或第一主分区中的一个为第一待加载分区,以及设置所述其他目标分区或其他主分区为其他待加载分区,包括:如果所述第一目标分区以及所述其他目标分区均升级成功,则设置所述第一目标分区为所述第一待加载分区,设置所述其他目标分区为所述其他待加载分区;如果所述第一目标分区以及所述其他目标分区均升级失败,则设置所述第一主分区为所述第一待加载分区,设置所述其他主分区为所述其他待加载分区;如果所述第一目标分区升级成功以及所述其他目标分区升级失败,则设置所述第一目标分区为所述第一待加载分区,设置所述其他主分区为所述其他待加载分区;如果所述第一目标分区升级失败以及所述其他目标分区升级成功,则设置所述第一主分区为所述第一待加载分区,设置所述其他目标分区为所述其他待加载分区。
可选的,所述第一待加载分区具有分区指示信息;设置所述第一目标分区或第一主分区中的一个为第一待加载分区,包括:将所述第一待加载分区的分区指示信息赋值为第一数值或第二数值中的一个;其中,当赋值为所述第一数值时,所述第一待加载分区为所述第一主分区,当赋值为所述第二数值时,所述第一待加载分区为所述第一目标分区。
可选的,所述其他目标分区和所述其他主分区具有各自的加载优先级指示信息;设置所述其他目标分区或其他主分区为其他待加载分区,包括:对所述其他主分区的加载优先级指示信息赋值为第三数值,对所述其他目标分区的加载优先级指示信息赋值为第四数值;其中,当所述第三数值大于所述第四数值时,所述其他待加载分区为所述其他主分区,当所述第三数值小于所述第四数值时,所述其他待加载分区为所述其他目标分区;其中,所述加载优先级指示信息的值越大,重启过程中的加载优先级越高。
可选的,所述确定第一类镜像数据和第二类镜像数据包括:响应于接收到OTA升级指令,下载升级包;对所述升级包进行解析,以得到所述第一类镜像数据和所述第二类镜像数据。
本发明实施例还提供一种终端设备的OTA升级装置,包括:镜像数据确定模块,用于确定第一类镜像数据和第二类镜像数据;目标分区升级模块,用于采用所述第一类镜像数据对第一目标分区进行OTA升级,以及采用所述第二类镜像数据对其他目标分区进行OTA升级;加载分区设置模块,用于根据升级结果,设置所述第一目标分区或第一主分区中的一个为第一待加载分区,以及设置所述其他目标分区或其他主分区为其他待加载分区;分区加载模块,用于对所述终端设备进行预重启,并判断重启过程中加载的所述第一待加载分区的类型与所述其他待加载分区的类型是否一致;升级异常判断模块,用于如果所述第一待加载分区的类型与所述其他待加载分区的类型不一致,则确认所述OTA升级存在异常;加载分区变更模块,用于根据所述其他待加载分区的类型,变更所述第一待加载分区的类型与所述其他待加载分区的类型一致,然后对所述终端设备进行重启。
本发明实施例还提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述终端设备的OTA升级方法的步骤。
本发明实施例还提供一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述终端设备的OTA升级方法的步骤。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
本发明实施例提供一种终端设备的OTA升级方法,采用双分区化升级方案,具体而言,在OTA升级过程中,对第一目标分区和其他目标分区升级之后,根据升级结果,设置所述第一目标分区或第一主分区中的一个为第一待加载分区,以及设置所述其他目标分区或其他主分区为其他待加载分区;然后对所述终端设备进行预重启,并根据所述第一待加载分区的类型与所述其他待加载分区的类型是否一致,判断OTA升级是否存在异常(如果类型不一致,则确认OTA升级存在异常);然后变更所述第一待加载分区的类型与所述其他待加载分区的类型一致,并对所述终端设备进行重启。
在本发明实施例中,由于可以根据升级结果设置(或选择)待加载分区,进而基于所设置的待加载分区的类型不一致,确认OTA升级存在异常,然后变更待加载分区类型一致后对终端设备进行重启,例如,可以变更待加载分区均为主分区,从而重启后可以回滚进入至OTA升级前的系统,防止终端设备出现变砖问题。
进一步,如果设置的所述第一待加载分区为第一目标分区,且设置的所述其他待加载分区为其他目标分区,则对所述终端设备进行重启,以加载所述第一目标分区和所述其他目标分区,并尝试进入至OTA升级后的系统。在本发明实施例中,如果设置的第一待加载分区和其他待加载分区的类型均为目标分区,则可以确认对所述第一目标分区和所述其他目标分区的OTA升级是正常的。此种情况下,可以对所述终端设备进行重启,以加载所述第一目标分区和所述其他目标分区,并尝试进入至OTA升级后的系统。
进一步,如果尝试进入至OTA升级后的系统失败,则循环对所述终端设备进行重启并尝试进入至所述OTA升级后的系统,直至重启次数达到预设阈值时,确认OTA升级失败;将所述第一待加载分区从第一目标分区变更为第一主分区,以及将所述其他待加载分区从其他目标分区变更为其他主分区;对所述终端设备进行再次重启,以加载所述第一主分区和所述其他主分区,并回滚进入至OTA升级前的系统。
在本发明实施例中,即使对所述第一目标分区和所述其他目标分区的OTA升级均是正常的,后续进行的开机流程中也可能出现各种异常情况,导致无法成功进入至OTA升级后系统。此种情况下,通过上述重启机制,让终端设备有一定的尝试重启机会,可以避免因偶然因素导致的开机失败。只有多次尝试重启均是失败的,才确认OTA升级失败,然后变更待加载的分区(也即,将第一待加载分区变更为第一主分区,其他待加载分区变更为其他主分区),再对所述终端设备进行重启,以回滚进入至OTA升级前的系统,从而可以解决终端设备变砖问题。
附图说明
图1是本发明实施例中一种终端设备的OTA升级方法的流程图;
图2是图1中步骤S16的一种具体实施方式的流程图;
图3是图1中步骤S16的另一种具体实施方式的流程图;
图4是本发明实施例中另一种终端设备的OTA升级方法的部分流程图;
图5是本发明实施例中一种终端设备的OTA升级装置的结构示意图。
具体实施方式
如背景技术所述,在OTA升级过程中,从服务端下载的升级包进行解包并验证后,往往采用其中的SPL镜像数据对Boot硬件分区上的主SPL分区或SPL_BAK分区进行升级,采用其中的UserData镜像数据对UserData硬件分区上的slotA分区或slot B分区进行升级。
现有技术中,对于一些旧的不支持V-AB系统的处理器芯片,在OTA升级结束后,对终端设备进行重启过程中,无法实现对Boot硬件分区上的主SPL分区和SPL_BAK分区的选择加载。然而这种情况下,如果OTA升级过程中出现异常中断等情形,则很难保证SPL_BAK分区(第一目标分区)的程序版本与slot B分区(其他目标分区)的程序版本一致。例如,在OTA升级过程中,采用新版本的SPL镜像数据对SPL_BAK分区升级成功,而采用同一版本的UserData镜像数据对Slot B分区的升级失败,则在对终端设备重启过程中,会导致终端设备无法正常开机进入至OTA升级后的系统。由于无法进行分区的选择加载,从而尝试进入OTA升级后的系统失败的情况下,也无法回滚进入至OTA升级前的系统,从而出现终端设备变砖问题。
为解决上述技术问题,本发明实施例提供一种终端设备的OTA升级方法,具体包括:确定第一类镜像数据和第二类镜像数据;采用所述第一类镜像数据对第一目标分区进行OTA升级,以及采用所述第二类镜像数据对其他目标分区进行OTA升级;根据升级结果,设置所述第一目标分区或第一主分区中的一个为第一待加载分区,以及设置所述其他目标分区或其他主分区为其他待加载分区;对所述终端设备进行预重启,并判断重启过程中加载的所述第一待加载分区的类型与所述其他待加载分区的类型是否一致;如果所述第一待加载分区的类型与所述其他待加载分区的类型不一致,则确认所述OTA升级存在异常;根据所述其他待加载分区的类型,变更所述第一待加载分区的类型与所述其他待加载分区的类型一致,然后对所述终端设备进行重启。
由上,在本发明实施例中,在采用双分区化方案进行OTA升级过程中,由于可以根据升级结果设置(或选择)待加载分区,进而基于所设置的待加载分区的类型不一致,确认OTA升级存在异常,然后变更待加载分区类型一致后对终端设备进行重启,例如,可以变更待加载分区均为主分区,从而重启后可以回滚进入至OTA升级前的系统,防止终端设备出现变砖问题。
为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细说明。
参照图1,图1是本发明实施例中一种终端设备的OTA升级方法的流程图。所述方法可以应用于安装或配置有安卓系统且具有OTA升级功能的终端设备,所述终端设备例如可以包括手机、平板电脑、车载式终端、智能可穿戴式终端(例如,智能手表)等。
所述方法可以包括步骤S11至步骤S16:
步骤S11:确定第一类镜像数据和第二类镜像数据;
步骤S12:采用所述第一类镜像数据对第一目标分区进行OTA升级,以及采用所述第二类镜像数据对其他目标分区进行OTA升级;
步骤S13:根据升级结果,设置所述第一目标分区或第一主分区中的一个为第一待加载分区,以及设置所述其他目标分区或其他主分区为其他待加载分区;
步骤S14:对所述终端设备进行预重启,并判断重启过程中加载的所述第一待加载分区的类型与所述其他待加载分区的类型是否一致;
步骤S15:如果所述第一待加载分区的类型与所述其他待加载分区的类型不一致,则确认所述OTA升级存在异常;
步骤S16:根据所述其他待加载分区的类型,变更所述第一待加载分区的类型与所述其他待加载分区的类型一致,然后对所述终端设备进行重启。
在步骤S11的具体实施中,所述确定第一类镜像数据和第二类镜像数据可以包括:响应于接收到OTA升级指令,下载升级包;对所述升级包进行解析,以得到所述第一类镜像数据和所述第二类镜像数据。
其中,所述升级包可以是从OTA升级服务器端下载的更新版本的软件包。在对所述升级包进行解析之前,可以先对升级包进行签名校验,如果校验通过,再进行解析;如果校验失败,则可以直接停止升级过程。
在步骤S12的具体实施中,作为示例,所述第一类镜像数据可以为SPL镜像数据;所述第二类镜像数据可以为UserData数据;所述第一主分区和第一目标分区是基于所述终端设备的Boot硬件分区的软件分区;所述其他主分区和其他目标分区是基于所述终端设备的UserData硬件分区的软件分区。
其中,所述Boot硬件分区和UserData(UDA)硬件分区可以是所述终端设备的非易失性存储器/可擦除式存储器(Flash Memory)(相当于硬盘)上划分的两大主要硬件分区。
其中,UserData硬件分区是用户可以进行读写存储的区域,是嵌入式多媒体控制器(Embedded Multi Media Card,EMMC)中的核心存储区域,其空间大小约是整块EMMC空间大小的93%左右。其中,EMMC内部主要可以分为非易失性存储器(Flash Memory)、非易失性控制器(Flash Controller)以及主机接口(Host Interface)三大部分。
Boot硬件分区则是Flash Memory上的另一重要存储区域,其又可以被划分为Boot1和Boot2两个子硬件分区。Boot硬件分区在存储稳定性、可靠性、可擦除次数上都比UserData硬件分区要强,因此经常用来存储一些关键性数据(例如,存放SPL镜像数据)。
其中,基于Boot硬件分区划分得到的第一主分区(base分区)可以是升级前的系统数据所在分区(例如,可以包括主SPL分区),所述第一目标分区是对应于第一主分区的待升级的分区(target分区,例如,可以包括SPL_BAK分区)。基于UserData硬件分区划分得到的其他主分区可以包括:Sml_a分区、Uboot_a分区、Dtbo_a分区、Socko_a分区等等;所述其他目标分区可以包括Sml_b分区、Uboot_b分区、Dtbo_b分区、Socko_b分区等等。
在进行OTA升级的过程中,第一类镜像数据(例如,SPL镜像数据)通常会被写到第一目标分区中(例如,SPL_BAK分区等);第二类镜像数据(例如,UserData镜像数据)通常会被写到其他目标分区(例如,Sml_b分区、Uboot_b分区、Dtbo_b分区等等)。
需要说明的是,上述列举的分区及其名称仅作为非限制性示例,并不构成对实际应用中所述终端设备的具体分区数量和名称的限制。
在步骤S13的具体实施中,所述第一待加载分区可以是所述终端设备开机过程中先加载的分区,所述其他待加载分区可以是所述终端设备开机过程中后加载的分区。
进一步地,所述步骤S13中的升级结果以及所设置的第一待加载分区和其他待加载分区可以选自下述四种情形中的任一种。
情形一:如果所述第一目标分区以及所述其他目标分区均升级成功,则设置所述第一目标分区为所述第一待加载分区,设置所述其他目标分区为所述其他待加载分区;
情形二:如果所述第一目标分区以及所述其他目标分区均升级失败,则设置所述第一主分区为所述第一待加载分区,设置所述其他主分区为所述其他待加载分区;
情形三:如果所述第一目标分区升级成功以及所述其他目标分区升级失败,则设置所述第一目标分区为所述第一待加载分区,设置所述其他主分区为所述其他待加载分区;
情形四:如果所述第一目标分区升级失败以及所述其他目标分区升级成功,则设置所述第一主分区为所述第一待加载分区,设置所述其他目标分区为所述其他待加载分区。
在具体实施中,所述第一待加载分区可以具有分区指示信息,所述其他主分区和其他目标分区可以分别具有各自的加载优先级指示信息。
进一步地,所述步骤S13中设置所述第一目标分区或第一主分区中的一个为第一待加载分区,可以包括:将所述第一待加载分区的分区指示信息赋值为第一数值或第二数值中的一个;其中,当赋值为所述第一数值时,所述第一待加载分区为所述第一主分区,当赋值为所述第二数值时,所述第一待加载分区为所述第一目标分区。
进一步地,所述步骤S13中设置所述其他目标分区或其他主分区为其他待加载分区,可以包括:对所述其他主分区的加载优先级指示信息赋值为第三数值,对所述其他目标分区的加载优先级指示信息赋值为第四数值;其中,当所述第三数值大于所述第四数值时,所述其他待加载分区为所述其他主分区,当所述第三数值小于所述第四数值时,所述其他待加载分区为所述其他目标分区;其中,所述加载优先级指示信息的值越大,重启过程中的加载优先级越高(具体而言,所述加载优先级指示信息的值越大,重启过程中数值更大的加载优先级指示信息所属的分区优先加载)。
作为一个非限制性实施例,所述第一待加载分区的分区指示信息可以采用第一结构体进行存储,所述其他主分区的加载优先级指示信息和所述其他目标分区的加载优先级指示信息可以分别采用第二结构体和第三结构体进行存储。
例如,可以采用SPL镜像数据签名头SPLHeader结构体作为所述第一结构体,并采用所述第一结构体中的slot成员的值作为所述第一待加载分区的分区指示信息,其中,slot赋值为第一数值(例如,1)时,第一待加载分区为第一主分区,slot赋值为第二数值(例如,2)时,第一待加载分区为第一目标分区。
例如,可以采用MISC分区中存储的bootloader_control结构体数据来指示加载分区的槽位,通过该结构体数据中的slot_metadata结构体数组记录所述其他主分区和所述其他目标分的加载优先级指示信息(也可以称为加载信息)。为方便描述,将记录所述其他主分区的加载优先级指示信息的slot_metadata结构体,记为第二结构体;将记录所述其他目标分区的加载优先级指示信息的slot_metadata结构体,记为第三结构体。
具体地,可以采用所述第二结构体中的优先级(priority)成员的值作为所述其他主分区的加载优先级指示信息,采用所述第三结构体中的优先级(priority)成员的值作为所述其他目标分区的加载优先级指示信息。其中,当第二结构体中的priority成员的值大于第三结构体的priority成员的值时,则所述其他待加载分区为其他主分区,当第二结构体中的priority成员的值小于第三结构体的priority成员的值时,则所述其他待加载分区为其他目标分区。其中,priority成员的值越大,意味着启动加载过程中对应槽位分区的加载优先级越高。
在步骤S14的具体实施中,对所述终端设备进行预重启,并判断重启过程中加载的所述第一待加载分区的类型与所述其他待加载分区的类型是否一致。
在实际应用中,如前文所述,根据升级结果设置第一待加载分区和其他待加载分区的步骤,可以通过对分区指示信息或加载优先级指示信息进行赋值来实现,而赋值操作可能出现异常或失败,从而导致后续无法确认OTA升级是否异常。因此,通过对所述终端设备进行预重启,在重启过程中验证是否赋值成功,并进而判断第一待加载分区与其他待加载分区的类型是否一致。由此,可以对OTA升级是否存在异常进行准确、有效地判断。
在步骤S15的具体实施中,可以采用类型划分主分区与目标分区,如果设置的第一待加载分区和其他待加载分区均为主分区,或者,均为目标分区,则可以认为是同一类型;如果设置的第一待加载分区和其他待加载分区中的一个为主分区,另一个为目标分区,则可以认为是不同类型。
如果所述第一待加载分区的类型与所述其他待加载分区的类型不一致,则可以说明OTA升级过程存在异常,此种情况下,如果直接进行终端设备的重启,将可能会导致所述终端设备出现变砖问题。
在步骤S16的具体实施中,如果所述其他待加载分区是基于UserData硬件分区的其他主分区或其他目标分区,则往往需要根据所述其他待加载分区的类型,变更所述第一待加载分区为与所述其他待加载分区的类型一致,然后对所述终端设备进行重启。
参照图2,图2是图1中步骤S16的一种具体实施方式的流程图。本发明实施例中,所述步骤S16具体可以包括步骤S21至步骤S22。
在步骤S21中,如果所述其他待加载分区为其他主分区,则将所述第一待加载分区从第一目标分区变更为第一主分区。
在具体实施中,可以参照图1中步骤S13提供的实施例,将第一待加载分区的分区指示信息的值(例如,第一结构体中的slot成员的值)由第二数值变更为第一数值,从而将所述第一待加载分区从第一目标分区变更为第一主分区(例如,从SPL_BAK分区变更为主SPL分区)。
在步骤S22中,对所述终端设备进行重启,以加载所述第一主分区和所述其他主分区,并回滚进入至OTA升级前的系统。
参照图3,图3是图1中步骤S16的另一种具体实施方式的流程图。本发明实施例中,所述步骤S16可以包括步骤S31至步骤S32。
在步骤S31中,如果所述其他待加载分区为其他目标分区,则将所述第一待加载分区从第一主分区变更为第一目标分区。
在具体实施中,可以参照图1中步骤S13提供的实施例,将第一待加载分区的分区指示信息的值(例如,第一结构体中的slot成员的值)由第一数值变更为第二数值,从而将所述第一待加载分区从第一主分区变更为第一目标分区。
在步骤S32中,对所述终端设备进行重启,以加载所述第一目标分区和所述其他目标分区,并尝试进入至OTA升级后的系统。
进一步地,如果设置的第一待加载分区为第一目标分区,且设置的其他待加载分区为其他目标分区(说明对所述第一目标分区和其他目标分区的升级都是正常的),则可以对所述终端设备进行重启,以加载所述第一目标分区和所述其他目标分区,并尝试进入至OTA升级后的系统。
参照图4,图4是本发明实施例中另一种终端设备的OTA升级方法的部分流程图。所述另一种终端设备OTA升级方法可以包括图1中示出的步骤S11至步骤S14,还可以包括图3中示出的步骤S31至步骤S32,还可以包括步骤S41至步骤S44。其中,步骤S41至步骤S44可以在步骤S32之后执行。
在步骤S41中,判断尝试进入至OTA升级后的系统是否成功。
如果判断结果为否,也即,如果尝试进入至OTA升级后的系统失败,则可以继续执行步骤S42至步骤S44;如果判断结果为是,也即,如果尝试进入OTA升级后的系统成功,则可以确认对所述第一目标分区和其他目标分区的OTA升级成功。
在具体实施中,在确认对所述第一目标分区和其他目标分区的OTA升级成功之后,可以继续OTA升级中的后续流程,例如,可以采用升级成功的第一目标分区和其他目标分区中的更新版本数据,覆盖对应的第一主分区和其他主分区的旧版本数据,从而完成终端设备的整个系统的双分区化升级。
在步骤S42中,循环对所述终端设备进行重启并尝试进入至所述OTA升级后的系统,直至重启次数达到预设阈值时,确认OTA升级失败。
在具体实施中,所述预设阈值可以根据实际应用需要而设定,例如可以设置8次至15次之间的任一适当次数。
在步骤S43中,将所述第一待加载分区从第一目标分区变更为第一主分区,以及将所述其他待加载分区从其他目标分区变更为其他主分区。
在步骤S44中,对所述终端设备进行再次重启,以加载所述第一主分区和所述其他主分区,并回滚进入至OTA升级前的系统。
在本发明实施例中,即使对所述第一目标分区和所述其他目标分区的OTA升级均是正常的,后续进行的开机流程也可能出现各种异常情况(例如,Uboot或kernel过程存在加载异常情况),导致无法成功进入至OTA升级后系统。此种情况下,通过上述重启机制,让终端设备有一定的尝试重启机会,可以避免因偶然因素导致的开机失败。只有多次尝试重启均是失败的,才确认OTA升级失败,然后进行分区回滚(也即,将第一待加载分区变更为第一主分区,其他待加载分区变更为其他主分区),再对所述终端设备进行再次重启,以回滚进入至OTA升级前的系统,从而可以解决终端设备变砖问题。
在具体实施中,关于图4所示实施例所述另一种终端设备的OTA升级方法的更多详细内容,请参照前文及图1至图3中的相关描述,此处不再赘述。
图5是本发明实施例中一种终端设备的OTA升级装置的结构示意图。所述装置可以包括:
镜像数据确定模块51,用于确定第一类镜像数据和第二类镜像数据;
目标分区升级模块52,用于采用所述第一类镜像数据对第一目标分区进行OTA升级,以及采用所述第二类镜像数据对其他目标分区进行OTA升级;
加载分区设置模块53,用于根据升级结果,设置所述第一目标分区或第一主分区中的一个为第一待加载分区,以及设置所述其他目标分区或其他主分区为其他待加载分区;
分区加载模块54,用于对所述终端设备进行预重启,并判断重启过程中加载的所述第一待加载分区的类型与所述其他待加载分区的类型是否一致;
升级异常判断模块55,用于如果所述第一待加载分区的类型与所述其他待加载分区的类型不一致,则确认所述OTA升级存在异常;
加载分区变更模块56,用于根据所述其他待加载分区的类型,变更所述第一待加载分区的类型与所述其他待加载分区的类型一致,然后对所述终端设备进行重启。
在具体实施中,图5示出的终端设备的OTA升级装置可以对应于终端中具有数据处理功能的芯片;或者对应于终端中包括具有数据处理功能的芯片或芯片模组,或者对应于终端。
关于该终端设备的OTA升级装置的原理、具体实现和有益效果请参照前文及图1至图4示出的关于终端设备的OTA升级方法的相关描述,此处不再赘述。
本发明实施例还提供了一种可读存储介质,例如为计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述图1至图4所示的终端设备的OTA升级方法的步骤。所述计算机可读存储介质可以包括非挥发性存储器(non-volatile)或者非瞬态(non-transitory)存储器,还可以包括光盘、机械硬盘、固态硬盘等。
具体地,在本发明实施例中,所述处理器可以为中央处理单元(centralprocessing unit,简称CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,简称DSP)、专用集成电路(application specificintegrated circuit,简称ASIC)、现场可编程门阵列(field programmable gate array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,简称ROM)、可编程只读存储器(programmable ROM,简称PROM)、可擦除可编程只读存储器(erasable PROM,简称EPROM)、电可擦除可编程只读存储器(electricallyEPROM,简称EEPROM)或闪存。易失性存储器可以是随机存取存储器(random accessmemory,简称RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random access memory,简称RAM)可用,例如静态随机存取存储器(staticRAM,简称SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronousDRAM,简称SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,简称DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,简称ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,简称SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,简称DR RAM)。
本发明实施例还提供了一种终端设备,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述图1至图4所示的终端设备的OTA升级方法的步骤。所述终端设备可以包括但不限于配置或安装有安卓系统的手机、平板电脑、车载式终端、智能可穿戴式终端设备。
具体地,本申请实施例中的终端可以指各种形式的安装或配置有安卓系统的用户设备(user equipment,简称UE)、接入终端、用户单元、用户站、移动站、移动台(mobilestation,简称MS)、远方站、远程终端、移动设备、用户终端、终端设备(terminalequipment)、无线通信设备、用户代理或用户装置。终端设备还可以是蜂窝电话、无绳电话、会话启动协议(Session Initiation Protocol,简称SIP)电话、无线本地环路(WirelessLocal Loop,简称WLL)站、个人数字处理(Personal Digital Assistant,简称PDA)、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、车载设备、可穿戴设备,未来5G网络中的终端设备或者未来演进的公用陆地移动通信网络(Public LandMobile Network,简称PLMN)中的终端设备等,本申请实施例对此并不限定。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。例如,对于应用于或集成于芯片的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于芯片模组的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于芯片模组的同一组件(例如芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片模组内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于终端的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于终端内同一组件(例如,芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于终端内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,表示前后关联对象是一种“或”的关系。
本申请实施例中出现的“多个”是指两个或两个以上。
本申请实施例中出现的第一、第二等描述,仅作示意与区分描述对象之用,没有次序之分,也不表示本申请实施例中对设备个数的特别限定,不能构成对本申请实施例的任何限制。
需要指出的是,本实施例中各个步骤的序号并不代表对各个步骤的执行顺序的限定。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (13)
1.一种终端设备的OTA升级方法,其特征在于,包括:
确定第一类镜像数据和第二类镜像数据;
采用所述第一类镜像数据对第一目标分区进行OTA升级,以及采用所述第二类镜像数据对其他目标分区进行OTA升级;
根据升级结果,设置所述第一目标分区或第一主分区中的一个为第一待加载分区,以及设置所述其他目标分区或其他主分区为其他待加载分区;
对所述终端设备进行预重启,并判断重启过程中加载的所述第一待加载分区的类型与所述其他待加载分区的类型是否一致;
如果所述第一待加载分区的类型与所述其他待加载分区的类型不一致,则确认所述OTA升级存在异常;
根据所述其他待加载分区的类型,变更所述第一待加载分区的类型与所述其他待加载分区的类型一致,然后对所述终端设备进行重启。
2.根据权利要求1所述的方法,其特征在于,
所述第一类镜像数据为SPL镜像数据;
所述第二类镜像数据为UserData镜像数据;
所述第一主分区和第一目标分区是基于所述终端设备的Boot硬件分区的软件分区;
所述其他主分区和其他目标分区是基于所述终端设备的UserData硬件分区的软件分区。
3.根据权利要求1所述的方法,其特征在于,根据所述其他待加载分区的类型,变更所述第一待加载分区的类型与所述其他待加载分区的类型一致,然后对所述终端设备进行重启,包括:
如果所述其他待加载分区为其他主分区,则将所述第一待加载分区从第一目标分区变更为第一主分区;
对所述终端设备进行重启,以加载所述第一主分区和所述其他主分区,并回滚进入至OTA升级前的系统。
4.根据权利要求1所述的方法,其特征在于,根据所述其他待加载分区的类型,变更所述第一待加载分区的类型与所述其他待加载分区的类型一致,然后对所述终端设备进行重启,包括:
如果所述其他待加载分区为其他目标分区,则将所述第一待加载分区从第一主分区变更为第一目标分区;
对所述终端设备进行重启,以加载所述第一目标分区和所述其他目标分区,并尝试进入至OTA升级后的系统。
5.根据权利要求1所述的方法,其特征在于,还包括:
如果设置的所述第一待加载分区为第一目标分区,且设置的所述其他待加载分区为其他目标分区,则对所述终端设备进行重启,以加载所述第一目标分区和所述其他目标分区,并尝试进入至OTA升级后的系统。
6.根据权利要求4或5所述的方法,其特征在于,如果尝试进入至OTA升级后的系统失败,则循环对所述终端设备进行重启并尝试进入至所述OTA升级后的系统,直至重启次数达到预设阈值时,确认OTA升级失败;
将所述第一待加载分区从第一目标分区变更为第一主分区,以及将所述其他待加载分区从其他目标分区变更为其他主分区;
对所述终端设备进行再次重启,以加载所述第一主分区和所述其他主分区,并回滚进入至OTA升级前的系统。
7.根据权利要求1所述的方法,其特征在于,所述根据升级结果,设置所述第一目标分区或第一主分区中的一个为第一待加载分区,以及设置所述其他目标分区或其他主分区为其他待加载分区,包括:
如果所述第一目标分区以及所述其他目标分区均升级成功,则设置所述第一目标分区为所述第一待加载分区,设置所述其他目标分区为所述其他待加载分区;
如果所述第一目标分区以及所述其他目标分区均升级失败,则设置所述第一主分区为所述第一待加载分区,设置所述其他主分区为所述其他待加载分区;
如果所述第一目标分区升级成功以及所述其他目标分区升级失败,则设置所述第一目标分区为所述第一待加载分区,设置所述其他主分区为所述其他待加载分区;
如果所述第一目标分区升级失败以及所述其他目标分区升级成功,则设置所述第一主分区为所述第一待加载分区,设置所述其他目标分区为所述其他待加载分区。
8.根据权利要求1所述的方法,其特征在于,所述第一待加载分区具有分区指示信息;
设置所述第一目标分区或第一主分区中的一个为第一待加载分区,包括:
将所述第一待加载分区的分区指示信息赋值为第一数值或第二数值中的一个;
其中,当赋值为所述第一数值时,所述第一待加载分区为所述第一主分区,当赋值为所述第二数值时,所述第一待加载分区为所述第一目标分区。
9.根据权利要求1所述的方法,其特征在于,所述其他目标分区和所述其他主分区具有各自的加载优先级指示信息;
设置所述其他目标分区或其他主分区为其他待加载分区,包括:
对所述其他主分区的加载优先级指示信息赋值为第三数值,对所述其他目标分区的加载优先级指示信息赋值为第四数值;
其中,当所述第三数值大于所述第四数值时,所述其他待加载分区为所述其他主分区,当所述第三数值小于所述第四数值时,所述其他待加载分区为所述其他目标分区;
其中,所述加载优先级指示信息的值越大,重启过程中的加载优先级越高。
10.根据权利要求1所述的方法,其特征在于,所述确定第一类镜像数据和第二类镜像数据包括:
响应于接收到OTA升级指令,下载升级包;
对所述升级包进行解析,以得到所述第一类镜像数据和所述第二类镜像数据。
11.一种终端设备的OTA升级装置,其特征在于,包括:
镜像数据确定模块,用于确定第一类镜像数据和第二类镜像数据;
目标分区升级模块,用于采用所述第一类镜像数据对第一目标分区进行OTA升级,以及采用所述第二类镜像数据对其他目标分区进行OTA升级;加载分区设置模块,用于根据升级结果,设置所述第一目标分区或第一主分区中的一个为第一待加载分区,以及设置所述其他目标分区或其他主分区为其他待加载分区;
分区加载模块,用于对所述终端设备进行预重启,并判断重启过程中加载的所述第一待加载分区的类型与所述其他待加载分区的类型是否一致;
升级异常判断模块,用于如果所述第一待加载分区的类型与所述其他待加载分区的类型不一致,则确认所述OTA升级存在异常;
加载分区变更模块,用于根据所述其他待加载分区的类型,变更所述第一待加载分区的类型与所述其他待加载分区的类型一致,然后对所述终端设备进行重启。
12.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行权利要求1至10任一项所述终端设备的OTA升级方法的步骤。
13.一种终端设备,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,其特征在于,所述处理器运行所述计算机程序时执行权利要求1至10任一项所述终端设备的OTA升级方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310074355.4A CN115981694A (zh) | 2023-01-19 | 2023-01-19 | 终端设备的ota升级方法及装置、可读存储介质、终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310074355.4A CN115981694A (zh) | 2023-01-19 | 2023-01-19 | 终端设备的ota升级方法及装置、可读存储介质、终端设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115981694A true CN115981694A (zh) | 2023-04-18 |
Family
ID=85957922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310074355.4A Pending CN115981694A (zh) | 2023-01-19 | 2023-01-19 | 终端设备的ota升级方法及装置、可读存储介质、终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115981694A (zh) |
-
2023
- 2023-01-19 CN CN202310074355.4A patent/CN115981694A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7664923B2 (en) | Method and system for updating software | |
US20110283274A1 (en) | Firmware image update and management | |
US20100235617A1 (en) | System recovery method and embedded system with automatic recovery function | |
US7512777B2 (en) | Method and system for maintaining system management BIOS | |
JP2012069107A (ja) | 不揮発性メモリからの装置ブートアップ中のエラーの取り扱い | |
CN112631625B (zh) | 嵌入式设备的系统升级方法、装置及嵌入式设备 | |
CN112162773B (zh) | 差分升级方法及装置、存储介质、终端 | |
CN110874237A (zh) | 软件升级方法、装置、终端以及可读存储介质 | |
CN111522602B (zh) | 通信装置的启动方法 | |
US8516506B2 (en) | Method and system for restoring an application in a dynamically linked environment | |
CN113032183A (zh) | 系统管理方法、装置、计算机设备和存储介质 | |
CN111176671B (zh) | 系统自动连续更新的方法、移动终端和存储介质 | |
CN115951920A (zh) | 移动设备升级方法、装置、存储单元和移动设备 | |
CN115981694A (zh) | 终端设备的ota升级方法及装置、可读存储介质、终端设备 | |
CN112860287A (zh) | 系统程序升级方法、装置、计算机设备及存储介质 | |
CN113190244A (zh) | 无线模组升级的方法、装置、计算机设备和存储介质 | |
CN112667444A (zh) | 一种系统升级方法、存储介质及终端设备 | |
CN113590388B (zh) | 一种基于uboot的spl回滚方法及装置、存储介质、终端 | |
CN117270914B (zh) | 一种终端设备的系统升级方法、装置、设备和介质 | |
CN117177246B (zh) | 一种用于锁死电子设备的方法、电子设备及服务器 | |
CN116820508A (zh) | 用户数据存储方法、装置、系统、电子装置和存储介质 | |
CN116820841A (zh) | 终端设备的启动方法、装置、设备、介质及产品 | |
CN117055934A (zh) | 系统启动方法、装置、终端及存储介质 | |
CN115878204A (zh) | 一种操作系统的处理方法、装置、计算机设备和介质 | |
CN117171823A (zh) | 写保护动态配置方法及装置、计算机可读存储介质、终端 |
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 |