CN112860291A - 固件升级方法及装置 - Google Patents
固件升级方法及装置 Download PDFInfo
- Publication number
- CN112860291A CN112860291A CN202110183512.6A CN202110183512A CN112860291A CN 112860291 A CN112860291 A CN 112860291A CN 202110183512 A CN202110183512 A CN 202110183512A CN 112860291 A CN112860291 A CN 112860291A
- Authority
- CN
- China
- Prior art keywords
- partition
- new
- original
- firmware
- address
- 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.)
- Granted
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Abstract
本申请公开了一种固件升级方法及装置。其中,该固件升级方法包括:从升级包中获取新分区表信息;基于新分区表信息确认目标分区的新结束地址在目标分区的原结束地址之后;将目标分区的原起始地址到新结束地址之间的原固件存储在备份分区中;将升级包中目标分区的新固件写入到目标分区的新起始地址和新结束地址之间。本申请可以防止升级失败或升级过程中突然断电导致设备“变砖”。
Description
技术领域
本申请涉及固件升级技术领域,特别是涉及一种固件升级方法及装置。
背景技术
嵌入式设备在推向市场后,通过大量客户的使用和反馈,往往需要对一些产品bug进行修复,对硬件上的bug,往往只能通过产品召回的方式进行修复。对软件上的bug,通常是通过在线OTA的方式来进行升级修复。嵌入式linux系统,因其自身的特点系统都是以分区的方式存储在flash里,各个分区各自承担不同的任务,升级的时候也是以分区的形式对固件进行局部更新,如果设备升级失败,或者在升级过程中突然断电,就会导致设备彻底变砖。
发明内容
本申请提供一种固件升级方法及装置,可以防止升级失败或升级过程中突然断电导致设备“变砖”。
为解决上述问题,本申请提供一种固件升级方法,该方法包括:
从升级包中获取新分区表信息;
基于新分区表信息确认目标分区的新结束地址在目标分区的原结束地址之后;
将目标分区的原起始地址到新结束地址之间的原固件存储在备份分区中;
将升级包中目标分区的新固件写入到目标分区的新起始地址和新结束地址之间。
其中,基于新分区表信息确认目标分区的新结束地址在目标分区的原结束地址之后,包括:
基于新分区表信息确认新起始地址在原起始地址和原结束地址之间;
将新起始地址和新结束地址之间的原固件存储在备份分区中,并和备份分区中目标分区的原起始位置和新起始位置之间的原固件组成完整备份文件。
其中,将新起始地址和新结束地址之间的原固件存储在备份分区中,并和备份分区中原起始位置和新起始位置之间的原固件组成完整备份文件,包括:
将备份分区中目标分区的原起始位置和新起始位置之间的原固件移到备份分区的起始位置;
将目标分区中新起始地址之后的原固件存储在目标分区的原起始位置和新起始位置之间的原固件后,以组成目标分区的完整备份文件。
其中,将目标分区的原起始地址到新结束地址之间的原固件存储在备份分区中,之后包括:
设置升级分区开始标志;
将升级包中目标分区的新固件写入到目标分区的新起始地址和新结束地址之间,之后包括:
若写入成功,替换目标分区的分区信息,写结束分区标志位。
其中,将升级包中目标分区的新固件写入到目标分区的新起始地址和新结束地址之间,之后包括:
若写入失败,基于升级状态标识确认写入失败的分区,将备份分区内原起始地址到新结束地址之间的原固件作为系统启动子固件启动系统。
其中,升级包包含每一分区的升级信息,从升级包中获取新分区表信息,之后包括:
基于升级信息确认目标分区的位置是否发生改变;
若发生改变,基于目标分区位置改变情况,采用相应的方法将原固件存储在备份分区中。
其中,从升级包中获取新分区表信息,之前包括:
下载升级包,并校验升级包的完整性。
为解决上述问题,本申请提供一种固件升级装置,该固件升级装置包括获取模块、确认模块、备份模块和升级模块;
获取模块用于从升级包中获取新分区表信息;
确认模块用于基于新分区表信息确认目标分区的新结束地址在目标分区的原结束地址之后;
备份模块用于将目标分区的原起始地址到新结束地址之间的原固件存储在备份分区中;
升级模块用于将升级包中目标分区的新固件写入到目标分区的新起始地址和新结束地址之间。
为解决上述问题,本申请提供一种固件升级装置,该固件升级装置包括处理器;处理器用于执行指令以实现上述的方法。
为解决上述问题,本申请提供一种计算机可读存储介质,其用于存储指令/程序数据,指令/程序数据能够被执行以实现上述方法。
本申请从升级包中获取新分区表信息后,基于新分区表信息确定待升级的目标分区的新结束地址在目标分区的原起始地址之后,会将目标分区之后的分区中会被目标分区的新固件覆盖的区域的原固件以及目标分区的原固件进行备份,以保证升级失败时还能在备份分区中找到原固件以进行系统启动,可有效防止因升级失败造成设备“变砖”。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请固件升级方法一实施方式的流程示意图;
图2是本申请固件升级方法中基于新旧分区表进行备份的示意图;
图3是本申请固件升级方法另一实施方式的流程示意图;
图4是本申请固件升级装置一实施方式的结构示意图;
图5是本申请计算机可读存储介质一实施方式的结构示意图。
具体实施方式
描述和附图说明本申请的原理。因此将了解,本领域的技术人员将能够设计各种布置,尽管本文中未明确地描述或示出布置,但其体现了本申请的原理且包括在本申请的范围内。此外,本文中的所有例子主要明确地意在用于教学目的,以辅助读者理解本申请的原理及由发明人所提供的概念,从而深化所属领域,且所有例子不应解释为限于此类特定阐述的例子及条件。另外,除非另外指明(例如,“或另外”或“或在替代方案中”),否则如本文所使用的术语“或”指代非排他性的“或”(即,“和/或”)。并且,本文所描述的各种实施例不一定相互排斥,因为一些实施例可以与一个或多个其它实施例组合以形成新的实施例。
为解决设备升级失败或升级过程中突然断电导致的设备变砖的问题,可在设备内设有备份分区,并且在设备分区内固件升级之前,将待升级的分区的原固件备份到备份分区中,然后进行分区升级,这样若分区升级失败,设备重新启动时还可以利用备份分区内的原固件进行系统启动,并进行后续重新升级事项。但是这种备份方法一般应用于设备分区位置和大小不发生改变的升级场景中。其中,备份分区占用的存储空间不小于升级前后各分区中系统文件最大的分区所占用的存储空间。
对于设备分区位置和大小发生改变的升级场景,还是需要先通过重新裁剪和调整分区使得设备的每个待升级分区能够容纳该分区的新固件,然后将每个待升级分区的新固件存储进对应分区中,以完成对设备的升级。但是目前uboot都是从固定地址加载内核等固件,且有些系统的分区表都是与uboot绑定在一起。改变分区必须升级uboot,但如果设备在uboot的升级过程中突然断电,就会导致设备彻底变砖。
为解决上述问题,在分区位置和大小发生改变的升级场景中,本申请不对分区进行重新裁剪和调整,而是直接在设备的原先分区上进行升级,并且依照分区的先后顺序逐一对分区进行升级,而且在对分区进行升级前,会将每个分区新固件升级覆盖的区域的原固件进行备份,以在待升级分区的新固件覆盖到待升级分区之后的分区之前,将在待升级分区之后的且会被待升级分区的新固件覆盖的区域的原固件备份,以避免待升级分区升级失败导致系统启动时找不到待升级分区及其之后的至少一个分区的原固件从而导致系统重新启动失败,以避免系统升级失败导致嵌入式设备变砖。
具体请参阅图1,图1是本申请固件升级方法第一实施方式的流程示意图。本实施方式固件升级方法包括以下步骤。需要注意的是,以下编号仅用于简化说明,并不旨在限制步骤的执行顺序,本实施方式的各步骤可以在不违背本申请技术思想的基础上,任意更换执行顺序。
S101:从升级包中获取新分区表信息。
先从升级包中获取新分区表信息,以便后续基于新分区表信息确认目标分区的新结束地址在目标分区的原结束地址之后时,将目标分区的原起始地址到新结束地址之间的原固件存储到备份分区中,以对原固件进行备份,这样目标分区升级失败时还可以使用备份分区的原固件进行系统启动,可有效防止因升级失败造成设备“变砖”。
升级包可包括新分区表信息和待升级分区的新固件等。
升级包可由pc端制作。pc端根据新分区表信息、需要升级的固件信息和启动参数生成一个独立的信息分区并和其他需要升级的分区固件打包成一个ota固件。另外pc端还可根据分区表是否改动来设置标志,以便嵌入式设备基于标志判断信息分区的更新与否。
S102:基于新分区表信息确认目标分区的新结束地址在目标分区的原结束地址之后。
从升级包中获取新分区表信息后,可以基于新分区表信息确定待升级的目标分区的新起始地址和新结束地址,另外,还可以基于存储于设备内的原分区表信息确认待升级的目标分区的原起始地址和原结束地址,这样就可确定待升级的目标分区的新结束地址是否在目标分区的原起始地址之后;若在,则说明升级后待升级的目标分区的新固件会至少覆盖到目标分区的下一个分区,需进入步骤S103,以将目标分区之后的分区中会被目标分区的新固件覆盖的区域的原固件以及目标分区的原固件进行备份,以保证升级失败时还能在备份分区中找到原固件以进行系统启动,可有效防止因升级失败造成设备“变砖”。
S103:将目标分区的原起始地址到新结束地址之间的原固件存储在备份分区中。
基于新分区表信息确认目标分区的新结束地址在目标分区的原结束地址之后,可以将目标分区的原起始地址到新结束地址之间的原固件存储在备份分区中。
可选地,可以基于目标分区的新起始地址的三种情况,采用相应的方法将目标分区的原起始地址到新结束地址之间的原固件存储在备份分区中。
其一,目标分区的新起始地址在目标分区的原起始地址之后,虽然目标分区的原起始地址和新起始地址之间已被目标分区的上一个分区的新固件覆盖,但是目标分区的原起始地址和新起始地址之间的原固件已备份到备份分区中,从而在目标分区升级之前,可以将目标分区的新起始地址和目标分区的新结束地址之间的原固件备份到备份分区中,并将目标分区的新起始地址和目标分区的旧结束地址之间的原固件和备份分区中的目标分区的原起始地址和新起始地址之间的原固件组成目标分区完整的备份文件。例如,对图2所示的分区3升级之前,可以将3.1-4.5之间的原固件存储到备份文件,并使3.1-4.2之间的原固件和备份分区中分区3的2.8-3.1之间的原固件组成分区3完整的备份文件。
较为优选的是,在对目标分区升级之前,可以先将备份分区中目标分区的原起始位置和新起始位置之间的原固件移到备份分区的起始位置,并将目标分区的原起始位置到新结束位置之间的原固件放置于备份分区中目标分区的原起始位置和新起始位置之间的原固件的后面,以组成目标分区的完整备份文件,并且便于在备份分区中找寻到目标分区的备份文件,以避免目标分区升级失败导致系统变砖。例如,如图2和图3所示,在对图2所示的分区3升级之前,可以将备份分区中分区3的2.8-3.1原固件移到备份分区的起始位置,并将分区3的3.1-4.2之间的原固件以及分区4的4.2-4.5之间的原固件依序排放在备份分区中2.8-3.1之间的原固件后面。
其二,目标分区的新起始地址和目标分区的原起始地址相同,可以直接将目标分区的原起始地址和新结束地址之间的原固件备份到备份分区中。
其三,目标分区的新起始地址在目标分区的原起始地址之前,由于目标分区的前一个分区已经升级完毕,无需对前一个分区中会被目标分区的新固件覆盖的区域的原固件进行备份,可以直接将目标分区的原起始地址和新结束地址之间的原固件备份到备份分区中。
S104:将升级包中目标分区的新固件写入到目标分区的新起始地址和新结束地址之间。
基于步骤S103进行备份后,可以将升级包中目标分区的新起始地址和新结束地址之间,以完成目标分区的升级。
在本实施方式中,从升级包中获取新分区表信息后,基于新分区表信息确定待升级的目标分区的新结束地址在目标分区的原起始地址之后,会将目标分区之后的分区中会被目标分区的新固件覆盖的区域的原固件以及目标分区的原固件进行备份,以保证升级失败时还能在备份分区中找到原固件以进行系统启动,可有效防止因升级失败造成设备“变砖”。
具体请参阅图3,图3是本申请固件升级方法第二实施方式的流程示意图。本实施方式固件升级方法包括以下步骤。需要注意的是,以下编号仅用于简化说明,并不旨在限制步骤的执行顺序,本实施方式的各步骤可以在不违背本申请技术思想的基础上,任意更换执行顺序。
S201:下载升级包,并校验升级包的完整性。
可以先下载升级包,并校验升级包的完整性。若升级包完整性校验合格,进入步骤S202。
S202:基于升级包确认目标分区是否需要升级。
升级包完整性校验合格后,可以基于升级包中升级信息确认目标分区是否需要升级;若需要升级,则进入步骤S204;若不需要升级,进入步骤S203,以将目标分区的下一个分区作为目标分区,并重新返回步骤S202,确认目标分区的下一个分区是否需要升级。
升级开始时,可以将第一个分区作为目标分区,以确认第一个分区是否需要升级;若第一个分区不需要升级或者升级完成后,将第二个分区作为目标分区,以依次逐个确认每一个分区是否需要升级,并且对需要升级的分区进行升级。
可选地,升级包可包含每一分区的升级信息。可基于每一分区的升级信息确认每一分区是否需要升级。
S203:将目标分区的下一个分区作为目标分区。
完成步骤S203后,重新返回步骤S202,以确认目标分区的下一个分区是否需要升级。
S204:基于升级包中升级信息确认目标分区位置是否改变。
确认目标分区需要升级后,可基于升级包中升级信息确认目标分区位置是否改变;若改变,可进入步骤S205,以基于目标分区的位置改变情况采取相应的方法对原固件进行备份;若不改变,可进入步骤S209,以直接对目标分区的原固件进行备份。
可选地,可基于每一分区的升级信息确认目标分区位置是否改变。
在其他实施方式中,可直接基于新分区表信息和原分区表信息,确认目标分区的新起始地址和原起始地址是否相同,并确认目标分区的新结束地址和原结束地址是否相同。若目标分区的新起始地址和原起始地址相同,且目标分区的新结束地址和原结束地址相同,则目标分区位置升级后不会发生改变;否则目标分区的位置升级后会发送改变。
另外,确认目标分区位置会发生改变,可以备份旧的分区表信息。以便预留升级失败后的补救信息。
S204:基于目标分区位置改变情况采用相应的方法对原固件进行备份。
基于升级包中升级信息确认目标分区位置会发生改变,可基于目标分区位置改变情况采用相应的方法对原固件进行备份。
可选地,可以基于目标分区位置的八种改变情况,采用相应的方法将原固件存储在备份分区中。
其一,目标分区的新起始地址和原起始地址相同,目标分区的新结束地址在目标分区的原结束地址之后,可以将目标分区的原起始地址和新结束地址之间的原固件备份到备份分区中。
其二,目标分区的新起始地址和原起始地址相同,目标分区的新结束地址在目标分区的原结束地址之前,可以将目标分区的原起始地址和新结束地址之间的原固件备份到备份分区中。或者,在其他实施例中,可以直接将目标分区完整的原固件备份到备份分区中,即将目标分区的原起始地址和原结束地址之间的原固件备份到备份分区中。
其三,目标分区的新起始地址在目标分区的原起始地址之前,目标分区的新结束地址在目标分区的原结束地址之前,可以将目标分区的原起始地址和新结束地址之间的原固件备份到备份分区中。或者,在其他实施例中,可以直接将目标分区完整的原固件备份到备份分区中,即将目标分区的原起始地址和原结束地址之间的原固件备份到备份分区中。
其四,目标分区的新起始地址在目标分区的原起始地址之前,目标分区的新结束地址和目标分区的原结束地址相同,可以将目标分区的原起始地址和原结束地址之间的原固件备份到备份分区中。
其五,目标分区的新起始地址在目标分区的原起始地址之前,目标分区的新结束地址在目标分区的原结束地址之后,可以将目标分区的原起始地址和新结束地址之间的原固件备份到备份分区中。
其六,目标分区的新起始地址在目标分区的原起始地址之后,目标分区的新结束地址在目标分区的原结束地址之前,可以将目标分区的新起始地址和目标分区的新结束地址之间的原固件备份到备份分区中,并将目标分区的新起始地址和目标分区的新结束地址之间的原固件和备份分区中的目标分区的原起始地址和新起始地址之间的原固件组成目标分区部分备份文件。或者,在其他实施例中,可以将目标分区的新起始地址和原结束地址之间的原固件备份到备份分区中,并将目标分区的新起始地址和目标分区的原结束地址之间的原固件和备份分区中的目标分区的原起始地址和新起始地址之间的原固件组成目标分区完整的备份文件。
其七,目标分区的新起始地址在目标分区的原起始地址之后,目标分区的新结束地址和目标分区的原结束地址相同,可以将目标分区的新起始地址和原结束地址之间的原固件备份到备份分区中,并将目标分区的新起始地址和目标分区的原结束地址之间的原固件和备份分区中的目标分区的原起始地址和新起始地址之间的原固件组成目标分区完整的备份文件。
其八,目标分区的新起始地址在目标分区的原起始地址之后,目标分区的新结束地址在目标分区的原结束地址之后,可以将目标分区的新起始地址和目标分区的新结束地址之间的原固件备份到备份分区中,并将目标分区的新起始地址和目标分区的原结束地址之间的原固件和备份分区中的目标分区的原起始地址和新起始地址之间的原固件组成目标分区完整的备份文件。
其九,目标分区的新起始地址在目标分区的原结束地址之后,可以将目标分区的新起始地址和目标分区的新结束地址之间的原固件备份到备份分区中,并将目标分区的新起始地址和目标分区的新结束地址之间的原固件和备份分区中的目标分区的原起始地址和新起始地址之间的原固件组成目标分区完整的备份文件。
S206:设置升级分区开始标志。
基于步骤S205对原固件进行备份后,可以设置升级分区开始标志,以表示当前未完成升级的分区。
可选地,可将升级分区开始标志等分区升级状态信息存储到存储器(可以是flash等)中。其中,分区升级状态信息还可包括结束分区标志,用于表示当前目标分区已完成升级。
这样嵌入式设备可通过遍历标志符的方式,读取存储器中的当前分区信息、启动参数信息和保存到存储器中的分区升级状态信息,验证分区升级的状态,如果分区升级不成功,则根据存储器中保存的升级状态和备份分区中的固件重新启动系统或者重新进行升级。
设置升级分区开始标志的时候,还可以将备份的原固件在备份分区中位置信息存储到存储器中,以便目标升级失败后,可以在备份分区中找到目标分区的备份的原固件。
S207:将升级包中目标分区的新固件写入到目标分区的新起始地址和新结束地址之间。
基于步骤S205对原固件进行备份后,可以将升级包中目标分区的新固件写入到目标分区的新起始地址和新结束地址之间,以完成目标分区的升级。
写入成功后,可进入步骤S208,以将目标分区的新位置信息替换旧位置信息,以确保嵌入式设备可利用目标分区的正确位置信息完成系统启动,并更新存储器中目标分区的升级状态。
写入失败后,嵌入式设备可通过遍历存储器中标志符的方式确定写入失败的分区,并将备份分区内目标分区原起始地址到新结束地址之间的原固件作为系统启动子固件启动系统,从而可避免升级失败导致嵌入式设备变砖。
S208:写入成功后,替换分区信息,写结束分区标志位。
将目标分区的新固件写入成功后,可以替换分区信息,并写结束分区标志位,以更改存储器中目标分区的升级状态。
完成步骤S208后,若目标分区不是最后一个分区,可以进入步骤S203,以确定目标分区的下一个分区是否需要升级,并在下一个分区需要升级时对下一个分区进行升级,以便完成整个系统的升级;若目标分区是最后一个分区,则完成了对整个系统的升级,可解析分区信息和启动参数组成有效bootargs参数,和有效bootcmd,通过bootcmd启动内核。
S209:对目标分区的原固件进行备份。
基于升级包中升级信息确认目标分区位置未发生改变,直接将目标分区的原固件进行备份即可,然后进入步骤S210。
S210:设置升级分区开始标志。
S211:升级目标分区。
S212:写结束分区标志位。
完成步骤S212后,若目标分区不是最后一个分区,可以进入步骤S203,以确定目标分区的下一个分区是否需要升级,并在下一个分区需要升级时对下一个分区进行升级,以便完成整个系统的升级;若目标分区是最后一个分区,则完成了对整个系统的升级,可解析分区信息和启动参数组成有效bootargs参数和有效bootcmd,通过bootcmd启动内核。
本申请还提供一种固件升级装置,该固件升级装置包括获取模块、确认模块、备份模块和升级模块。
获取模块用于从升级包中获取新分区表信息;
确认模块用于基于新分区表信息确认目标分区的新结束地址在目标分区的原结束地址之后;
备份模块用于将目标分区的原起始地址到新结束地址之间的原固件存储在备份分区中;
升级模块用于将升级包中目标分区的新固件写入到目标分区的新起始地址和新结束地址之间。
确认模块用于基于新分区表信息确认新起始地址在原起始地址和原结束地址之间;
备份模块用于将新起始地址和新结束地址之间的原固件存储在备份分区中,并和备份分区中目标分区的原起始位置和新起始位置之间的原固件组成完整备份文件。
备份模块用于将备份分区中目标分区的原起始位置和新起始位置之间的原固件移到备份分区的起始位置;将目标分区中新起始地址之后的原固件存储在目标分区的原起始位置和新起始位置之间的原固件后,以组成目标分区的完整备份文件。
备份模块用于若写入失败,基于升级状态标识确认写入失败的分区,将备份分区内原起始地址到新结束地址之间的原固件作为系统启动子固件启动系统。
请参阅图4,图4是本申请固件升级装置20一实施方式的结构示意图。本申请固件升级装置20包括处理器22,处理器22用于执行指令以实现上述本申请实现任一实施例及任意不冲突的组合所提供的方法。
固件升级装置20可为手机、笔记本电脑等终端设备,或者还可以为服务器,或者还可为冰箱、空调等与脚部穿戴设备构建成局域网的一物联网设备。
处理器22还可以称为CPU(Central Processing Unit,中央处理单元)。处理器22可能是一种集成电路芯片,具有信号的处理能力。处理器22还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器,或者该处理器22也可以是任何常规的处理器等。
固件升级装置20还可进一步包括存储器21,用于存储处理器22运行所需的指令和数据。
请参阅图5,图5为本申请实施方式中计算机可读存储介质的结构示意图。本申请实施方式的计算机可读存储介质30存储有指令/程序数据31。该指令/程序数据31被执行时可实现本申请上述任一实施例以及任意不冲突的组合所提供的方法。其中,该指令/程序数据31可以形成程序文件以软件产品的形式存储在计算机可读存储介质30中,以使得一台计算机设备(可以是个人计算机,云端服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的计算机可读存储介质30包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、云端服务器、手机、平板等设备。
在本申请所提供的几个实施方式中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种固件升级方法,其特征在于,所述方法包括:
从升级包中获取新分区表信息;
基于所述新分区表信息确认目标分区的新结束地址在所述目标分区的原结束地址之后;
将目标分区的原起始地址到所述新结束地址之间的原固件存储在备份分区中;
将所述升级包中所述目标分区的新固件写入到目标分区的新起始地址和所述新结束地址之间。
2.根据权利要求1所述的方法,其特征在于,所述基于所述新分区表信息确认目标分区的新结束地址在所述目标分区的原结束地址之后,包括:
基于所述新分区表信息确认所述新起始地址在所述原起始地址和所述原结束地址之间;
将所述新起始地址和所述新结束地址之间的原固件存储在所述备份分区中,并和所述备份分区中所述目标分区的所述原起始位置和所述新起始位置之间的原固件组成完整备份文件。
3.根据权利要求2所述的方法,其特征在于,所述将所述新起始地址和所述新结束地址之间的原固件存储在所述备份分区中,并和所述备份分区中所述原起始位置和所述新起始位置之间的原固件组成完整备份文件,包括:
将所述备份分区中所述目标分区的所述原起始位置和新起始位置之间的原固件移到所述备份分区的起始位置;
将所述目标分区中所述新起始地址之后的原固件存储在所述目标分区的原起始位置和新起始位置之间的原固件后,以组成所述目标分区的完整备份文件。
4.根据权利要求1所述的方法,其特征在于,所述将目标分区的原起始地址到所述新结束地址之间的原固件存储在备份分区中,之后包括:
设置升级分区开始标志;
所述将所述升级包中所述目标分区的新固件写入到目标分区的新起始地址和所述新结束地址之间,之后包括:
若写入成功,替换所述目标分区的分区信息,写结束分区标志位。
5.根据权利要求4所述的方法,其特征在于,所述将所述升级包中所述目标分区的新固件写入到目标分区的新起始地址和所述新结束地址之间,之后包括:
若写入失败,基于所述升级状态标识确认写入失败的分区,将所述备份分区内所述原起始地址到所述新结束地址之间的原固件作为系统启动子固件启动系统。
6.根据权利要求1所述的方法,其特征在于,所述升级包包含每一分区的升级信息,所述从升级包中获取新分区表信息,之后包括:
基于所述升级信息确认所述目标分区的位置是否发生改变;
若发生改变,基于所述目标分区位置改变情况,采用相应的方法将原固件存储在备份分区中。
7.根据权利要求1所述的方法,其特征在于,所述从升级包中获取新分区表信息,之前包括:
下载所述升级包,并校验所述升级包的完整性。
8.一种固件升级装置,其特征在于,所述装置包括:
获取模块,用于从升级包中获取新分区表信息;
确认模块,用于基于所述新分区表信息确认目标分区的新结束地址在所述目标分区的原结束地址之后;
备份模块,用于将目标分区的原起始地址到所述新结束地址之间的原固件存储在备份分区中;
升级模块,用于将所述升级包中所述目标分区的新固件写入到目标分区的新起始地址和所述新结束地址之间。
9.一种固件升级装置,其特征在于,所述固件升级装置包括处理器;所述处理器用于执行指令以实现如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机存储介质用于存储指令/程序数据,所述指令/程序数据能够被执行以实现权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110183512.6A CN112860291B (zh) | 2021-02-08 | 2021-02-08 | 固件升级方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110183512.6A CN112860291B (zh) | 2021-02-08 | 2021-02-08 | 固件升级方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112860291A true CN112860291A (zh) | 2021-05-28 |
CN112860291B CN112860291B (zh) | 2023-05-12 |
Family
ID=75989601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110183512.6A Active CN112860291B (zh) | 2021-02-08 | 2021-02-08 | 固件升级方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112860291B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113741812A (zh) * | 2021-08-09 | 2021-12-03 | 浙江大华技术股份有限公司 | 存储器分区的更新方法、装置、电子装置和存储介质 |
CN117687663A (zh) * | 2024-02-04 | 2024-03-12 | 湖北芯擎科技有限公司 | 基于ota的分区动态调整方法、装置、设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104375844A (zh) * | 2013-08-12 | 2015-02-25 | 中兴通讯股份有限公司 | 固件升级方法及装置 |
CN106610840A (zh) * | 2015-10-22 | 2017-05-03 | 深圳市中兴微电子技术有限公司 | 一种无线固件升级方法及系统 |
CN108170456A (zh) * | 2017-12-25 | 2018-06-15 | 长沙联远电子科技有限公司 | 电子设备的固件升级方法及装置 |
CN109189451A (zh) * | 2018-10-25 | 2019-01-11 | 京信通信系统(中国)有限公司 | 一种固件升级方法及装置 |
CN109634645A (zh) * | 2018-12-28 | 2019-04-16 | 深圳市有方科技股份有限公司 | 固件升级方法及终端 |
US20190278583A1 (en) * | 2017-03-30 | 2019-09-12 | Pax Computer Technology (Shenzhen) Co., Ltd | Method for updating firmware, terminal and computer readable non-volatile storage medium |
US20200193027A1 (en) * | 2018-12-18 | 2020-06-18 | Ubtech Robotics Corp Ltd | Firmware upgrade method, slave station of robot, and machine readable storage medium |
CN111596945A (zh) * | 2020-04-03 | 2020-08-28 | 红石阳光(北京)科技股份有限公司 | 嵌入式系统动态多分区固件的差分升级方法 |
CN112148337A (zh) * | 2020-09-09 | 2020-12-29 | 杭州涂鸦信息技术有限公司 | 一种固件升级方法及装置 |
-
2021
- 2021-02-08 CN CN202110183512.6A patent/CN112860291B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104375844A (zh) * | 2013-08-12 | 2015-02-25 | 中兴通讯股份有限公司 | 固件升级方法及装置 |
CN106610840A (zh) * | 2015-10-22 | 2017-05-03 | 深圳市中兴微电子技术有限公司 | 一种无线固件升级方法及系统 |
US20190278583A1 (en) * | 2017-03-30 | 2019-09-12 | Pax Computer Technology (Shenzhen) Co., Ltd | Method for updating firmware, terminal and computer readable non-volatile storage medium |
CN108170456A (zh) * | 2017-12-25 | 2018-06-15 | 长沙联远电子科技有限公司 | 电子设备的固件升级方法及装置 |
CN109189451A (zh) * | 2018-10-25 | 2019-01-11 | 京信通信系统(中国)有限公司 | 一种固件升级方法及装置 |
US20200193027A1 (en) * | 2018-12-18 | 2020-06-18 | Ubtech Robotics Corp Ltd | Firmware upgrade method, slave station of robot, and machine readable storage medium |
CN109634645A (zh) * | 2018-12-28 | 2019-04-16 | 深圳市有方科技股份有限公司 | 固件升级方法及终端 |
CN111596945A (zh) * | 2020-04-03 | 2020-08-28 | 红石阳光(北京)科技股份有限公司 | 嵌入式系统动态多分区固件的差分升级方法 |
CN112148337A (zh) * | 2020-09-09 | 2020-12-29 | 杭州涂鸦信息技术有限公司 | 一种固件升级方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113741812A (zh) * | 2021-08-09 | 2021-12-03 | 浙江大华技术股份有限公司 | 存储器分区的更新方法、装置、电子装置和存储介质 |
CN113741812B (zh) * | 2021-08-09 | 2024-04-12 | 浙江大华技术股份有限公司 | 存储器分区的更新方法、装置、电子装置和存储介质 |
CN117687663A (zh) * | 2024-02-04 | 2024-03-12 | 湖北芯擎科技有限公司 | 基于ota的分区动态调整方法、装置、设备及存储介质 |
CN117687663B (zh) * | 2024-02-04 | 2024-04-16 | 湖北芯擎科技有限公司 | 基于ota的分区动态调整方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112860291B (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8539471B2 (en) | Updating firmware of an electronic device | |
JP5113700B2 (ja) | ファームウェア更新装置及び方法 | |
US20050060528A1 (en) | Booting and boot code update method and system thereof | |
US20110004871A1 (en) | Embedded electronic device and firmware updating method thereof | |
US20150074386A1 (en) | Boot method and boot system | |
EP1821506A2 (en) | Mobile terminal and software update method | |
CN109558160A (zh) | 升级方法、嵌入式系统 | |
CN106775610B (zh) | 一种电子设备启动方法及一种电子设备 | |
CN110597542B (zh) | 软件自动ota升级方法及装置、电子设备 | |
CN109753299A (zh) | 一种系统升级方法、装置以及计算机存储介质 | |
CN112416406B (zh) | 终端设备升级方法、装置、终端设备和介质 | |
CN112860291B (zh) | 固件升级方法及装置 | |
EP3113018A1 (en) | Method and apparatus for running version file | |
CN114840242A (zh) | 一种电子设备的系统升级方法、装置及可读存储介质 | |
CN114443081A (zh) | 终端升级的方法及终端 | |
CN110580167A (zh) | 一种系统升级方法、智能设备及服务器 | |
CN105677409A (zh) | 一种系统升级方法及装置 | |
CN111026417A (zh) | 一种嵌入式设备的升级方法及嵌入式设备 | |
CN109375953B (zh) | 一种操作系统启动方法及装置 | |
CN106775874B (zh) | 终端设备的系统升级方法 | |
CN112667265A (zh) | 一种引导程序更新方法及装置 | |
US20230132494A1 (en) | Information processing apparatus, method of controlling the same, and storage medium | |
WO2020107469A1 (zh) | 程序处理方法、设备及存储介质 | |
CN105119944A (zh) | 一种应用的启动方法和相关装置 | |
CN110309018B (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 |