CN112925679A - 固件升级方法、非易失性存储器、计算机存储介质及终端 - Google Patents
固件升级方法、非易失性存储器、计算机存储介质及终端 Download PDFInfo
- Publication number
- CN112925679A CN112925679A CN202110282696.1A CN202110282696A CN112925679A CN 112925679 A CN112925679 A CN 112925679A CN 202110282696 A CN202110282696 A CN 202110282696A CN 112925679 A CN112925679 A CN 112925679A
- Authority
- CN
- China
- Prior art keywords
- firmware
- block
- upgraded
- partition
- check
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种固件升级方法、非易失性存储器、计算机存储介质及终端,其中,该方法包括:控制易失性存储器获取待升级的固件;控制第一区块和所述第二区块的校验区读取待升级的固件;控制第二区块的校验区对待升级的固件进行比对;在比对失败的情况下,控制备份区中备份的未升级前的固件回滚到第一区块中。由此,本申请通过在非易失性存储器中的第二区块设置备份区和校验区,在固件升级失败的情况下,控制备份区中备份的原固件回滚到第一区块中,从而有效避免了终端在固件升级失败时,运行第一区块中的固件可能导致的死机需要回厂返修等情况。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种固件升级方法、非易失性存储器、计算机存储介质及终端。
背景技术
固件一般存储于终端中的电可擦除只读存储器(Electrically ErasableProgrammable ROM,EEPROM)或闪存(Flash EEPROM Memory,FLASH)中,一般可由终端通过空中下载技术(Over-the-Air Technology,OTA)进行升级。终端在升级的过程中可能存在断电、不正常操作以及病毒等情况导致的死机或损坏等问题。
目前,厂商针对这些在升级过程中出现故障的终端只能进行召回或到用户处进行维修,这样不仅增加了厂商额外的成本,也给用户造成了不便,降低了用户体验。
发明内容
本申请实施例提供了一种固件升级方法、非易失性存储器、计算机存储介质及终端,以避免终端在固件升级过程中出现故障时需要返厂维修等情况,这样不仅减小了厂商增加额外成本的风险,还提升了用户体验。
第一方面,本申请实施例提供了一种固件升级方法,所述固件升级方法用于终端,所述终端包括易失性存储器和非易失性存储器,所述非易失性存储器包括第一区块和第二区块,所述第二区块包括备份区和校验区;其中,所述备份区用于备份未升级前的固件;所述方法包括:
控制所述易失性存储器获取待升级的固件;
控制所述第一区块和所述第二区块的校验区读取所述待升级的固件;
控制所述第二区块的校验区对所述待升级的固件进行比对;
在比对失败的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中。
由此,本申请实施例可以通过在非易失性存储器中的第二区块设置备份区和校验区,在固件升级失败的情况下,控制备份区中备份的原固件回滚到第一区块中,从而有效避免了终端在固件升级失败时,运行第一区块中的固件可能导致的死机需要回厂返修等情况。
在一种可能的实现方式中,所述控制所述第二区块的校验区对所述待升级的固件进行比对,包括:控制所述第二区块的校验区基于预设的校验码和/或预设的封包格式对所述待升级的固件进行比对。
由此,本申请实施例可以利用预设的校验码和/或预设的封包格式对待升级的固件的完整性及正确性进行验证,以确保终端可以正常运行第一区块中存储的待升级的固件程序。
在一种可能的实现方式中,所述预设的校验码包括预设的多个分区校验码;所述校验区包括多个校验分区;其中,各分区校验码与各校验分区一一对应;
所述控制所述第二区块的校验区基于预设的校验码和/或预设的封包格式对所述待升级的固件进行比对,包括:
基于所述预设的封包格式对位于所述各校验分区的待升级的固件的以下至少一项进行比对:报头格式、报尾格式、报文格式;和/或,
基于所述各分区校验码对位于所述各校验分区的待升级的固件进行比对。
由此,本申请实施例可以利用报头格式、报尾格式、报文格式;和/或,各分区校验码对处于不同校验分区的待升级的固件进行验证,以确保处于不同校验分区的待升级的固件的完整性以及正确性,从而使得终端中的各组成部分可以正常运行待升级的固件。
在一种可能的实现方式中,所述基于所述各分区校验码对位于所述各校验分区的待升级的固件进行比对,包括:
基于预设的算法对位于所述各校验分区的待升级的固件进行运算,获得各校验分区的第一运算码;
将同一校验分区的第一运算码与分区校验码进行比对;
所述在比对失败的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中,包括:在任意一个校验分区的第一运算码与分区校验码不匹配的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中。
由此,本申请实施例可以利用预设的算法对位于各校验分区的待升级的固件进行运算,以将同一校验分区的第一运算码与分区校验码进行比对,从而确保位于各校验分区的待升级的固件的正确性。
在一种可能的实现方式中,所述基于所述各分区校验码对位于所述各校验分区的待升级的固件进行比对,包括:
基于所述各分区校验码对所述各校验分区的待升级的固件进行运算,获得各校验分区的第二运算码;
控制所述各校验分区的第二运算码与0进行比对;
所述在比对失败的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中,包括:在至少一个校验分区的第二运算码不为0的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中。
由此,本申请实施例可以利用基于各分区校验码对各校验分区的待升级的固件进行运算,以控制各校验分区的第二运算码与0进行比对,从而确保位于各校验分区的待升级的固件的正确性。
在一种可能的实现方式中,所述第一区块包括多个分区;所述第二区块中的备份区包括多个分区;其中,所述第一区块中的各分区与所述备份区的各分区一一对应;
所述在比对失败的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中,包括:在比对失败的情况下,控制所述备份区的各分区中备份的未升级前的固件回滚到所述第一区块中的各分区中。
由此,本申请实施例可以在比对失败的情况下,控制备份区的各分区中备份的未升级前的固件回滚到第一区块中的各分区中,以避免终端在固件升级失败时,运行第一区块中各分区的固件可能导致的死机等情况。
在一种可能的实现方式中,所述第一区块包括多个分区;所述第二区块中的备份区包括多个分区;其中,所述第一区块中的各分区与所述备份区的各分区一一对应;
所述在比对失败的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中,包括:
控制所述备份区的各分区中备份的未升级前的固件与所述第一区块中各分区的待升级的固件进行比对;
在所述备份区的各分区中备份的未升级前的固件与所述第一区块中各分区的待升级的固件之间存在不匹配的情况下,确定至少一个不匹配的分区,控制所述至少一个不匹配的分区对应的所述备份区的分区中备份的未升级前的固件回滚到对应的第一区块的分区中。
由此,本申请实施例可以在比对失败的情况下,控制备份区的各分区中备份的未升级前的固件与第一区块中各分区的待升级的固件进行比对,以确定至少一个不匹配的分区,从而控制至少一个不匹配的分区对应的备份区的分区中备份的未升级前的固件回滚到对应的第一区块的分区中,这样不仅可以有效提高终端的回滚效率,还改善了用户体验。
在一种可能的实现方式中,所述方法还包括:在比对成功的情况下,控制所述处理器运行读取到的所述第一区块中的待升级的固件在所述终端中运行,以完成对所述终端中的固件的升级。
由此,本申请实施例可以在待升级的固件比对成功的情况下,控制第一区块中的待升级的固件,实现对终端中的固件的升级。
在一种可能的实现方式中,所述在比对成功的情况下,控制所述第一区块中的待升级的固件在所述终端中运行,以完成对所述终端中的固件的升级之后,所述方法还包括:控制所述第一区块将升级后的固件备份到对应的所述第二区块的备份区中。
由此,本申请实施例可以将完成升级后的固件备份到对应的第二区块的备份区,以确保终端在下次固件升级失败的情况下,可以使备份区中的固件回滚到第一区块。
第二方面,本申请实施例提供了一种非易失性存储器,所述非易失性存储器与易失性存储器相连,所述非易失性存储器和所述易失性存储器用于终端,其中,
所述非易失性存储器包括第一区块和第二区块;其中,所述第一区块用于存储所述待升级的固件;
所述第二区块包括备份区和校验区;其中,所述备份区用于备份未升级前的固件,所述校验区用于对所述待升级的固件进行比对;
所述第一区块和所述第二区块中的校验区分别与所述易失性存储器相连;所述第二区块中的备份区与所述第一区块相连。
由此,本申请实施例可以通过在非易失性存储器中的第二区块设置备份区和校验区,以使终端在固件升级失败的情况下,控制备份区中备份的原固件回滚到第一区块中,从而有效避免了终端在固件升级失败时,运行第一区块中的固件可能导致的死机需要回厂返修等情况。
第三方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。
第四方面,本申请实施例提供一种终端,可包括:处理器和存储器;
其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步骤。
本申请一些实施例提供的技术方案带来的有益效果至少包括:
本申请实施例控制易失性存储器获取待升级的固件;控制第一区块和所述第二区块的校验区读取待升级的固件;控制第二区块的校验区对待升级的固件进行比对;在比对失败的情况下,控制备份区中备份的未升级前的固件回滚到第一区块中。由此,本申请通过在非易失性存储器中的第二区块设置备份区和校验区,在固件升级失败的情况下,控制备份区中备份的原固件回滚到第一区块中,从而有效避免了终端在固件升级失败时,运行第一区块中的固件可能导致的死机需要回厂返修等情况。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种终端结构示意图;
图2为本申请实施例提供的一种固件升级方法的应用场景图;
图3为本申请实施例提供的一种固件升级方法的系统架构图;
图4为本申请实施例提供的一种固件升级方法的流程示意图;
图5为本申请实施例提供的一种固件升级方法的实施例中的校验分区图;
图6为本申请实施例提供的另一固件升级方法的流程示意图;
图7为本申请实施例提供的一种固件升级方法中固件的回滚过程示意图;
图8为本申请实施例提供的又一固件升级方法中固件的回滚过程示意图;
图9为本申请实施例提供的一种非易失性存储器的结构示意图;
图10为本申请实施例提供的终端的结构示意图。
具体实施方式
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
图1示例性示出了基于本申请实施例提供的终端的结构示意图,本申请实施例提供的固件升级方法可以应用在终端中。如图1所示,本申请实施例中的存储器可以包括易失性存储器和非易失性存储器,非易失性存储器可以包括第一区块和第二区块,第二区块可以包括备份区和校验区。
在本申请实施例中,易失性存储器可以是用于高速读写数据的缓存区,例如,随机存取存储器(Random Access Memory,RAM)、静态随机存取存储器(Static Random-AccessMemory,SRAM)。非易失性存储器可以是不会因为断电而丢失数据的存储器,例如FLASH。其中,第一区块可以用于存储待升级的固件、第二区块中的备份区可以用于存储原固件,第二区块中的校验区可以用于验证待升级的固件正确性及完整性。
图2示例性示出了本申请实施例提供的固件升级方法的应用场景图。如图2所示,当终端中的处理器接收到服务器发送到固件封包时,发送升级指令,使终端中的当前固件停止运行,进行升级模式。
处理器控制易失性存储器写入固件封包,其中固件封包可以包括待升级的固件及用于验证其正确性和完整性的比对信息。进一步地,处理器控制第一区块从易失性存储器读取待升级的固件以替换原固件,第二区块从易失性存储器读取待升级的固件以及比对信息。进一步地,处理器控制第二区块中的校验区对待升级的固件的正确性和完整性进行验证,如果验证通过,处理器可以读取并运行第一区块中待升级的固件,以完成终端中固件的升级;如果验证失败,处理器控制第一区块读取第二区块中的原固件,以替换第一区块中存储的待升级的固件,完成终端中固件的回滚。
图3示出应用于本申请实施例的固件升级方法的系统架构图。如图3所示,服务器可以通过网络和终端连接。网络用以在终端和服务器之间提供通信链路。网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。终端包括但不限于:可穿戴设备、监控设备、手持设备、个人电脑、平板电脑、车载设备、智能手机、计算设备或连接到无线调制解调器的其它处理设备等。在不同的网络中终端设备可以叫做不同的名称,例如:监控设备、用户设备、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置、蜂窝电话、无绳电话、个人数字处理(personal digital assistant,PDA)、第五代移动通信技术(5th generation mobilenetworks,5G)网络或未来演进网络中的终端设备等。终端系统是指可以运行在终端上的操作系统,是管理和控制终端硬件和终端应用的程序,是终端不可或缺的系统应用。该系统包括担不限于安卓Android系统、IOS系统、Windows phone(WP)系统和Ubuntu移动版操作系统等。
可以应该理解的是,图3中的终端、网络和服务器的数目仅仅是示意性的。根据现实需要,可以具有任意数目的终端、网络和服务器。比如服务器可以是多个服务器组成的服务器集群等。
接下来结合图1介绍的终端结构图、图2介绍的固件升级方法的应用场景图、以及图3介绍的系统架构图,来介绍本申请实施例提供的固件升级方法,该方法可由上述终端执行。本申请实施例提供的固件升级方法可适用于终端和服务器实时进行通信的场景。
在一个实施例中,图4所示,提供了一种固件升级方法流程图。如图4所示,该固件升级方法包括如下步骤:
S401,控制易失性存储器获取待升级的固件。
可能地,本申请实施例中的易失性存储器可以接收服务器发送的固件封包,并获取固件封包中待升级的固件以及比对信息。其中,比对信息可以包括预设的校验码和/或预设的封包格式。封包格式用于表示验证封包中固件格式的信息,例如包括但不限于:封包的报头、报尾、整体定义的报文格式等。
例如,本申请实施例可以通过RAM接收服务器发送的固件封包,该固件封包可以包括待升级的固件V1(即优化后的硬件程序)、预设的循环冗余(Cyclic Redundancy Check,CRC)校验码、以及预设的封包格式。
S402,控制第一区块和第二区块的校验区读取待升级的固件。
其中,第一区块用于表示存储可以控制终端中硬件运行的固件的区块。
可以理解的是,处理器控制第一区块读取待升级的固件并自动擦除原固件。例如,第一区块未读取RAM中的固件V1之前存储的是固件V0,在处理器控制第一区块读取RAM中的固件V1之后,会对第一区块发出擦除指令以擦除固件V0仅存储固件V1。
S403,控制第二区块的校验区对待升级的固件进行比对。
本申请实施例可以通过处理器控制第二区块的校验区基于预设的校验码和/或预设的封包格式对待升级的固件进行比对。
可选地,当本申请实施例采用预设的封包格式对待升级的固件进行比对时,需要将待升级的固件中的报头格式、报文格式(即报头后的报文内容的格式)、以及报尾格式与预设的封包格式中预设的各项格式进行比对,例如,根据预设的报头格式比对固件中的名称、类型、起始地址、目标地址等信息。
可选地,当本申请实施例采用校验码对待升级的固件进行比对时,可以采用校验码对待升级的固件进行运算得到运算码,将该运算码与0进行比对;也可以采用预设的算法对待升级的固件进行运算得到运算码,将该运算码与校验码进行比对。
可选地,当本申请实施例采用预设的封包格式和校验码对待升级的固件进行比对时,可以先对报头格式进行比对;若该报头格式通过比对,进一步对报文格式进行比对;对于一些明显不符合报文格式的报文(例如起始地址),不再需要再进行报尾、以及校验码比对,以减小终端的报文校验压力。若待升级的固件的报头格式、报文格式以及报尾格式通过比对,可以进一步采用校验码对待升级的固件的完整性及正确性进行验证,例如,可以采用校验码对待升级的固件进行运算得到运算码,将该运算码与0进行比对;也可以采用预设的算法对待升级的固件进行运算得到运算码,将该运算码与校验码进行比对。S404,在比对失败的情况下,控制备份区中备份的未升级前的固件回滚到第一区块中。
可以理解的是,当第二区块的校验区中待升级的固件未通过比对时(例如,固件中的报头格式与固件封包中的预设格式不一致、或运算码与校验码不一致),控制第二区块的备份区中备份的未升级前的固件回滚到第一区块中,以防止第一区块运行验证未通过的待升级的固件可能导致的死机、或启动后系统无法正常运行等问题。其中,回滚用于表示当待升级的固件未通过验证时,即待升级的固件中的报文存在错误,将备份区中未升级前的固件写入第一区块中,并擦除第一区块中的待升级的固件。
例如,当第二区块的校验区中待升级的固件V1的报文格式与预设的报文格式不匹配时,将第二区块的备份区中备份的未升级前的固件V0(即原固件)回滚到第一区块中,以避免终端运行固件V1时可能导致的死机等问题。
可选地,本申请实施例为避免回滚过程中写入原固件中报文不完整而造成的修复失败等问题,在进行回滚时终端中的处理器停止接收服务器发送的信息,直到备份区中的原固件完全写入第一区块中。
S405,在比对成功的情况下,通过处理器运行读取到的第一区块中的待升级的固件,以完成终端中的固件的升级。
可以理解的是,本申请实施例可以通过处理器控制终端进行固件升级,处理器发送升级命令要求终端进行系统升级时,终端可直接将系统由平时运行的模式切换至仅负责运行更新固件的模式,如此则可获取足够的缓存区用于放置需要升级的固件,而不需要另外设置仅用于放置待升级的固件的空间。
可选地,在完成对终端中的固件的升级之后,本申请实施例还可以通过处理器控制第一区块将升级后的固件备份到对应的第二区块的备份区中。
在本申请实施例中,可以控制易失性存储器获取待升级的固件;控制第一区块和所述第二区块的校验区读取待升级的固件;控制第二区块的校验区对待升级的固件进行比对;在比对失败的情况下,控制备份区中备份的未升级前的固件回滚到第一区块中。由此,本申请实施例可以通过在非易失性存储器中的第二区块设置备份区和校验区,在固件升级失败的情况下,控制备份区中备份的原固件回滚到第一区块中,从而有效避免了终端在固件升级失败时,运行第一区块中的固件可能导致的死机需要回厂返修等情况。
在一些实施方式中,预设的校验码可以包括预设的多个分区校验码;校验区可以包括多个校验分区;其中,各分区校验码与各校验分区一一对应。
参见图5,可以理解的是,由于大部分存储器的存储空间每次写入或擦除都是以分区(block)为单位且考虑到存储器会有坏块(bad block)等问题。因此,本申请实施例在进入升级模式前会先建立校验分区以确定使用的区块对应的校验码、未使用区块、以及可能存在的坏块,以避免在写入过程中失败或是遇到坏块等问题造成系统无法正常重启。
在一个实施例中,图6所示,提供了一种固件升级方法流程图。如图6所示,该固件升级方法可以包括如下步骤:
S601,控制易失性存储器获取待升级的固件。
具体地,S601与S401一致,此处不再赘述。
S602,控制第一区块和第二区块的校验区读取待升级的固件。
具体地,S602与S402一致,此处不再赘述。
S603,基于预设的封包格式对位于各校验分区的待升级的固件的以下至少一项进行比对:报头格式、报尾格式、报文格式;和/或,基于各分区校验码对位于各校验分区的待升级的固件进行比对。
可以理解的是,本申请实施例中可以根据封包格式中的预设报头格式、预设报尾格式、以及预设报文格式,对各校验分区中可能存在的报头格式、报尾格式、报文格式进行比对。可能地,在比对成功的情况下,进一步基于分区校验码对位于各校验分区的待升级的固件进行比对。
具体地,在待升级的固件的报头比对失败,终端可以停止进行报文格式比对,在待升级的固件的报头比对成功的情况下,对位于各校验分区的报文(即报头后的报文内容)的报文格式进行比对,在待升级的固件的报文格式比对成功的情况下,对报尾进行比对,若报尾比对失败,处理器可以发出擦除指令,以将待升级的固件进行擦除,若报尾比对成功,基于各分区校验码对位于各校验分区报文的完整性和正确性进行验证,进一步确保待升级的固件中报文的准确性。
S604,在比对失败的情况下,控制备份区中备份的未升级前的固件回滚到第一区块中。
具体地,S604与S404一致,此处不再赘述。
S605,在比对成功的情况下,通过处理器运行读取到的第一区块中的待升级的固件,以完成终端中的固件的升级。
具体地,S605与S405一致,此处不再赘述。
由此,本申请实施例可以通过对报头校验、报尾校验、以及各校验分区中的报文校验三种校验方式对待升级的固件进行校验,以提高待升级的固件安全性和可靠性。
在一些实施方式中,上述实施例中的基于各分区校验码对位于各校验分区的待升级的固件进行比对,具体可以包括:基于预设的算法对位于各校验分区的待升级的固件进行运算,获得各校验分区的第一运算码;将同一校验分区的第一运算码与分区校验码进行比对;进一步地,在任意一个校验分区的第一运算码与分区校验码不匹配的情况下,控制备份区中备份的未升级前的固件回滚到所述第一区块中。
例如,本申请实施例可以采用消息摘要算法第五版(Message DigestAlgorithm5,MD5)对位于各校验分区的待升级的固件进行计算,获得各校验分区的MD5运算码(第一运算码),并将该各校验分区的MD5运算码与其相应的校验码做比对,如果两者相互匹配,则通过验证;如果存在任意一个校验分区的MD5运算码与其校验码不匹配的情况,则控制第二区块的备份区中备份的未升级前的固件回滚到第一区块中。
在一些实施方式中,上述实施例中的基于各分区校验码对位于各校验分区的待升级的固件进行比对,具体可以包括:基于各分区校验码对各校验分区的待升级的固件进行运算,获得各校验分区的第二运算码;将各校验分区的第二运算码与0进行比对;在至少一个校验分区的第二运算码不为0的情况下,控制备份区中备份的未升级前的固件回滚到第一区块中。
可能地,本申请实施例可以采用CRC校验码的方式对位于各校验分区的待升级的固件进行比对。例如,在各校验分区存储CRC码后,利用CRC码对待升级的固件进行计算,判断固件中的数据是否有错,如果没错,CRC码一定能被数据整除,即余数(第二运算码)为0;若余数不为0,则说明数据存在错误。
在一些实施方式中,第一区块可以包括多个分区;第二区块中的备份区可以包括多个分区;其中,第一区块中的各分区与备份区的各分区一一对应。
参见图7,第一区块71可以包括n个分区,第二区块72可以包括备份区73和校验区74。其中,备份区73可以包括n个备份分区,校验区74可以包括n个校验分区。
可以理解的是,在比对失败的情况下,处理器可以控制备份区的各分区中备份的未升级前的固件回滚到第一区块中的各分区中,例如,将备份区73的备份分区1中的固件写入第一区块71的分区1中,将备份区73的备份分区2中的固件写入第一区块71的分区2中,以此类推,直到将备份区73的备份分区n中的固件写入第一区块71的分区n中,完成终端中固件的回滚。
在一些实施方式中,本申请实施例在比对失败的情况下,可以控制备份区的各分区中备份的未升级前的固件与第一区块中各分区的待升级的固件进行比对;在备份区的各分区中备份的未升级前的固件与第一区块中各分区的待升级的固件之间存在不匹配的情况下,确定至少一个不匹配的分区,控制至少一个不匹配的分区对应的备份区的分区中备份的未升级前的固件回滚到对应的第一区块的分区中。
参见图8,在比对失败的情况下,处理器可以先发出比对指令将备份区的各分区中备份的未升级前的固件与第一区块中各分区的待升级的固件进行逐一比对,完成比对后,确定仅第一区块的分区3与备份分区3固件中的数据不同,则直接将备份分区3中的固件写入第一区块的分区3中即可完成终端中固件的回滚,无需再将其它备份分区中的固件写入第一区块的相应分区中,这样不仅可以有效提高终端的回滚效率,还改善了用户体验。
图9是本申请一示例性实施例提供的非易失性存储器的结构示意图。所述非易失性存储器与易失性存储器相连,所述非易失性存储器和所述易失性存储器用于终端,其中,
所述非易失性存储器包括第一区块和第二区块;其中,所述第一区块用于存储所述待升级的固件;
所述第二区块包括备份区和校验区;其中,所述备份区用于备份未升级前的固件,所述校验区用于对所述待升级的固件进行比对;
所述第一区块和所述第二区块中的校验区分别与所述易失性存储器相连;
所述第二区块中的备份区与所述第一区块相连。
由此,本申请实施例可以通过在非易失性存储器中的第二区块设置备份区和校验区,以使终端在固件升级失败的情况下,将备份区中备份的原固件回滚到第一区块中,从而有效避免了终端在固件升级失败时,运行第一区块中的固件可能导致的死机需要回厂返修等情况。
由此,本申请实施例可以通过在非易失性存储器中的第二区块设置备份区和校验区,以使终端在固件升级失败的情况下,将备份区中备份的原固件回滚到第一区块中,从而有效避免了终端在固件升级失败时,运行第一区块中的固件可能导致的死机需要回厂返修等情况。
请参见图10,为本申请实施例提供了一种终端的结构示意图。如图10所示,所述终端100可以包括:至少一个处理器110,至少一个网络接口140,用户接口130,存储器150,至少一个通信总线120。
其中,通信总线120用于实现这些组件之间的连接通信。
其中,用户接口130可以包括显示屏(Display)、摄像头(Camera),可选用户接口130还可以包括标准的有线接口、无线接口。
其中,网络接口140可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
其中,处理器110可以包括一个或者多个处理核心。处理器110利用各种借口和线路连接整个终端100内的各个部分,通过运行或执行存储在存储器150内的指令、程序、代码集或指令集,以及调用存储在存储器150内的数据,执行终端100的各种功能和处理数据。可选的,处理器110可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器110可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块芯片进行实现。
其中,存储器150可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器150包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器150可用于存储指令、程序、代码、代码集或指令集。存储器150可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器150可选的还可以是至少一个位于远离前述处理器110的存储装置。如图10所示,作为一种计算机存储介质的存储器150中可以包括操作系统、网络通信模块、用户接口模块以及固件升级应用程序。
在图10所示的终端100中,用户接口130主要用于为用户提供输入的接口,获取用户输入的数据;而处理器110可以用于调用存储器150中存储的固件升级应用程序,并具体执行以下操作:
控制所述易失性存储器获取待升级的固件;
控制所述第一区块和所述第二区块的校验区读取所述待升级的固件;
控制所述第二区块的校验区对所述待升级的固件进行比对;
在比对失败的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中。
在一种可能的实施例中,所述处理器110在执行控制所述第二区块的校验区对所述待升级的固件进行比对时,具体执行:控制所述第二区块的校验区基于预设的校验码和/或预设的封包格式对所述待升级的固件进行比对。
在一种可能的实施例中,所述预设的校验码包括预设的多个分区校验码;所述校验区包括多个校验分区;其中,各分区校验码与各校验分区一一对应;
所述处理器110在执行控制所述第二区块的校验区基于预设的校验码和/或预设的封包格式对所述待升级的固件进行比对时,具体执行:
基于所述预设的封包格式对位于所述各校验分区的待升级的固件的以下至少一项进行比对:报头格式、报尾格式、报文格式;和/或,
基于所述各分区校验码对位于所述各校验分区的待升级的固件进行比对。
在一种可能的实施例中,所述处理器110在执行基于所述各分区校验码对位于所述各校验分区的待升级的固件进行比对时,具体执行:
基于预设的算法对位于所述各校验分区的待升级的固件进行运算,获得各校验分区的第一运算码;
控制同一校验分区的第一运算码与分区校验码进行比对;
所述处理器110在执行在比对失败的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中时,具体执行:在任意一个校验分区的第一运算码与分区校验码不匹配的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中。
在一种可能的实施例中,所述处理器110在执行基于所述各分区校验码对位于所述各校验分区的待升级的固件进行比对时,具体执行:
基于所述各分区校验码对所述各校验分区的待升级的固件进行运算,获得各校验分区的第二运算码;
控制所述各校验分区的第二运算码与0进行比对;
所述处理器110在执行在比对失败的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中时,具体执行:在至少一个校验分区的第二运算码不为0的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中。
在一种可能的实施例中,所述第一区块包括多个分区;所述第二区块中的备份区包括多个分区;其中,所述第一区块中的各分区与所述备份区的各分区一一对应;
所述处理器110在执行在比对失败的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中时,具体执行:在比对失败的情况下,控制所述备份区的各分区中备份的未升级前的固件回滚到所述第一区块中的各分区中。
在一种可能的实施例中,所述第一区块包括多个分区;所述第二区块中的备份区包括多个分区;其中,所述第一区块中的各分区与所述备份区的各分区一一对应;
所述处理器110在执行在比对失败的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中时,具体执行:
控制所述备份区的各分区中备份的未升级前的固件与所述第一区块中各分区的待升级的固件进行比对;
在所述备份区的各分区中备份的未升级前的固件与所述第一区块中各分区的待升级的固件之间存在不匹配的情况下,确定至少一个不匹配的分区,控制所述至少一个不匹配的分区对应的所述备份区的分区中备份的未升级前的固件回滚到对应的第一区块的分区中。
在一种可能的实施例中,
所述处理器110还执行:在比对成功的情况下,控制所述第一区块中的待升级的固件在所述终端中运行,以完成对所述终端中的固件的升级。
在一种可能的实施例中,所述处理器110在执行在比对成功的情况下,控制所述第一区块中的待升级的固件在所述终端中运行,以完成对所述终端中的固件的升级之后,还执行:控制所述第一区块将升级后的固件备份到对应的所述第二区块的备份区中。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机或处理器上运行时,使得计算机或处理器执行上述图4和图6所示实施例中的一个或多个步骤。上述固件升级装置的各组成模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在所述计算机可读取存储介质中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital SubscriberLine,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字多功能光盘(Digital VersatileDisc,DVD))、或者半导体介质(例如,固态硬盘(Solid State Disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。而前述的存储介质包括:制度存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的介质。在不冲突的情况下,本实施例和实施方案中的技术特征可以任意组合。
以上所述的实施例仅仅是本申请的优选实施例方式进行描述,并非对本申请的范围进行限定,在不脱离本申请的设计精神的前提下,本领域普通技术人员对本申请的技术方案作出的各种变形及改进,均应落入本申请的权利要求书确定的保护范围内。
Claims (12)
1.一种固件升级方法,所述固件升级方法用于终端,所述终端包括易失性存储器和非易失性存储器,其特征在于,所述非易失性存储器包括第一区块和第二区块,所述第二区块包括备份区和校验区;其中,所述备份区用于备份未升级前的固件;所述方法包括:
控制所述易失性存储器获取待升级的固件;
控制所述第一区块和所述第二区块的校验区读取所述待升级的固件;
控制所述第二区块的校验区对所述待升级的固件进行比对;
在比对失败的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中。
2.根据权利要求1所述的方法,其特征在于,所述控制所述第二区块的校验区对所述待升级的固件进行比对,包括:控制所述第二区块的校验区基于预设的校验码和/或预设的封包格式对所述待升级的固件进行比对。
3.根据权利要求2所述的方法,其特征在于,所述预设的校验码包括预设的多个分区校验码;所述校验区包括多个校验分区;其中,各分区校验码与各校验分区一一对应;
所述控制所述第二区块的校验区基于预设的校验码和/或预设的封包格式对所述待升级的固件进行比对,包括:
基于所述预设的封包格式对位于所述各校验分区的待升级的固件的以下至少一项进行比对:报头格式、报尾格式、报文格式;和/或,
基于所述各分区校验码对位于所述各校验分区的待升级的固件进行比对。
4.根据权利要求3所述的方法,其特征在于,所述基于所述各分区校验码对位于所述各校验分区的待升级的固件进行比对,包括:
基于预设的算法对位于所述各校验分区的待升级的固件进行运算,获得各校验分区的第一运算码;
将同一校验分区的第一运算码与分区校验码进行比对;
所述在比对失败的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中,包括:在任意一个校验分区的第一运算码与分区校验码不匹配的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中。
5.根据权利要求3所述的方法,其特征在于,所述基于所述各分区校验码对位于所述各校验分区的待升级的固件进行比对,包括:
基于所述各分区校验码对所述各校验分区的待升级的固件进行运算,获得各校验分区的第二运算码;
控制所述各校验分区的第二运算码与0进行比对;
所述在比对失败的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中,包括:在至少一个校验分区的第二运算码不为0的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中。
6.根据权利要求1所述的方法,其特征在于,所述第一区块包括多个分区;所述第二区块中的备份区包括多个分区;其中,所述第一区块中的各分区与所述备份区的各分区一一对应;
所述在比对失败的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中,包括:在比对失败的情况下,控制所述备份区的各分区中备份的未升级前的固件回滚到所述第一区块中的各分区中。
7.根据权利要求1所述的方法,其特征在于,所述第一区块包括多个分区;所述第二区块中的备份区包括多个分区;其中,所述第一区块中的各分区与所述备份区的各分区一一对应;
所述在比对失败的情况下,控制所述备份区中备份的未升级前的固件回滚到所述第一区块中,包括:
控制所述备份区的各分区中备份的未升级前的固件与所述第一区块中各分区的待升级的固件进行比对;
在所述备份区的各分区中备份的未升级前的固件与所述第一区块中各分区的待升级的固件之间存在不匹配的情况下,确定至少一个不匹配的分区,控制所述至少一个不匹配的分区对应的所述备份区的分区中备份的未升级前的固件回滚到对应的第一区块的分区中。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:在比对成功的情况下,控制所述第一区块中的待升级的固件在所述终端中运行,以完成对所述终端中的固件的升级。
9.根据权利要求8所述的方法,其特征在于,所述在比对成功的情况下,控制所述第一区块中的待升级的固件在所述终端中运行,以完成对所述终端中的固件的升级之后,所述方法还包括:控制所述第一区块将升级后的固件备份到对应的所述第二区块的备份区中。
10.一种非易失性存储器,所述非易失性存储器与易失性存储器相连,所述非易失性存储器和所述易失性存储器用于终端,其特征在于,
所述非易失性存储器包括第一区块和第二区块;其中,所述第一区块用于存储所述待升级的固件;
所述第二区块包括备份区和校验区;其中,所述备份区用于备份未升级前的固件,所述校验区用于对所述待升级的固件进行比对;
所述第一区块和所述第二区块中的校验区分别与所述易失性存储器相连;所述第二区块中的备份区与所述第一区块相连。
11.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1-9任一项的方法步骤。
12.一种终端,其特征在于,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由处理器加载并执行如权利要求1-9任一项的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110282696.1A CN112925679A (zh) | 2021-03-16 | 2021-03-16 | 固件升级方法、非易失性存储器、计算机存储介质及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110282696.1A CN112925679A (zh) | 2021-03-16 | 2021-03-16 | 固件升级方法、非易失性存储器、计算机存储介质及终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112925679A true CN112925679A (zh) | 2021-06-08 |
Family
ID=76175552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110282696.1A Withdrawn CN112925679A (zh) | 2021-03-16 | 2021-03-16 | 固件升级方法、非易失性存储器、计算机存储介质及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112925679A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626259A (zh) * | 2021-08-17 | 2021-11-09 | 浪潮商用机器有限公司 | 一种固件版本恢复方法、装置及介质 |
CN113626792A (zh) * | 2021-07-09 | 2021-11-09 | 苏州浪潮智能科技有限公司 | PCIe Switch固件安全执行方法、装置、终端及存储介质 |
CN113867823A (zh) * | 2021-10-12 | 2021-12-31 | 湖北亿咖通科技有限公司 | 车载终端配置参数的设置方法、装置及电子设备 |
CN113986606A (zh) * | 2021-10-19 | 2022-01-28 | 日立楼宇技术(广州)有限公司 | 电梯程序升级方法、系统、装置及存储介质 |
CN114442783A (zh) * | 2021-12-24 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 一种电源供应器管理方法及电源供应器 |
CN115113904A (zh) * | 2022-08-29 | 2022-09-27 | 成都星联芯通科技有限公司 | 固件升级处理方法、装置、电子设备及存储介质 |
CN115543488A (zh) * | 2022-11-29 | 2022-12-30 | 苏州浪潮智能科技有限公司 | 一种多核SoC的固件启动方法及相关装置 |
-
2021
- 2021-03-16 CN CN202110282696.1A patent/CN112925679A/zh not_active Withdrawn
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626792A (zh) * | 2021-07-09 | 2021-11-09 | 苏州浪潮智能科技有限公司 | PCIe Switch固件安全执行方法、装置、终端及存储介质 |
CN113626792B (zh) * | 2021-07-09 | 2023-07-14 | 苏州浪潮智能科技有限公司 | PCIe Switch固件安全执行方法、装置、终端及存储介质 |
CN113626259A (zh) * | 2021-08-17 | 2021-11-09 | 浪潮商用机器有限公司 | 一种固件版本恢复方法、装置及介质 |
CN113867823A (zh) * | 2021-10-12 | 2021-12-31 | 湖北亿咖通科技有限公司 | 车载终端配置参数的设置方法、装置及电子设备 |
CN113986606A (zh) * | 2021-10-19 | 2022-01-28 | 日立楼宇技术(广州)有限公司 | 电梯程序升级方法、系统、装置及存储介质 |
CN114442783A (zh) * | 2021-12-24 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 一种电源供应器管理方法及电源供应器 |
CN114442783B (zh) * | 2021-12-24 | 2023-07-18 | 苏州浪潮智能科技有限公司 | 一种电源供应器管理方法及电源供应器 |
CN115113904A (zh) * | 2022-08-29 | 2022-09-27 | 成都星联芯通科技有限公司 | 固件升级处理方法、装置、电子设备及存储介质 |
CN115543488A (zh) * | 2022-11-29 | 2022-12-30 | 苏州浪潮智能科技有限公司 | 一种多核SoC的固件启动方法及相关装置 |
CN115543488B (zh) * | 2022-11-29 | 2023-08-25 | 苏州浪潮智能科技有限公司 | 一种多核SoC的固件启动方法及相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112925679A (zh) | 固件升级方法、非易失性存储器、计算机存储介质及终端 | |
CN106569847B (zh) | 一种用于车载系统基于移动网络实现iap远程升级的方法 | |
CN107179909A (zh) | 软件升级方法、装置及计算机可读存储介质 | |
CN109032632B (zh) | 一种fota升级方法、无线通信终端及存储介质 | |
CN111176702B (zh) | 固件升级方法、装置、计算机设备和存储介质 | |
CN111813428A (zh) | 终端固件的升级方法、装置、电子设备及存储介质 | |
CN101695162A (zh) | 一种移动终端空中固件升级方法及装置 | |
CN110908682B (zh) | 一种车辆控制器的固件升级方法、系统、车辆和存储介质 | |
US20160170735A1 (en) | Operating system updating method by using a checklist | |
CN107861832B (zh) | 数据验证方法、装置及可读存储介质 | |
CN108509215B (zh) | 一种系统软件的更换方法、装置、终端设备及存储介质 | |
CN110597542A (zh) | 软件自动ota升级方法及装置、电子设备 | |
US20050164694A1 (en) | Error data recovery system and method in a mobile communication terminal | |
CN110633092A (zh) | 用于ota升级的服务端及嵌入式设备升级方法及装置 | |
CN114443081A (zh) | 终端升级的方法及终端 | |
CN114915554A (zh) | 远程升级方法、装置、计算机设备和存储介质 | |
CN112751782B (zh) | 基于多活数据中心的流量切换方法、装置、设备及介质 | |
CN108170456B (zh) | 电子设备的固件升级方法及装置 | |
CN112882743A (zh) | 一种软件升级的方法 | |
CN111984287A (zh) | 设备升级方法及系统 | |
CN111522571A (zh) | 设备升级方法、装置、终端设备及存储介质 | |
CN116521405A (zh) | sd卡状态检测方法、装置、设备及存储介质 | |
CN111813597A (zh) | 一种空调器 | |
CN114296764A (zh) | 系统升级方法、装置、存储介质和电子设备 | |
CN114745268A (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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210608 |
|
WW01 | Invention patent application withdrawn after publication |