CN109634645B - 固件升级方法及终端 - Google Patents
固件升级方法及终端 Download PDFInfo
- Publication number
- CN109634645B CN109634645B CN201811625351.6A CN201811625351A CN109634645B CN 109634645 B CN109634645 B CN 109634645B CN 201811625351 A CN201811625351 A CN 201811625351A CN 109634645 B CN109634645 B CN 109634645B
- Authority
- CN
- China
- Prior art keywords
- partition
- upgrade package
- mirror image
- upgraded
- file system
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种固件升级方法,包括:确定升级包所要存储的目标分区;执行所述目标分区所存储的文件系统的备份操作,以将所述文件系统的镜像备份至备份分区;在所述终端执行重启操作时获取配置分区存储的状态参数;若所述配置分区的状态参数为下载完成状态,执行位于所述目标分区的升级包的解析操作,获取所述升级包所包含的待升级镜像;判断所述待升级镜像中是否包含所述目标分区的镜像;若是,在根据所述升级包所包含的待升级镜像更新对应存储分区内的镜像时,控制所述升级包中对应所述目标分区的镜像最后更新至所述目标分区内。本发明还提供了一种终端。本发明实施例有利于减少升级过程中占用空间过大的不足。
Description
技术领域
本发明涉及物联网技术领域,具体涉及一种固件升级方法及终端。
背景技术
物联网平台可运行操作系统,其中操作系统可包括多个存储于闪存(flash)不同分区内的模块。例如,操作系统包括启动模块、电源资源管理模块、安全模块、应用操作系统启动加载模块、内核模块(boot)、文件系统(system)及空口协议模块(modem)等,其中,文件系统及空口协议模块以文件系统的形式存储于闪存中,而其他的模块则以镜像方式存储于闪存内。在需要对操作系统进行升级,一般升级是通过FOTA(Firmware Over-The-Air,固件空中升级)方式进行升级。
然而,在进行FOTA升级时,系统需要进入复原(Recovery)模式,因此,系统在升级时需要增加复原模式下的内核模块及文件系统,还需要预留足够的存储空间以进行升级掉电保护。
发明内容
本发明实施例提供了一种固件升级方法及终端,有利于减少升级过程中占用空间过大的不足。
本发明第一方面提供了一种固件升级方法,应用于终端,包括:
确定升级包所要存储的目标分区;
执行所述目标分区所存储的文件系统的备份操作,以将所述文件系统的镜像备份至备份分区;
在所述终端执行重启操作时获取配置分区存储的状态参数;
若所述配置分区的状态参数为下载完成状态,执行位于所述目标分区的升级包的解析操作,获取所述升级包所包含的待升级镜像;
判断所述待升级镜像中是否包含所述目标分区的镜像;
若是,在根据所述升级包所包含的待升级镜像更新对应存储分区内的镜像时,控制所述升级包中对应所述目标分区的镜像最后更新至所述目标分区内。
本发明实施例第二方面提供一种终端,包括处理器及存储器,所述存储器内存储有计算机指令,所述计算机指令被所述处理器执行时实现如本发明第一方面任一方法中所描述的部分或全部步骤。
上述固件升级方法及终端通过将升级包所要存储的目标分区内的文件系统备份至备份分区内,可以去掉了传统的recovery模式,节省了recovery模式的内部模块和文件系统所占空间,有利于减少升级过程中占用空间过大的不足,也有利于节省升级的时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的一实施例中的固件更新方法的步骤流程图。
图2是本发明的实施例中的升级包的存储格式的示意图。
图3是图2中升级包内的头部信息的存储格式的示意图。
图4是发明的实施例中的终端的硬件结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
下面对本发明实施例进行详细介绍。
请参阅图1,所示为本发明的一实施例中的固件更新方法的步骤流程图,该固件更新方法包括如下步骤:
终端可为移动手机、平板电脑、个人数字助理(Personal Digital Assistant,PDA)、移动互联网设备(Mobile Internet Device,MID)、物联网设备等电子设备,本发明实施例对此不作限定。
现有的系统在升级时,在终端上电后,系统加载主启动引导模块(Primary bootloader,PLB),再加载次启动引导模块(Second boot loader,SBL)。之后,通过次启动引导模块加载电源资源管理模块、安全模块及应用操作系统启动加载模块,以及由应用操作系统启动加载模块加载复原模式下的内核模块等。由于文件系统(system模块)、空口协议模块(modem模块)是基于文件的升级方法,对文件系统、空口协议模块进行升级前需将文件系统、空口协议模块所在的分区挂载为可读写的文件系统。然而,当终端突然掉电时,可能会导致文件系统出现文件丢失和文件系统损坏情况,特别是将文件系统挂载为可读写时,若突然掉电,可能会出现文件系统损坏的情况的,继而导致终端无法正常开机。
为减少系统升级时可能导致文件系统损坏的不足,本实施例中的升级文件系统、空口协议模块则是基于镜像升级的方式,其中,镜像升级可表示为将镜像文件写入模块对应的分区内即可完成的升级。
步骤100,确定升级包所要存储的目标分区。
本实施例中,由于终端中的文件系统具有较大的存储空间,因此可以复用文件系统所在分区,将升级包直接存储于文件系统所在分区,此时,文件系统所在的分区即为目标分区。
例如,终端的存储装置(如闪存)可包括若干存储分区,每一存储分区用于存储对应的文件系统,例如,终端可包括第一至第九存储分区,其中,启动模块可存储于第一存储分区,电源资源管理模块可存储于第二存储分区,安全模块可存储于第三存储分区、应用操作系统启动加载模块可存储于第四存储分区,内核模块可存储于第五存储分区,文件系统可存储于第六存储分区,空口协议模块可存储于第七存储分区,第八存储分区可作为备份分区,用于存储目标分区的文件系统的镜像,其大小比目标分区的文件系统的镜像略大,第九存储分区作为配置信息分区,用于存储状态参数,其大小可为1个块(BLOCK)。
由于system是根文件系统和用户的文件系统所在分区,所以文件系统所在的存储分区(即system分区或是第六存储分区)一般会占用很大的空间,因此,下载的升级包可以复用该分区的整个空间。当下载升级包时,将system分区的文件系统挂载为只读,防止其它应用对其进行写操作,然后直接将下载的升级包存储在这个分区中,本实施例中,升级包的存储可使用FLASH读写接口进行存储,不是基于文件的方式进行存储。在其他实施例中,由于空口协议模块所在的存储分区亦具有较大的未被使用的空间,因此,亦可在将升级包存储在空口协议模块所在的存储分区内。
本实施例中,若升级包存储的目标分区为文件系统所在的存储分区时,可确定目标分区为第六存储分区;若升级包存储的目标分区为空口协议模块所在的存储分区时,可确定目标分区为第七存储分区。
步骤102,执行所述目标分区所存储的文件系统的备份操作,以将所述文件系统的镜像备份至备份分区。
本实施例中,为了对文件系统及空口协议模块进行更新,若升级包亦存储在文件系统所在的第六存储分区或空口协议模块所在的第七存储分区,此时,需要对第六存储分区或第七存储分区的文件系统的镜像进行备份操作。
例如,当确定第六存储分区作为目标分区时,则需要对第六存储分区的内容备份至备份分区内,如将第六存储分区的镜像备份至备份分区内;当确定第七存储分区作为目标分区时,则需要对第七存储分区的内容备份至备份分区内,如将第七存储分区的镜像备份至备份分区内。本实施例中,备份分区的大小需要略大于目标分区的文件系统的镜像的大小。另外,由于文件系统镜像比文件系统实际占用的空间会小很多,所以整个升级方案只需要额外增加一个略大于文件系统镜像的空间。如果目标分区大小比最大的升级包小,需要将目标分区调大一点,以保证目标分区比最大的升级包大。
步骤104,在所述终端执行重启操作时获取配置分区存储的状态参数。
配置分区存储的状态参数FOTA_FLAG可为触发升级状态、下载开始状态、下载完成状态、升级完成状态及清除状态中的一个。
在触发升级状态时,可将状态参数FOTA_FLAG设置为0x01,以表示可对终端进行升级操作。
在下载开始状态时,可将状态参数FOTA_FLAG设置为0x02,以表示可检测是否远端存储的升级包,并在远端存储了升级包时,下载升级包。
在下载完成状态时,可将状态参数FOTA_FLAG设置为0x03,以表示已将远端的升级包下载在本地;在升级完成状态时,可将状态参数FOTA_FLAG设置为0x04,以表示已完成各分区的升级操作。
在清除状态时,可将状态参数FOTA_FLAG设置为0xFF,以表示不用进行升级操作。
本实施例中,当存储装置为闪存时,配置分区所占的空间大小可为一个块(block),其中,块中的第一页可存储状态参数FOTA_FLAG的值。
为了使得电源资源管理模块、安全模块亦可进行升级,因此,需要在电源资源管理模块、安全模块加载之前执行升级操作。因此,本实施例中,当加载次启动引导模块后,在启动引导程序中,获取配置分区存储的状态参数,以根据配置分区存储的状态参数来执行升级操作,进而可对电源资源管理模块、安全模块加载等其他模块进行升级。
在本实施例中,当终端重启后,若配置分区的状态参数为触发升级状态,表示可对终端进行升级操作。此时,可挂载目标分区的文件系统为只读。由于文件系统所在的第六存储分区、空口协议模块所在的第七存储分区均为文件系统,因此,在升级中,为避免除下载升级包的其他应用程序对目标分区的写操作而导致升级失败,可控制目标分区处于只读状态,以禁止除下载升级包应用程序的其他应用程序对所述目标分区的写操作。在一实施例中,当存在除除载升级包应用程序的其他应用程序对目标分区进行的写操作时,控制所述应用程退出,以保证只有下载升级包的应用程序可以对目标分区进行写操作。
当配置分区中状态参数为触发升级状态时,开机后,下载升级包的应用程序可检查远端是否存在升级包。若远端存在升级包,则设置配置分区的状态参数为下载开始状态。若远端不存在升级包,则设置配置分区的状态参数为清除状态,以表示无需对终端执行升级操作,然后重启。
在一实施例中,可能存在在终端下载升级包时出现掉电的情况。为避免由终端升级时掉电而致使终端无法启动,在终端重启后,若检测到配置分区的状态参数为下载开始状态,可确定终端下载升级包时出现了掉电,此时,可将备份分区中的文件系统的镜像还原至目标分区,以实现系统的还原。例如,当目标分区为文件系统所在的第六存储分区时,若终端重启后检测到配置分区的状态参数为下载开始状态,由于第六存储分区的文件系统的镜像已备份在备份分区内,此时,只需将备份分区中的文件系统的镜像写入第六存储分区即可,之后再设置配置分区的状态参数为清除状态。如此,当终端再次重启时,由于文件系统已恢复,进而可避免在升级过程中由于掉电而导致终端无法启动的可能。
将升级包从远端下载至目标分区内,其中,升级包从所述目标分区的第一页开始存储。
请一并参阅图2,所示为本发明的实施例中的升级包的存储格式的示意图。
升级包40包括头部信息400及一个或多个待升级镜像402,其中,头部信息400所占的空间可为闪存中的一页,每一待升级镜像402所占的空间可为页的整数倍,不足部分补0xff。每一待升级镜像402依次存储,在进行升级时,可根据升级包40中待升级镜像402的存储顺序依次地进行升级。升级包可不包括所有存储分区的镜像,例如,当文件系统不需要更新或升级时,升级包中可不包含目标分区所对应的待升级镜像;若电源资源管理模块、安全模块需要待更新时,升级包中则可包含电源资源管理模块、安全模块的待升级镜像。
请一并参阅图3,所示为图2中升级包内的头部信息的存储格式的示意图。头部信息400包含了待升级镜像的数量img_cnt、每个待升级镜像的存储分区名img_name、每个待升级镜像大小img_size、每个待升级镜像存储的偏移地址img_addr及每个待升级镜像的CRC(Cyclic Redundancy Check,循环冗余校验)参考校验值img_crc,其结构体可描述如下:
当升级包40下载完成后,可对升级包40执行校验操作。
当升级包40校验操作通过后可设置配置分区的状态参数为下载完成状态。例如,可获取升级包40所包含的头部信息400,并执行升级包40中的每一待升级镜像402的校验操作,以获得每一待升级镜像402的对比校验值。判断是否存在至少一待升级镜像402的对比校验值与所述头部信息400中存储的对应待升级镜像的参考校验值不相同。当升级包40中每一待升级镜像402的对比校验值与所述头部信息400中存储的对应待升级镜像的参考校验值均相同时,表示升级包下载已完成,此时,设置配置分区的状态参数为下载完成状态。若存在至少一待升级镜像402的对比校验值与所述头部信息400中存储的对应待升级镜像的参考校验值不相同,控制终端执行重启操作。当终端重启时,由于配置分区中的状态参数为下载开始状态,此时,加载次启动模块会将备份区的文件系统镜像还原到分区中,然后正常开机后,运行下载升级包的应用程序重新下载。
步骤106,若所述配置分区的状态参数为下载完成状态,执行位于所述目标分区的升级包的解析操作,获取所述升级包所包含的待升级镜像。
本实施例中,可对图2中升级包进行解析操作,进而可得到升级包所包含的待升级镜像。
当配置分区的状态参数为下载完成状态时,表示存储在目标分区内的升级包40已通过校验操作,此时,可根据升级包对系统进行升级。如从目标分区的第一个页中读取升级包的头部信息,然后,根据头部信息将升级包的各个待升级镜像更新到对应文件系统所在分区,即可完成镜像升级。
在一实施例中,若在升级包下载时掉电时,表示升级包并未升级成功,此时,可重新根据下载包的头部描述进行升级。
步骤108,判断所述待升级镜像中是否包含所述目标分区的镜像,若是,执行步骤110;若否,执行步骤112。
由于目标分区中存储了升级包,因此,为了升级成功,对于升级包是否包含目标分区所对应的待升级镜像需要进行判断,若升级包包含目标分区所对应的待升级镜像,则需要调整待升级镜像升级的顺序;若升级包没有包含目标分区所对应的待升级镜像,则可根据控制升级包所包含的待升级镜像顺序升级对应存储分区内的镜像。
步骤110,在根据所述升级包所包含的待升级镜像更新对应存储分区内的镜像时,控制所述升级包中对应所述目标分区的待升级镜像最后更新至所述目标分区内。
在一实施例中,若目标分区为文件系统所在的第六存储分区,若升级包中包含了第六存储分区所对应的的待升级镜像,此时,需要最后执行将升级包中包含的第六存储分区所对应的待升级镜像的更新操作,如最后将第六存储分区所对应的镜像更新至第六存储分区。
本实施例中,当根据升级包中头部信息的顺序升级时,在执行目标分区的待升级镜像的升级时,可控制将升级包包含目标分区的待升级镜像更新至所述备份分区及目标分区,并设置配置分区的状态参数为升级完成状态。在一实施例中,可能存在在设置配置分区的状态参数为升级完成状态之前时掉电的情况,在终端重启后,会重新从步骤104开始执行,重新进行升级操作。
例如,升级包中包括三个连续存储的待升级镜像,分别为位于第一位置的第一待升级镜像(对应第一存储分区)、位于第二位置的第二待升级镜像(对应第六存储分区)及位于第三位置的第三待升级镜像(对应第二存储分区),其中第二待升级镜像为对应的目标分区的待升级镜像。此时,执行升级操作时,在第一时间,执行将第一待升级镜像升级对应至第一存储分区后,当在第二时间执行更新第二待升级镜像时,由于第二待升级镜像要更新的存储分区为目标分区,此时,可跳过第二待升级镜像的升级,执行第三待升级镜像的升级,如将第三待升级镜像更新至第二存储分区;当第三待升级镜像升级完成后,再最后执行第二待升级镜像的升级,如将第二待升级镜像更新至备份分区及第六存储分区内,如此,达到完成升级包升级的目标。
在一实施例中,可能存在将升级包包含目标分区的待升级镜像更新至所述备份分区,并设置配置分区的状态参数为升级完成状态时掉电的情况。为避免由终端升级时掉电而致使终端无法启动,在终端重启后,若检测到配置分区的状态参数为升级完成状态,可将备份分区中的目标分区的待升级镜像写入至目标分区。例如,当目标分区为文件系统所在的第六存储分区时,若终端重启后检测到配置分区的状态参数为升级完成状态,由于目标分区的待升级镜像已写入在备份分区内,此时,只需将备份分区中的目标分区所对应的待升级镜像写入第六存储分区即可,之后再设置配置分区的状态参数为清除状态。如此,当终端再重启时,由于文件系统已更新,进而可避免在升级过程中由于掉电而导致终端无法启动的可能。
步骤112,控制所述升级包所包含的待升级镜像顺序升级对应存储分区内的镜像。
在一实施例中,若目标存储区为文件系统所在的第六存储分区,若升级包中不包含第六存储分区所对应的的待升级镜像,此时,可根据控制升级包所包含的待升级镜像顺序升级对应存储分区内的镜像。
例如,升级包中包括三个连续存储的待升级镜像,分别为位于第一位置的第一待升级镜像(对应第一存储分区)、位于第二位置的第二待升级镜像(对应第四存储分区)及位于第三位置的第三待升级镜像(对应第二存储分区)。此时,执行升级操作时,在第一时间,执行将第一待升级镜像升级对应至第一存储分区;在第二时间,执行将第二待升级镜像升级对应至第四存储分区;在第三时间,执行将第三待升级镜像升级对应至第二存储分区。在其他实施例中,亦可不根据待升级镜像存储的存储的顺序来执行,如可随机选择待升级镜像的升级操作。
上述固件升级方法可节省空间升级的空间:只需要预留一个备份分区备份文件系统,以及一个极小的分区存储配置参数,相对对比传统的全包升级,可以去掉了recovery模式,节省了recovery模式的boot和文件系统所占空间,以及存储升级包和进行掉电保护的空间。另外,上述固件升级方法可防掉电丢失而带来系统的损坏的不足:模块均是基于镜像的升级方式,亦有利于节省升级的时间;当终端掉电时,可根据配置分区的状态参数来执行对应的操作,如将备份分区存储的备份恢复至原文件系统所在的分区,有利于避免因掉电而导致系统无法启动的不足。另外,上述固件升级方法可升级的多个模块更多:传统的升级方法是在recovery模式进行,无法对电源资源管理模块、安全模块等模块进行升级,因为如果对这几个模块升级,在异常断电后,就无法正常开机再次进入到recovery模式进行升级,而本申请则可对电源资源管理模块、安全模块升级,有利于提高系统升级的便利性。
请参阅图4,所示为本发明的实施例中的终端的硬件结构框图。如图4所示,所述终端可应用上述的各实施方式,下面对本发明所提供的终端50进行描述,终端50还可包括处理器500、存储装置502及显示屏504,以及存储在所述存储装置502中并可向所述处理器500上运行的计算机程序(指令),所述终端50还可以包括其他的硬件部分,例如按键、指纹采集模组、通信装置、传感器(如加速度传感器、霍尔传感器)等,在此不再赘述。所述处理器500可通过总线506与存储装置502及显示屏504进行数据交换。
所述处理器500可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述终端50的控制中心,利用各种接口和线路连接整个终端50的各个部分。
所述存储装置502可用于存储可执行程序代码和/或模块,所述处理器500通过运行或执行存储在所述存储装置502内的可执行程序代码和/或模块,以及调用存储在存储装置502内的数据,实现所述固件升级方法的各种功能。所述存储装置502可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等。此外,存储装置502可以包括高速随机存取存储装置,还可以包括非易失性存储装置,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储装置件、闪存器件、或其他易失性固态存储装置件。
所述显示屏504,可以显示用户界面(UI)或图形用户界面(GUI),包括照片、视频、聊天内容等界面,显示屏504还可以用作输入装置和输出装置,显示屏可以包括液晶显示器(LCD)、薄膜晶体管LCD(TFT-LCD)、有机发光二极管(OLED)触摸显示器、柔性触摸显示器、三维(3D)触摸显示器、墨水屏显示器、柔性触摸显示屏等中的至少一种。
所述处理器500通过读取存储装置502中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行前面任一实施例中终端所执行的固件升级方法。
处理器500用于确定升级包所要存储的目标分区。
本实施例中,升级包可存储于备份分区内,而由于终端中的文件系统具有较大的存储空间,因此,可将备份分区可复用文件系统所在的分区中的一部分空间,此时,文件系统所在的分区即为目标分区。
例如,终端的存储装置(如闪存)可包括若干存储分区,每一存储分区用于存储对应的文件系统,例如,终端可包括第一至第九存储分区,其中,启动模块可存储于第一存储分区,电源资源管理模块可存储于第二存储分区,安全模块可存储于第三存储分区、应用操作系统启动加载模块可存储于第四存储分区,内核模块可存储于第五存储分区,文件系统可存储于第六存储分区,空口协议模块可存储于第七存储分区,第八存储分区可作为备份分区,用于存储其大小可比要备份的文件系统的镜像略大,第九存储分区作为配置信息分区,用于存储状态参数,其大小可为1个块(BLOCK)。
由于system是根文件系统和用户的文件系统所在分区,所以文件系统所在的存储分区(即system分区或是第六存储分区)一般会占用很大的空间,因此,下载的升级包可以复用这个空间。当下载升级包时,处理器500将system分区的文件系统挂载为只读,防止其它应用对其进行写操作,然后直接将下载的升级包存储在这个分区中,本实施例中,升级包的存储可使用FLASH读写接口进行存储,不是基于文件的方式进行存储。在其他实施例中,由于空口协议模块所在的存储分区亦具有较大的未被使用的空间,因此,处理器500亦可在将升级包存储在空口协议模块所在的存储分区内。
本实施例中,若升级包存储的目标分区为文件系统所在的存储分区时,处理器500可确定目标分区为第六存储分区;若升级包存储的目标分区为空口协议模块所在的存储分区时,处理器500可确定目标分区为第七存储分区。
处理器500用于执行所述目标分区所存储的文件系统的备份操作,以将所述文件系统的镜像备份至备份分区。
本实施例中,为了对文件系统及空口协议模块进行更新,若升级包亦存储在文件系统所在的第六存储分区或空口协议模块所在的第七存储分区,此时,处理器500需要对第六存储分区或第七存储分区的文件系统的镜像进行备份操作。
例如,当确定第六存储分区作为目标分区时,处理器500则需要对第六存储分区的内容备份至备份分区内,如将第六存储分区的镜像备份至备份分区内;当确定第七存储分区作为目标分区时,处理器500则需要对第七存储分区的内容备份至备份分区内,如将第七存储分区的镜像备份至备份分区内。本实施例中,备份分区的大小可略大于目标分区的文件系统的镜像的大小。另外,由于文件系统镜像比文件系统实际占用的空间会小很多,所以整个升级方案只需要额外增加一个略大于文件系统镜像的空间。
处理器500用于在所述终端执行重启操作时获取配置分区存储的状态参数。
配置分区存储的状态参数FOTA_FLAG可为触发升级状态、下载开始状态、下载完成状态、升级完成状态及清除状态中的一个。
在触发升级状态时,可将状态参数FOTA_FLAG设置为0x01,以表示可对终端进行升级操作。
在下载开始状态时,可将状态参数FOTA_FLAG设置为0x02,以表示可检测是否远端存储的升级包,并在远端存储了升级包时,下载升级包。
在下载完成状态时,可将状态参数FOTA_FLAG设置为0x03,以表示已将远端的升级包下载在本地;在升级完成状态时,可将状态参数FOTA_FLAG设置为0x04,以表示已完成各分区的升级操作。
在清除状态时,可将状态参数FOTA_FLAG设置为0xFF,以表示不用进行升级操作。
本实施例中,当存储装置为闪存时,配置分区所占的空间大小可为一个块(block),其中,块中的第一页可存储状态参数FOTA_FLAG的值。
当配置分区中状态参数为触发升级状态,此时,处理器500可检测远端是否存在升级包。若远端存在升级包,处理器500则设置配置分区的状态参数为下载开始状态。若远端不存在升级包,处理器500则设置配置分区的状态参数为清除状态,以表示无需对终端执行升级操作。
在一实施例中,可能存在在终端下载升级包时出现掉电的情况。为避免由终端升级时掉电而致使终端无法启动,在终端重启后,若处理器500检测到配置分区的状态参数为下载开始状态,可确定终端下载升级包时出现了掉电,此时,处理器500可将备份分区中的文件系统的镜像还原至目标分区,以实现系统的还原。例如,当目标分区为文件系统所在的第六存储分区时,若终端重启后检测到配置分区的状态参数为下载开始状态,由于第六存储分区的文件系统的镜像已备份在备份分区内,此时,只需将备份分区中的文件系统的镜像写入第六存储分区即可,之后,再设置配置分区的状态参数为清除状态。如此,当终端再次重启时,由于文件系统已恢复,进而可避免在升级过程中由于掉电而导致终端无法启动的可能。处理器500还用于将升级包从远端下载至目标分区内,其中,升级包从所述目标分区的第一页开始存储。
当升级包40下载完成后,处理器500还用于对升级包40执行校验操作,当升级包40校验操作通过后,处理器500还用于可设置配置分区的状态参数为下载完成状态。处理器500还用于判断是否存在至少一待升级镜像402的对比校验值与所述头部信息400中存储的对应待升级镜像的参考校验值不相同。当升级包40中每一待升级镜像402的对比校验值与所述头部信息400中存储的对应待升级镜像的参考校验值均相同时,表示升级包下载已完成,此时,处理器500还用于设置配置分区的状态参数为下载完成状态。若存在至少一待升级镜像402的对比校验值与所述头部信息400中存储的对应待升级镜像的参考校验值不相同,处理器500还用于控制终端执行重启操作。当终端重启时,由于配置分区中的状态参数为下载开始状态,此时,加载次启动模块会将备份区的文件系统镜像还原到分区中,然后正常开机后,运行下载升级包的应用程序重新下载。
若所述配置分区的状态参数为下载完成状态,处理器500还用于执行位于所述目标分区的升级包的解析操作,获取所述升级包所包含的待升级镜像。
当配置分区的状态参数为下载完成状态时,表示存储在目标存储区内的升级包40已通过校验操作,此时,处理器500可根据升级包对系统进行升级。如从目标分区的第一个页中读取升级包的头部信息,然后,根据头部信息将升级包的各个待升级镜像更新到对应文件系统所在分区,即可完成镜像升级。
在一实施例中,在重启中确定配置分区的状态参数为下载完成状态,表示终端在升级包下载时掉电,即处理器500确定升级包并未升级成功,此时,处理器500可重新根据下载包的头部描述进行升级。
处理器500还用于判断所述待升级镜像中是否包含所述目标分区的镜像,若是,处理器500还用于在根据所述升级包所包含的待升级镜像更新对应存储分区内的镜像时,控制所述升级包中对应所述目标分区的待升级镜像最后更新至所述目标分区内;若否,处理器500还用于控制所述升级包所包含的待升级镜像顺序更新对应存储分区内的镜像。
由于目标分区中存储了升级包,因此,为了升级成功,对于升级包是否包含目标分区所对应的待升级镜像需要进行判断,若升级包包含目标分区所对应的待升级镜像,则需要调整待升级镜像升级的顺序;若升级包没有包含目标分区所对应的待升级镜像,则可根据控制升级包所包含的待升级镜像顺序升级对应存储分区内的镜像。
上述终端在升级时可节省空间升级的空间:只需要预留一个备份分区备份文件系统,以及一个极小的分区存储配置参数相对对比传统的全包升级,可以去掉了recovery模式,节省了recovery模式的boot和文件系统所占空间,以及存储升级包和进行掉电保护的空间。另外,上述终端在升级时可防掉电丢失而导致系统的损坏的不足:模块均是基于镜像的升级方式,亦有利于节省升级的时间;当终端掉电时,可根据配置分区的状态参数来执行对应的操作,如将备份分区存储的备份恢复至原文件系统所在的分区,有利于避免因掉电而导致系统无法启动的不足。另外,上述终端可升级的多个模块更多:传统的升级方法是在recovery模式进行,无法对电源资源管理模块、安全模块等模块进行升级,因为如果对这几个模块升级,在异常断电后,就无法正常开机再次进入到recovery模式进行升级,而本申请则可对电源资源管理模块、安全模块升级,有利于提高系统升级的便利性。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种固件升级方法,应用于终端,其特征在于,所述固件升级方法包括:
确定升级包所要存储的目标分区,其中,所述目标分区为文件系统模块所在的存储分区或者空口协议模块所在的存储分区;
执行所述目标分区所存储的文件系统的备份操作,以将所述文件系统的镜像备份至备份分区;
在所述终端执行重启操作时获取配置分区存储的状态参数;
若所述配置分区的状态参数为下载完成状态,执行位于所述目标分区的升级包的解析操作,获取所述升级包所包含的待升级镜像;
判断所述待升级镜像中是否包含所述目标分区的镜像;
若是,在根据所述升级包所包含的待升级镜像更新对应存储分区内的镜像时,控制所述升级包中对应所述目标分区的镜像最后更新至所述目标分区内。
2.如权利要求1所述的固件升级方法,其特征在于,所述判断所述待升级镜像中是否包含所述目标分区的镜像之后,还包括:
当所述待升级镜像中不包含所述目标分区的镜像时,控制所述升级包所包含的待升级镜像顺序更新对应存储分区内的镜像。
3.如权利要求1所述的固件升级方法,其特征在于,所述备份分区位于文件系统模块所在的第一存储分区或空口协议模块所在的第二存储分区,当所述备份分区位于所述第一存储分区时,确定所述目标分区为所述第一存储分区;当所述备份分区位于所述第二存储分区时,确定所述目标分区为所述第二存储分区。
4.如权利要求1所述的固件升级方法,其特征在于,所述获取配置分区存储的状态参数之后,还包括:
若所述配置分区的状态参数为触发升级状态,挂载所述目标分区的文件系统为只读状态;
检测远端是否存在所述升级包;
若是,设置所述配置分区的状态参数为下载开始状态,下载所述升级包至所述目标分区内,其中,所述升级包从所述目标分区的第一页开始存储;
若否,设置所述配置分区的状态参数为清除状态。
5.如权利要求4所述的固件升级方法,其特征在于,所述挂载所述目标分区的文件系统为只读状态之后,包括:
判断是否存在除下载升级包应用程序的其他应用程序对所述目标分区进行写操作;
若是,控制所述除下载升级包应用程序的其他应用程序退出。
6.如权利要求4所述的固件升级方法,其特征在于,所述下载所述升级包至所述目标分区内之后,还包括:
执行所述升级包的校验操作,包括:
获取所述升级包所包含的头部信息;
执行所述升级包中的每一待升级镜像的校验操作,以获得每一待升级镜像的对比校验值;
判断是否存在至少一待升级镜像的对比校验值与所述头部信息中存储的对应待升级镜像的参考校验值不相同;
若否,设置所述配置分区的状态参数为下载完成状态;
若是,控制所述终端执行重启操作。
7.如权利要求1至6中任意一项所述的固件升级方法,其特征在于,所述获取配置分区存储的状态参数之后,还包括:
若所述配置分区的状态参数为下载开始状态,控制所述备份分区内存储的文件系统的镜像的备份写入所述目标分区,并设置所述配置分区的状态参数为清除状态。
8.如权利要求1至6中任意一项所述的固件升级方法,其特征在于,所述控制所述升级包中对应所述文件系统的镜像最后更新至所述目标分区内,包括:
若所述配置分区的状态参数为下载完成状态,控制将所述升级包包含所述文件系统的镜像更新至所述备份分区,并设置所述配置分区的状态参数为升级完成状态。
9.如权利要求8所述的固件升级方法,其特征在于,所述控制将所述升级包包含所述文件系统的镜像更新至所述备份分区之后,还包括:
控制所述备份分区内存储所述目标分区的镜像更新所述目标分区;
设置所述配置分区的状态参数为清除状态。
10.一种终端,包括处理器及存储器,其特征在于,所述存储器内存储有计算机指令,所述计算机指令被所述处理器执行时实现如权利要求1至9中任意一项所述的固件升级方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811625351.6A CN109634645B (zh) | 2018-12-28 | 2018-12-28 | 固件升级方法及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811625351.6A CN109634645B (zh) | 2018-12-28 | 2018-12-28 | 固件升级方法及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109634645A CN109634645A (zh) | 2019-04-16 |
CN109634645B true CN109634645B (zh) | 2022-03-22 |
Family
ID=66079082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811625351.6A Active CN109634645B (zh) | 2018-12-28 | 2018-12-28 | 固件升级方法及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109634645B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134426A (zh) * | 2019-04-18 | 2019-08-16 | 深圳市致宸信息科技有限公司 | 一种嵌入式系统升级方法、装置及终端设备 |
CN110780890B (zh) * | 2019-10-24 | 2023-06-06 | 百度在线网络技术(北京)有限公司 | 系统升级方法、装置、电子设备和介质 |
CN111427718B (zh) * | 2019-12-10 | 2024-01-23 | 杭州海康威视数字技术股份有限公司 | 文件备份方法、恢复方法及装置 |
CN111045712A (zh) * | 2019-12-17 | 2020-04-21 | 杭州涂鸦信息技术有限公司 | 一种具有备份功能的单系统升级方法及系统 |
CN113225729B (zh) * | 2020-01-21 | 2022-07-12 | 荣耀终端有限公司 | 空中下载技术ota升级的方法、设备及可读存储介质 |
CN111522566B (zh) * | 2020-04-23 | 2023-08-01 | Oppo(重庆)智能科技有限公司 | 一种系统升级方法、终端及存储介质 |
CN111694589B (zh) * | 2020-06-15 | 2023-09-29 | Oppo(重庆)智能科技有限公司 | 升级包生成方法、装置、服务器及计算机可读存储介质 |
CN111813753A (zh) * | 2020-06-29 | 2020-10-23 | 深圳市元征科技股份有限公司 | 保存文件的方法、恢复文件的方法、装置及终端设备 |
CN111857777B (zh) * | 2020-07-16 | 2024-02-27 | 南方电网数字电网科技(广东)有限公司 | 基于双芯智能电表的系统更新方法、装置和计算机设备 |
CN112148337A (zh) * | 2020-09-09 | 2020-12-29 | 杭州涂鸦信息技术有限公司 | 一种固件升级方法及装置 |
CN112463191B (zh) * | 2020-11-26 | 2024-10-22 | 北京沃东天骏信息技术有限公司 | 一种文件更新方法及装置、设备、存储介质 |
CN112860291B (zh) * | 2021-02-08 | 2023-05-12 | 杭州涂鸦信息技术有限公司 | 固件升级方法及装置 |
CN117971283B (zh) * | 2024-03-28 | 2024-07-19 | 深流微智能科技(深圳)有限公司 | 一种图形处理器的固件升级方法、终端设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103546809A (zh) * | 2012-07-13 | 2014-01-29 | 中兴通讯股份有限公司 | 机顶盒的软件升级方法及装置 |
CN103677947A (zh) * | 2014-01-03 | 2014-03-26 | 深圳英飞拓科技股份有限公司 | 基于linux的设备双系统保护及升级方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7493314B2 (en) * | 2005-01-10 | 2009-02-17 | Cyberlink Corp. | System and method for providing access to computer files across computer operating systems |
-
2018
- 2018-12-28 CN CN201811625351.6A patent/CN109634645B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103546809A (zh) * | 2012-07-13 | 2014-01-29 | 中兴通讯股份有限公司 | 机顶盒的软件升级方法及装置 |
CN103677947A (zh) * | 2014-01-03 | 2014-03-26 | 深圳英飞拓科技股份有限公司 | 基于linux的设备双系统保护及升级方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109634645A (zh) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109634645B (zh) | 固件升级方法及终端 | |
US9507604B2 (en) | Boot method and boot system | |
US8423991B2 (en) | Embedded network device and firmware upgrading method | |
US9256744B2 (en) | System-on-chip and booting method thereof | |
US7512777B2 (en) | Method and system for maintaining system management BIOS | |
EP2375323A1 (en) | Firmware image update and management | |
CN103365696B (zh) | Bios镜像文件获取方法及装置 | |
US20100180108A1 (en) | Electronic device and method for secure operating system update in embedded system | |
CN102722394B (zh) | 一种嵌入式设备的启动升级方法 | |
CN104123153A (zh) | 用于使用usb升级固件的装置与方法 | |
CN107678762B (zh) | 一种系统版本升级方法及装置 | |
CN109408122B (zh) | 一种设备启动方法、电子设备和计算机存储介质 | |
WO2019080840A1 (zh) | 固件修复方法及装置 | |
CN113238790B (zh) | 基于sd卡和eeprom的固件程序更新方法及系统 | |
US11157264B2 (en) | Electronic device and method for controlling update of electronic device | |
CN109582332B (zh) | 互联网摄像机的系统升级方法及装置 | |
CN112631625A (zh) | 嵌入式设备的系统升级方法、装置及嵌入式设备 | |
CN111045712A (zh) | 一种具有备份功能的单系统升级方法及系统 | |
US20140258699A1 (en) | Boot fault tolerant device and method thereof | |
CN113138791A (zh) | 基于嵌入式系统的升级处理方法、装置及电子设备 | |
CN115237647A (zh) | 固件异常修复方法、装置、电子设备及计算机存储介质 | |
CN111381892A (zh) | 一种数据处理方法、装置、设备和机器可读介质 | |
CN115145650A (zh) | 信息处理装置、存储介质及信息处理方法 | |
EP1710697A1 (en) | Method and apparatus for executing application in system having NAND flash memory | |
CN115951920A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |