CN112905218B - 一种固件升级方法、装置及设备 - Google Patents
一种固件升级方法、装置及设备 Download PDFInfo
- Publication number
- CN112905218B CN112905218B CN202110169647.7A CN202110169647A CN112905218B CN 112905218 B CN112905218 B CN 112905218B CN 202110169647 A CN202110169647 A CN 202110169647A CN 112905218 B CN112905218 B CN 112905218B
- Authority
- CN
- China
- Prior art keywords
- storage area
- firmware package
- application system
- application
- basic
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
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
技术领域
本申请涉及监控技术领域,尤其是涉及一种固件升级方法、装置及设备。
背景技术
固件(Firmware)是存储于EEPROM(Electrically Erasable Programmable ReadOnly Memory,电可擦可编程只读存储器)或FLASH(闪存)芯片中的软件程序,可以作为操作系统的最基础最底层的软件程序,能够实现驱动等功能。例如,BIOS(Basic Input OutputSystem,基本输入输出系统)就是一种固件。
固件升级是指对设备的固件进行升级,从而完善设备功能、增强设备稳定性、修补设备漏洞。摄像机作为室外嵌入式设备,实际应用中,也涉及摄像机的固件升级。为了实现摄像机的固件升级,对于具备有线网口的摄像机,可以采用有线网络通信方式,将新固件包发送给摄像机,以替换摄像机的已有固件包,完成摄像机的固件升级。对于不具备有线网口的摄像机,可以采用无线网络通信方式(如WIFI(Wireless Fidelity,无线保真)或移动数据等),将新固件包发送给摄像机,以替换摄像机的已有固件包,完成摄像机的固件升级。
在上述方式中,均需要通过网络将新固件包发送给摄像机,以替换摄像机的已有固件包,但是,在固件升级过程中,一旦出现断网或断电等情况,则会导致无法完成摄像机的固件升级,甚至是导致摄像机出现故障,摄像机无法正常运行,固件升级的可靠性较低。比如说,在通过网络将新固件包的部分数据存储到摄像机(即替换摄像机的已有固件包)后,若此时出现断网或断电等情况,则新固件包的剩余数据无法继续存储到摄像机,这样,在摄像机重新启动后,由于摄像机未存储完整的新固件包,因此,摄像机将无法正常运行。
发明内容
本申请提供一种固件升级方法,应用于摄像机,所述摄像机包括基础系统存储区和应用系统存储区,所述基础系统存储区和所述应用系统存储区是不同逻辑区域,所述基础系统存储区中数据与所述应用系统存储区中数据相互独立,所述应用系统存储区大于或等于所述基础系统存储区,所述方法包括:
在确定需要对所述摄像机进行固件升级后,从外部设备获取基础系统固件包;其中,用于对所述摄像机进行固件升级的完整系统固件包包括所述基础系统固件包和应用系统固件包,所述应用系统固件包大于或等于所述基础系统固件包;所述基础系统固件包的升级过程不依赖于所述应用系统固件包的升级过程,所述应用系统固件包的升级过程依赖于所述基础系统固件包的升级过程;
将所述基础系统固件包存储到所述应用系统存储区;在将所述基础系统固件包成功存储到所述应用系统存储区之后,从所述应用系统存储区读取所述基础系统固件包,将所述基础系统固件包存储到所述基础系统存储区;
在将所述基础系统固件包成功存储到所述基础系统存储区之后,从外部设备获取应用系统固件包,将所述应用系统固件包存储到所述应用系统存储区,以通过所述应用系统固件包替换所述应用系统存储区中的基础系统固件包。
示例性的,所述确定需要对所述摄像机进行固件升级,包括:
获取操作用户发送的升级请求,所述升级请求包括操作用户的账户信息;
若基于所述账户信息确定所述操作用户为合法用户,且所述操作用户具有所述摄像机的升级权限,则获取基础系统存储区中已存储的基础系统固件包的第一版本和用于对摄像机进行固件升级的基础系统固件包的第二版本;
若第二版本高于第一版本,则确定需要对所述摄像机进行固件升级。
示例性的,所述将所述基础系统固件包存储到所述应用系统存储区,包括:
若所述应用系统存储区具有第一状态,则为所述应用系统存储区的第一状态设置异常标记,所述异常标记表示所述应用系统存储区正在更新;
将所述基础系统固件包存储到所述应用系统存储区;
将所述应用系统存储区的第一状态从所述异常标记修改为复用标记,所述复用标记表示所述应用系统存储区已存储基础系统固件包。
示例性的,所述将所述基础系统固件包存储到所述基础系统存储区,包括:
若所述基础系统存储区具有第二状态,则为所述基础系统存储区的第二状态设置异常标记,所述异常标记表示所述基础系统存储区正在更新;
将所述基础系统固件包存储到所述基础系统存储区;
将所述基础系统存储区的第二状态从所述异常标记修改为正常标记,所述正常标记表示所述基础系统存储区已经完成更新。
示例性的,所述将所述应用系统固件包存储到所述应用系统存储区,包括:
将所述应用系统存储区的第一状态从所述复用标记修改为异常标记;
将所述应用系统固件包存储到所述应用系统存储区;其中,若所述应用系统固件包由多个分片组成,则依次将每个分片存储到所述应用系统存储区;
将所述应用系统存储区的第一状态从所述异常标记修改为正常标记,所述正常标记表示所述应用系统存储区已经完成更新。
示例性的,在所述摄像机重新启动之后,所述方法还包括:
若所述基础系统存储区的第二状态为正常标记,则从所述基础系统存储区中读取所述基础系统固件包,并运行所述基础系统固件包;
若所述基础系统存储区的第二状态为异常标记,所述应用系统存储区的第一状态为复用标记,则从所述应用系统存储区中读取所述基础系统固件包,将所述基础系统固件包存储到所述基础系统存储区;从所述基础系统存储区中读取所述基础系统固件包,并运行所述基础系统固件包。
示例性的,在所述摄像机重新启动之后,若已成功运行所述基础系统固件包,所述方法还包括:若所述应用系统存储区的第一状态为正常标记,则从所述应用系统存储区中读取所述应用系统固件包,并运行所述应用系统固件包;
若所述应用系统存储区的第一状态为异常标记,则从外部设备获取应用系统固件包,将所述应用系统固件包存储到所述应用系统存储区;从所述应用系统存储区中读取所述应用系统固件包,并运行所述应用系统固件包。
示例性的,所述基础系统固件包包括基础系统固件头部和基础系统固件程序;所述应用系统固件包包括应用系统固件头部和应用系统固件程序。
本申请提供一种固件升级装置,应用于摄像机,所述摄像机包括基础系统存储区和应用系统存储区,所述基础系统存储区和所述应用系统存储区是不同逻辑区域,所述基础系统存储区中数据与所述应用系统存储区中数据相互独立,所述应用系统存储区大于或等于所述基础系统存储区,所述装置包括:
确定模块,用于确定需要对所述摄像机进行固件升级;
获取模块,用于从外部设备获取基础系统固件包;其中,用于对所述摄像机进行固件升级的完整系统固件包包括所述基础系统固件包和应用系统固件包,所述应用系统固件包大于或等于所述基础系统固件包;所述基础系统固件包的升级过程不依赖于所述应用系统固件包的升级过程,且所述应用系统固件包的升级过程依赖于所述基础系统固件包的升级过程;
存储模块,用于将所述基础系统固件包存储到应用系统存储区;在将所述基础系统固件包成功存储到所述应用系统存储区后,从所述应用系统存储区读取所述基础系统固件包,将所述基础系统固件包存储到所述基础系统存储区;
所述获取模块,还用于在将所述基础系统固件包成功存储到所述基础系统存储区之后,从外部设备获取所述应用系统固件包;
所述存储模块,还用于将所述应用系统固件包存储到所述应用系统存储区,以通过所述应用系统固件包替换所述应用系统存储区中的基础系统固件包。
本申请提供一种摄像机,所述摄像机包括基础系统存储区和应用系统存储区,所述基础系统存储区和所述应用系统存储区是不同逻辑区域,所述基础系统存储区中数据与所述应用系统存储区中数据相互独立,所述应用系统存储区大于或等于所述基础系统存储区,所述摄像机还包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现如下步骤:
在确定需要对所述摄像机进行固件升级后,从外部设备获取基础系统固件包;其中,用于对所述摄像机进行固件升级的完整系统固件包包括所述基础系统固件包和应用系统固件包,所述应用系统固件包大于或等于所述基础系统固件包;所述基础系统固件包的升级过程不依赖于所述应用系统固件包的升级过程,所述应用系统固件包的升级过程依赖于所述基础系统固件包的升级过程;
将所述基础系统固件包存储到所述应用系统存储区;在将所述基础系统固件包成功存储到所述应用系统存储区之后,从所述应用系统存储区读取所述基础系统固件包,将所述基础系统固件包存储到所述基础系统存储区;
在将所述基础系统固件包成功存储到所述基础系统存储区之后,从外部设备获取应用系统固件包,将所述应用系统固件包存储到所述应用系统存储区,以通过所述应用系统固件包替换所述应用系统存储区中的基础系统固件包。
由以上技术方案可见,本申请实施例中,可以将摄像机的存储区域划分为基础系统存储区和应用系统存储区,基础系统存储区和应用系统存储区是不同逻辑区域,基础系统存储区中数据与应用系统存储区中数据相互独立,即基础系统存储区中数据损坏时,不会影响应用系统存储区中数据,应用系统存储区中数据损坏时,不会影响基础系统存储区中数据。在此基础上,可以先将基础系统固件包(基于基础系统固件包已经能够实现固件升级)存储到应用系统存储区(后续记为升级过程1)。在将基础系统固件包成功存储到应用系统存储区之后,从应用系统存储区读取基础系统固件包,将基础系统固件包存储到基础系统存储区(后续记为升级过程2)。在将基础系统固件包成功存储到基础系统存储区之后,将应用系统固件包存储到应用系统存储区(后续记为升级过程3)。
在升级过程1中,若出现断网或断电等情况,由于基础系统存储区中存储有升级前的基础系统固件包,因此,可以运行升级前的基础系统固件包,并进行固件升级。在升级过程2中,若出现断网或断电等情况,虽然基础系统存储区中的升级前的基础系统固件包被破坏,但是,应用系统存储区中存储有升级后的基础系统固件包,因此,可以运行升级后的基础系统固件包,并进行固件升级。在升级过程3中,若出现断网或断电等情况,虽然应用系统存储区中的升级前的应用系统固件包被破坏,但是,基础系统存储区中存储有升级后的基础系统固件包,因此,可以运行升级后的基础系统固件包,并进行固件升级。
综上所述,无论在哪个时刻出现断网或断电等情况,摄像机均可以运行基础系统固件包,并进行固件升级,避免无法完成摄像机的固件升级,避免摄像机出现故障,使得摄像机能够正常运行,提高固件升级的可靠性,实现断网断电条件下的摄像机固件升级,防止摄像机无法启动,实现固件升级的断电防护。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。
图1是本申请一种实施方式中的完整系统固件包的结构示意图;
图2是本申请一种实施方式中的完整系统存储区的结构示意图;
图3是本申请一种实施方式中的固件升级方法的流程示意图;
图4是本申请一种实施方式中的固件升级方法的流程示意图;
图5是本申请一种实施方式中的固件升级方法的流程示意图;
图6是本申请一种实施方式中的固件升级装置的结构示意图;
图7是本申请一种实施方式中的摄像机的硬件结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在需要对摄像机进行固件升级时,用于对摄像机进行固件升级的新固件包可以称为完整系统固件包,本申请实施例中,将用于对摄像机进行固件升级的完整系统固件包划分为基础系统固件包(也称为最小系统固件包)和应用系统固件包,即,完整系统固件包可以包括基础系统固件包和应用系统固件包。
完整系统固件包:完整系统固件包是摄像机运行所需要的所有完整软件程序及其描述的集合,可以是需要对摄像机进行固件升级时需要使用的所有软件程序,完整系统固件包可以由基础系统固件包和应用系统固件包组成。
基础系统固件包:基础系统固件包是实现复位启动功能及版本升级功能的程序及其描述的集合,可以在摄像机上独立运行,是完整系统固件包的固件升级操作的最小集,即可以独立运行基础系统固件包对摄像机进行固件升级。
应用系统固件包:应用系统固件包是实现除基础系统固件包功能之外其它功能的程序及其描述的集合,如复位启动功能及版本升级功能之外的其它应用功能的软件程序包,应用系统固件包的运行依赖于基础系统固件包的运行。在运行基础系统固件包的基础上,运行应用系统固件包对摄像机进行固件升级。
综上所述,用于对摄像机进行固件升级的完整系统固件包包括基础系统固件包和应用系统固件包,基础系统固件包的升级过程不依赖于应用系统固件包的升级过程,应用系统固件包的升级过程依赖于基础系统固件包的升级过程。
比如说,在摄像机的固件升级过程中,涉及功能1的升级过程,功能2的升级过程和功能3的升级过程,完整系统固件包可以包括用于实现功能1升级的程序a,用于实现功能2升级的程序b,用于实现功能3升级的程序c。
假设程序a的升级过程不依赖于其它所有程序(如程序b和程序c)的升级过程,程序b的升级过程依赖于其它至少一个程序(如程序a)的升级过程,程序c的升级过程依赖于其它至少一个程序(如程序a和程序b)的升级过程,则:程序a作为基础系统固件包,程序b和程序c均作为应用系统固件包。
当然,上述方式只是将完整系统固件包划分为基础系统固件包和应用系统固件包的示例,对此划分方式不做限制,只要能够将完整系统固件包划分为基础系统固件包和应用系统固件包即可。在一种可能的实施方式中,应用系统固件包大于或等于基础系统固件包,即应用系统固件包比基础系统固件包更大。
示例性的,基础系统固件包可以包括基础系统固件头部及基础系统固件程序,应用系统固件包可以包括应用系统固件头部及应用系统固件程序。
参见图1所示,基础系统固件头部可以包括但不限于以下之一或者任意组合:基础系统程序标志(FIRM_TYPE或FIRM_FLAG):用于标识固件类型,如无效系统、基础系统(表示基础系统固件包)、应用系统(表示应用系统固件包)等。基础系统程序版本(FIRM_VERS):用于标识由FIRM_TYPE所指固件的版本号。基础系统程序长度(FIRM_SIZE):用于标识由FIRM_TYPE所指固件的长度(单位为字节)。基础系统程序校验(FIRM_PCHK):用于标识由FIRM_TYPE所指固件的数据校验结果,是针对基础系统固件程序部分的校验数据。基础系统头部校验(FIRM_HCHK):用于标识由FIRM_TYPE所指固件对应的头部信息校验结果,是针对基础系统固件头部部分的校验数据。
参见图1所示,基础系统固件程序部分是基础系统固件包的程序本身。
参见图1所示,应用系统固件头部可以包括但不限于以下之一或者任意组合:应用系统程序标志(FIRM_TYPE或FIRM_FLAG):用于标识固件类型,如无效系统、基础系统(表示基础系统固件包)、应用系统(表示应用系统固件包)等。应用系统程序版本(FIRM_VERS):用于标识由FIRM_TYPE所指固件的版本号。应用系统程序长度(FIRM_SIZE):用于标识由FIRM_TYPE所指固件的长度(单位为字节)。应用系统程序校验(FIRM_PCHK):用于标识由FIRM_TYPE所指固件的数据校验结果,是针对应用系统固件程序部分的校验数据。应用系统头部校验(FIRM_HCHK):用于标识由FIRM_TYPE所指固件对应的头部信息校验结果,是针对应用系统固件头部部分的校验数据。
参见图1所示,应用系统固件程序部分是应用系统固件包的程序本身。
本申请实施例中,将用于对摄像机的完整系统固件包进行存储的区域称为完整系统存储区,即摄像机的存储介质包括完整系统存储区。可以将完整系统存储区划分为基础系统存储区(也可以称为最小系统存储区)和应用系统存储区,即,完整系统存储区可以包括基础系统存储区和应用系统存储区。
完整系统存储区:完整系统存储区是用于存储完整系统固件包的逻辑空间,完整系统存储区可以位于摄像机的指定存储介质(如硬件掉电记忆存储介质等)中,完整系统存储区可以由基础系统存储区和应用系统存储区组成。
基础系统存储区:基础系统存储区是用于存储基础系统固件包的逻辑分区。
应用系统存储区:应用系统存储区是用于存储应用系统固件包的逻辑分区。
综上所述,摄像机的完整系统存储区可以包括基础系统存储区和应用系统存储区,基础系统存储区和应用系统存储区可以是不同的逻辑区域,基础系统存储区中数据与应用系统存储区中数据可以相互独立,也就是说,在基础系统存储区中数据损坏时,不会影响应用系统存储区中的数据(即可以从应用系统存储区中正确读取数据),在应用系统存储区中数据损坏时,也不会影响基础系统存储区中的数据(即可以从基础系统存储区中正确读取数据)。
示例性的,在将完整系统存储区划分为基础系统存储区和应用系统存储区时,只要保证基础系统存储区和应用系统存储区是不同的逻辑区域即可,对此划分方式不做限制。在一种可能的实施方式中,应用系统存储区可以大于或者等于基础系统存储区,即应用系统存储区比基础系统存储区更大。
参见图2所示,基础系统存储区可以包括用于存储基础系统固件头部的存储区域1,以及,用于存储基础系统固件程序的存储区域2。存储区域1用于存储基础系统固件头部的基础系统程序标志(FIRM_TYPE或FIRM_FLAG)、基础系统程序版本(FIRM_VERS)、基础系统程序长度(FIRM_SIZE)、基础系统程序校验(FIRM_PCHK)、基础系统头部校验(FIRM_HCHK)等内容。存储区域2用于存储基础系统固件程序,即存储基础系统固件包的程序本身。
参见图2所示,应用系统存储区可以包括用于存储应用系统固件头部的存储区域3,以及,用于存储应用系统固件程序的存储区域4。存储区域3用于存储应用系统固件头部的应用系统程序标志(FIRM_TYPE或FIRM_FLAG)、应用系统程序版本(FIRM_VERS)、应用系统程序长度(FIRM_SIZE)、应用系统程序校验(FIRM_PCHK)、应用系统头部校验(FIRM_HCHK)等内容。存储区域4用于存储应用系统固件程序,即存储应用系统固件包的程序本身。
在一种可能的实施方式中,将基础系统存储区的大小记为MPS(单位字节),将应用系统存储区的大小记为APS(单位字节),将基础系统固件包的大小记为MFS(单位字节),将应用系统固件包的大小记为AFS(单位字节),则需要约束APS>=MPS>0,AFS>=MFS>0,0<MFS<=MPS,0<AFS<=APS。
以下结合具体实施例,对本申请实施例的固件升级方法进行说明。
参见图3所示,为本申请实施例中提出的固件升级方法的流程示意图,该方法可以应用于摄像机,即需要进行固件升级的摄像机,该方法可以包括:
步骤301,在确定需要对摄像机进行固件升级后,从外部设备获取基础系统固件包,并将该基础系统固件包存储到应用系统存储区。
在一种可能的实施方式中,确定需要对摄像机进行固件升级,可以包括但不限于:获取操作用户发送的升级请求,该升级请求可以包括该操作用户的账户信息。若基于该账户信息确定该操作用户为合法用户,且该操作用户具有摄像机的升级权限,则可以获取基础系统存储区中已存储的基础系统固件包的第一版本和用于对摄像机进行固件升级的基础系统固件包的第二版本;若该第二版本高于该第一版本,则可以确定需要对摄像机进行固件升级。
在一种可能的实施方式中,将该基础系统固件包存储到应用系统存储区,可以包括但不限于:若应用系统存储区具有第一状态,则为应用系统存储区的第一状态设置异常标记,异常标记表示应用系统存储区正在更新。在为应用系统存储区的第一状态设置异常标记之后,才将该基础系统固件包存储到应用系统存储区。在将该基础系统固件包存储到应用系统存储区之后,将应用系统存储区的第一状态从异常标记修改为复用标记,复用标记表示应用系统存储区已存储基础系统固件包。至此,成功将基础系统固件包存储到应用系统存储区。
步骤302,在将该基础系统固件包成功存储到应用系统存储区之后,从应用系统存储区读取基础系统固件包,将基础系统固件包存储到基础系统存储区。
在一种可能的实施方式中,将基础系统固件包存储到基础系统存储区,可以包括但不限于:若基础系统存储区具有第二状态,则为基础系统存储区的第二状态设置异常标记,异常标记表示基础系统存储区正在更新。在为基础系统存储区的第二状态设置异常标记之后,才将该基础系统固件包存储到基础系统存储区。在将该基础系统固件包存储到基础系统存储区之后,将基础系统存储区的第二状态从异常标记修改为正常标记,该正常标记表示基础系统存储区已经完成更新。至此,成功将该基础系统固件包存储到基础系统存储区。
步骤303,在将该基础系统固件包成功存储到基础系统存储区之后,从外部设备获取应用系统固件包,将该应用系统固件包存储到应用系统存储区,以通过该应用系统固件包替换应用系统存储区中的该基础系统固件包。
在一种可能的实施方式中,将该应用系统固件包存储到应用系统存储区,可以包括但不限于:将该应用系统存储区的第一状态从复用标记修改为异常标记,该异常标记表示应用系统存储区正在更新。在将该应用系统存储区的第一状态从复用标记修改为异常标记之后,才将该应用系统固件包存储到该应用系统存储区。在将该应用系统固件包存储到该应用系统存储区之后,将该应用系统存储区的第一状态从异常标记修改为正常标记,该正常标记表示应用系统存储区已经完成更新。至此,成功将应用系统固件包存储到应用系统存储区。
示例性的,在将该应用系统固件包存储到该应用系统存储区的过程中,若该应用系统固件包由多个分片组成,则依次将每个分片存储到应用系统存储区。比如说,若该应用系统固件包由分片1、分片2和分片3组成,则先从外部设备获取应用系统固件包的分片1,将分片1存储到应用系统存储区,然后从外部设备获取应用系统固件包的分片2,将分片2存储到应用系统存储区,然后从外部设备获取应用系统固件包的分片3,将分片3存储到应用系统存储区。
至此,成功将基础系统固件包存储到基础系统存储区,将应用系统固件包存储到应用系统存储区,从而完成摄像机的固件升级过程。摄像机的固件升级过程,实际上就是将基础系统固件包存储到基础系统存储区,将应用系统固件包存储到应用系统存储区的过程。在将基础系统固件包存储到基础系统存储区,将应用系统固件包存储到应用系统存储区后,摄像机每次重新启动,就运行基础系统固件包和应用系统固件包,使用基础系统固件包和应用系统固件包实现相关功能,从而使用升级后的基础系统固件包和应用系统固件包实现相关功能。
在一种可能的实施方式中,在摄像机重新启动之后,若基础系统存储区的第二状态为正常标记,则从该基础系统存储区中读取基础系统固件包,并运行该基础系统固件包。若该基础系统存储区的第二状态为异常标记,且该应用系统存储区的第一状态为复用标记,则从该应用系统存储区中读取该基础系统固件包,并将该基础系统固件包存储到基础系统存储区;然后,可以从该基础系统存储区中读取该基础系统固件包,并运行该基础系统固件包。
综上所述,可以从该基础系统存储区中读取该基础系统固件包,并运行该基础系统固件包,即正确运行该基础系统固件包,实现摄像机的固件升级。
在一种可能的实施方式中,在摄像机重新启动之后,若已成功运行基础系统固件包,则:若应用系统存储区的第一状态为正常标记,则可以从该应用系统存储区中读取应用系统固件包,并运行该应用系统固件包。若该应用系统存储区的第一状态为异常标记,则可以从外部设备获取应用系统固件包,并将该应用系统固件包存储到该应用系统存储区;然后,可以从该应用系统存储区中读取该应用系统固件包,并运行该应用系统固件包。
综上所述,可以从该应用系统存储区中读取该应用系统固件包,并运行该应用系统固件包,即正确运行该应用系统固件包,实现摄像机的固件升级。
在上述实施例中,基础系统固件包可以包括基础系统固件头部和基础系统固件程序;应用系统固件包可以包括应用系统固件头部和应用系统固件程序。
示例性的,上述执行顺序只是为了方便描述给出的示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
由以上技术方案可见,本申请实施例中,可以先将基础系统固件包存储到应用系统存储区(记为升级过程1)。在将基础系统固件包成功存储到应用系统存储区之后,从应用系统存储区读取基础系统固件包,将基础系统固件包存储到基础系统存储区(记为升级过程2)。在将基础系统固件包成功存储到基础系统存储区之后,将应用系统固件包存储到应用系统存储区(记为升级过程3)。
在升级过程1中,若出现断网或断电等情况,由于基础系统存储区中存储有升级前的基础系统固件包,因此,可以运行升级前的基础系统固件包,并进行固件升级。在升级过程2中,若出现断网或断电等情况,虽然基础系统存储区中的升级前的基础系统固件包被破坏,但是,应用系统存储区中存储有升级后的基础系统固件包,因此,可以运行升级后的基础系统固件包,并进行固件升级。在升级过程3中,若出现断网或断电等情况,虽然应用系统存储区中的升级前的应用系统固件包被破坏,但是,基础系统存储区中存储有升级后的基础系统固件包,因此,可以运行升级后的基础系统固件包,并进行固件升级。
综上所述,无论在哪个时刻出现断网或断电等情况,摄像机均可以运行基础系统固件包,并进行固件升级,避免无法完成摄像机的固件升级,避免摄像机出现故障,使得摄像机能够正常运行,提高固件升级的可靠性,实现断网断电条件下的摄像机固件升级,防止摄像机无法启动,实现固件升级的断电防护。
以下结合具体应用场景,对本申请实施例的技术方案进行说明。
参见图4所示,为固件升级方法的流程示意图,该方法可以包括:
步骤401,获取操作用户发送的升级请求,该升级请求可以包括该操作用户的账户信息,该账户信息可以如用户名和密码等,对此账户信息不做限制。
步骤402,若基于该账户信息确定该操作用户为合法用户,且该操作用户具有摄像机的升级权限,则获取基础系统存储区中已存储的基础系统固件包的第一版本和用于对摄像机进行固件升级的基础系统固件包的第二版本。
示例性的,在从升级请求中获取到操作用户的账户信息后,可以校验操作用户的账户信息,校验结果可以为操作用户为合法用户或者操作用户为非法用户。比如说,摄像机本地可以记录所有合法用户的账户信息,若该升级请求中的操作用户的账户信息与本地记录的任一账户信息相同,则校验结果可以为操作用户为合法用户,若该升级请求中的操作用户的账户信息与本地记录的所有账户信息均不相同,则校验结果可以为操作用户为非法用户。
若操作用户为非法用户,则可以向操作用户提示账户信息异常,以使操作用户重新发送升级请求,该升级请求携带更新后的账户信息,摄像机基于该账户信息重新确定操作用户为合法用户或者非法用户。或者,也可以禁止固件升级操作,结束本次固件升级。比如说,判断操作用户的升级次数(即升级请求的发送次数)是否达到次数阈值(可以根据经验配置,如3、5等),若否,则向操作用户提示账户信息异常(用于提示操作用户再次尝试),以使操作用户重新发送升级请求,若是,则禁止固件升级操作,结束本次固件升级。
若操作用户为合法用户,则可以校验该操作用户是否具有摄像机的升级权限,校验结果为该操作用户具有摄像机的升级权限,或者,该操作用户不具有摄像机的升级权限。比如说,摄像机本地可以记录所有具有升级权限的账户信息,若操作用户的账户信息与具有升级权限的任一账户信息相同,则校验结果可以为具有摄像机的升级权限,若操作用户的账户信息与具有升级权限的所有账户信息均不相同,则校验结果可以为不具有摄像机的升级权限。
若操作用户不具有摄像机的升级权限,则可以禁止固件升级操作,结束本次固件升级。若操作用户具有摄像机的升级权限,则可以获取摄像机的全局状态,该全局状态可以为运行状态或者升级状态,运行状态表示摄像机当前正在运行,而没有进行固件升级,升级状态表示摄像机当前正在进行固件升级。
若全局状态为升级状态,则表示摄像机当前已经处于升级过程,可以禁止针对当前升级请求的固件升级操作。若全局状态为运行状态,则表示摄像机当前未处于升级过程,可以允许进行针对当前升级请求的固件升级操作。
在允许进行针对当前升级请求的固件升级操作时,需要先比较摄像机本地的固件版本(后续记为第一版本)与外部设备提供的固件版本(后续记为第二版本),若第一版本高于或者等于第二版本,则表示不需要对摄像机进行固件升级。若第二版本高于第一版本,则表示需要对摄像机进行固件升级,将全局状态修改为升级状态,执行固件升级操作,具体操作参见后续实施例。
为了比较摄像机本地的固件版本与外部设备提供的固件版本,可以采用如下方式:获取基础系统存储区中已存储的基础系统固件包的基础系统固件头部,参见图1所示,该基础系统固件头部包括基础系统程序版本和基础系统头部校验等字段,该基础系统程序版本字段包括的就是摄像机本地的固件版本(即第一版本)。然后,对基础系统固件头部进行校验,比如说,基于基础系统固件头部的所有内容确定出第一校验值,若该第一校验值与基础系统头部校验字段中的第二校验值相同,则校验结果为成功,否则,校验结果为失败。
若校验结果为失败,则设置全局状态为运行状态,向操作用户提示固件包数据获取失败导致尚未升级原有固件版本,结束本次固件升级操作。
若校验结果为成功,则从外部设备获取用于对摄像机进行固件升级的基础系统固件包的基础系统固件头部,即外部设备通过网络将该基础系统固件包的基础系统固件头部发送给摄像机。该基础系统固件头部也包括基础系统程序版本和基础系统头部校验等字段,该基础系统程序版本字段包括的就是外部设备提供的固件版本(即第二版本)。然后,对基础系统固件头部进行校验,比如说,基于基础系统固件头部的所有内容确定出第三校验值,若第三校验值与基础系统头部校验字段中的第四校验值相同,则校验结果为成功,否则,校验结果为失败。若校验结果为失败,则设置全局状态为运行状态,向操作用户提示固件包数据获取失败导致尚未升级原有固件版本,结束本次固件升级操作。若校验结果为成功,则比较摄像机本地的第一版本和外部设备提供的第二版本。
综上所述,可以确定操作用户是否为合法用户,若是合法用户,则可以确定操作用户是否具有摄像机的升级权限,若具有摄像机的升级权限,则可以获取基础系统存储区中已存储的基础系统固件包的第一版本和用于对摄像机进行固件升级的基础系统固件包的第二版本,并比较第一版本和第二版本。
步骤403,若该第二版本高于该第一版本,则可以确定需要对摄像机进行固件升级,并执行后续步骤404。或者,若该第二版本不高于该第一版本,则可以确定不需要对摄像机进行固件升级,结束本次固件升级操作。
步骤404,在确定需要对摄像机进行固件升级后,从外部设备获取基础系统固件包,如从外部设备获取基础系统固件包的基础系统固件程序。
参见图1所示,基础系统固件包可以包括基础系统固件头部和基础系统固件程序,在步骤402中,已经获取基础系统固件包的基础系统固件头部,因此,步骤404中,只从外部设备获取基础系统固件包的基础系统固件程序,例如,外部设备通过网络将基础系统固件包的基础系统固件程序发送给摄像机。
在得到基础系统固件包的基础系统固件程序之后,还可以对该基础系统固件程序进行校验。比如说,基于该基础系统固件程序的所有内容确定出校验值1,并从基础系统固件头部的基础系统程序校验(FIRM_PCHK)中读取校验值2,若校验值1与校验值2相同,则校验结果为成功,否则,校验结果为失败。
若校验结果为失败,则设置全局状态为运行状态,向操作用户提示固件包数据获取失败导致尚未升级原有固件版本,结束本次固件升级操作。
若校验结果为成功,则成功从外部设备获取到基础系统固件包,该基础系统固件包包括基础系统固件头部和基础系统固件程序,并执行后续步骤。
步骤405,若应用系统存储区具有第一状态,则为应用系统存储区的第一状态设置异常标记,该异常标记表示应用系统存储区正在更新。示例性的,在应用系统存储区的第一状态为异常标记时,表示应用系统存储区中已有数据被破坏,正在向应用系统存储区中写入数据,不能从应用系统存储区中读取数据。
步骤406,在为应用系统存储区的第一状态设置异常标记之后,将基础系统固件包存储到应用系统存储区。比如说,先将基础系统固件包的基础系统固件头部存储到应用系统存储区,在将基础系统固件头部成功存储到应用系统存储区之后,将基础系统固件包的基础系统固件程序存储到应用系统存储区,在将基础系统固件程序成功存储到应用系统存储区之后,执行后续步骤。
示例性的,若未成功将基础系统固件包存储到应用系统存储区,则设置全局状态为复位启动状态,向操作用户提示固件包升级失败导致原有系统破坏,且需要重新升级操作进行修复,结束本次固件升级操作,并执行复位启动。
步骤407,在将基础系统固件包成功存储到应用系统存储区之后,将应用系统存储区的第一状态从异常标记修改为复用标记,该复用标记表示应用系统存储区已存储基础系统固件包,即已经成功存储基础系统固件包。
示例性的,在将基础系统固件包成功存储到应用系统存储区之后,还可以读取基础系统固件包的基础系统固件程序,并对该基础系统固件程序进行校验。若校验结果为失败,则设置全局状态为复位启动状态,向操作用户提示固件包升级失败导致原有系统破坏,且需要重新升级操作进行修复。若校验结果为成功,则将应用系统存储区的第一状态从异常标记修改为复用标记。
步骤408,在将应用系统存储区的第一状态修改为复用标记之后,从应用系统存储区中读取基础系统固件包,如基础系统固件头部和基础系统固件程序。
示例性的,可以先从应用系统存储区中读取基础系统固件包的基础系统固件头部,并对基础系统固件头部进行校验。若校验结果为失败,则设置全局状态为复位启动状态,向操作用户提示固件包升级失败导致原有系统破坏,且需要重新升级操作进行修复。若校验结果为成功,则继续从应用系统存储区中读取基础系统固件包的基础系统固件程序,并对基础系统固件程序进行校验。若校验结果为失败,则设置全局状态为复位启动状态,向操作用户提示固件包升级失败导致原有系统破坏,且需要重新升级操作进行修复。若校验结果为成功,则成功从应用系统存储区中读取到基础系统固件包,并执行后续步骤。
步骤409,若基础系统存储区具有第二状态,则为基础系统存储区的第二状态设置异常标记,该异常标记表示基础系统存储区正在更新。示例性的,在基础系统存储区的第二状态为异常标记时,表示基础系统存储区中已有数据被破坏,正在向基础系统存储区中写入数据,不能从基础系统存储区中读取数据。
步骤410,在为基础系统存储区的第二状态设置异常标记之后,将基础系统固件包存储到基础系统存储区。比如说,先将基础系统固件包的基础系统固件头部存储到基础系统存储区,在将基础系统固件头部成功存储到基础系统存储区之后,将基础系统固件包的基础系统固件程序存储到基础系统存储区,在将基础系统固件程序成功存储到基础系统存储区之后,执行后续步骤。
示例性的,若未成功将基础系统固件包存储到基础系统存储区,则设置全局状态为复位启动状态,向操作用户提示固件包升级失败导致原有系统破坏,且需要重新升级操作进行修复,结束本次固件升级操作,并执行复位启动。
步骤411,在将基础系统固件包成功存储到基础系统存储区之后,将该基础系统存储区的第二状态从异常标记修改为正常标记,该正常标记表示该基础系统存储区已经完成更新,即已经成功存储该基础系统固件包。
示例性的,在将基础系统固件包成功存储到基础系统存储区之后,还可以读取基础系统固件包的基础系统固件程序,并对该基础系统固件程序进行校验。若校验结果为失败,则设置全局状态为复位启动状态,向操作用户提示固件包升级失败导致原有系统破坏,且需要重新升级操作进行修复。若校验结果为成功,则将基础系统存储区的第二状态从异常标记修改为正常标记。
步骤412,在将基础系统存储区的第二状态从异常标记修改为正常标记之后,从外部设备获取应用系统固件包,如应用系统固件头部和应用系统固件程序。
示例性的,可以从外部设备获取应用系统固件包的应用系统固件头部,并对应用系统固件头部进行校验,校验方式与基础系统固件头部的校验方式类似,在此不再赘述。若校验结果为失败,则设置全局状态为复位启动状态,向操作用户提示固件包升级失败导致原有系统破坏,且需要重新升级操作进行修复。若校验结果为成功,则从外部设备获取应用系统固件包的应用系统固件程序,对应用系统固件程序进行校验,校验方式与基础系统固件程序的校验方式类似,在此不再赘述。若校验结果为失败,则设置全局状态为复位启动状态,向操作用户提示固件包升级失败导致原有系统破坏,且需要重新升级操作进行修复。若校验结果为成功,则成功从外部设备获取应用系统固件包,并执行后续步骤。
步骤413,针对应用系统存储区的第一状态,将应用系统存储区的第一状态从复用标记修改为异常标记,该异常标记表示应用系统存储区正在更新。在应用系统存储区的第一状态为异常标记时,表示应用系统存储区中已有数据被破坏,正在向应用系统存储区中写入数据,不能从应用系统存储区中读取数据。
步骤414,在为应用系统存储区的第一状态设置异常标记之后,将应用系统固件包存储到应用系统存储区,以通过该应用系统固件包替换应用系统存储区中的基础系统固件包。比如说,可以先将应用系统固件包的应用系统固件头部存储到应用系统存储区,在将应用系统固件头部成功存储到应用系统存储区之后,再将应用系统固件包的应用系统固件程序存储到应用系统存储区,在将应用系统固件程序成功存储到应用系统存储区之后,执行后续步骤。
示例性的,若未成功将应用系统固件包存储到应用系统存储区,则设置全局状态为复位启动状态,向操作用户提示固件包升级失败导致原有系统破坏,且需要重新升级操作进行修复,结束本次固件升级操作,并执行复位启动。
示例性的,若应用系统固件包的应用系统固件程序较大,则可以将应用系统固件程序划分为多个分片,在从外部设备获取应用系统固件程序时,依次获取该应用系统固件程序的每个分片,依次将每个分片存储到应用系统存储区。
步骤415,在将应用系统固件包成功存储到应用系统存储区之后,将该应用系统存储区的第一状态从异常标记修改为正常标记,该正常标记表示应用系统存储区已经完成更新,即已经成功存储该应用系统固件包。
示例性的,在将应用系统固件包成功存储到应用系统存储区之后,还可以读取应用系统固件包的应用系统固件程序,并对该应用系统固件程序进行校验。若校验结果为失败,则设置全局状态为复位启动状态,向操作用户提示固件包升级失败导致原有系统破坏,且需要重新升级操作进行修复。若校验结果为成功,则将该应用系统存储区的第一状态从异常标记修改为正常标记。
至此,成功将基础系统固件包存储到基础系统存储区,将应用系统固件包存储到应用系统存储区,完成摄像机的固件升级过程。然后,还可以设置全局状态为复位启动状态,向操作用户提示固件包升级成功,结束本次固件升级操作,并执行复位启动,即执行固件升级成功后的重新启动过程。
在一种可能的实施方式中,摄像机每次重新启动(在摄像机的全局状态为复位启动状态时,会重新启动摄像机,也可以在任意时刻重新启动摄像机)之后,参见图5所示,为固件升级方法的流程示意图,该方法可以包括:
步骤501,获取基础系统存储区的第二状态。示例性的,若该第二状态为正常标记,则执行步骤502,若该第二状态为异常标记,则执行步骤506。
步骤502,从基础系统存储区中读取基础系统固件包,运行基础系统固件包。
示例性的,若基础系统存储区的第二状态为正常标记,则表示已经成功将基础系统固件包存储到基础系统存储区,完成基础系统固件包的固件升级,因此,可以从基础系统存储区中读取基础系统固件包,并运行基础系统固件包。
示例性的,由于基础系统固件包可以包括基础系统固件头部和基础系统固件程序,因此,可以先从基础系统存储区中读取基础系统固件头部,并对该基础系统固件头部进行校验。若校验结果为失败,则基础系统固件包异常,将全局状态设置为运行状态,向操作用户提示基础系统固件包修复失败且基础系统固件包无法运行,需要重新升级基础系统固件包,结束固件复位启动流程。
若校验结果为成功,则继续从该基础系统存储区中读取基础系统固件程序,并对该基础系统固件程序进行校验。若校验结果为失败,则将全局状态设置为运行状态,向操作用户提示基础系统固件包修复失败且基础系统固件包无法运行,需要重新升级基础系统固件包,结束固件复位启动流程。若校验结果为成功,则成功从基础系统存储区中读取基础系统固件包,并运行基础系统固件包。
步骤503,获取应用系统存储区的第一状态。示例性的,若该第一状态为正常标记,则执行步骤504,若该第一状态为异常标记,则执行步骤505。
步骤504,从应用系统存储区中读取应用系统固件包,运行应用系统固件包。
示例性的,若应用系统存储区的第一状态为正常标记,则表示已经成功将应用系统固件包存储到应用系统存储区,完成应用系统固件包的固件升级,因此,可以从应用系统存储区中读取应用系统固件包,并运行应用系统固件包。
示例性的,由于应用系统固件包可以包括应用系统固件头部和应用系统固件程序,因此,可以先从应用系统存储区中读取应用系统固件头部,并对该应用系统固件头部进行校验。若校验结果为失败,则应用系统固件包异常,将全局状态设置为运行状态,向操作用户提示应用系统固件包修复失败且应用系统固件包无法运行,需要重新升级应用系统固件包,结束固件复位启动流程。
若校验结果为成功,则继续从该应用系统存储区中读取应用系统固件程序,并对该应用系统固件程序进行校验。若校验结果为失败,则将全局状态设置为运行状态,向操作用户提示应用系统固件包修复失败且应用系统固件包无法运行,需要重新升级应用系统固件包,结束固件复位启动流程。若校验结果为成功,则成功从应用系统存储区中读取应用系统固件包,并运行应用系统固件包。
示例性的,在成功运行应用系统固件包之后,可以将全局状态设置为运行状态,向操作用户提示应用系统固件包启动成功,结束固件复位启动流程。
步骤505,从外部设备获取应用系统固件包,并将应用系统固件包存储到应用系统存储区。在将应用系统固件包成功存储到应用系统存储区之后,从该应用系统存储区中读取该应用系统固件包,并运行该应用系统固件包。
示例性的,关于“从外部设备获取应用系统固件包,并将应用系统固件包存储到应用系统存储区”的过程,可以参见步骤412-步骤415,在此不再赘述。
示例性的,关于“从该应用系统存储区中读取该应用系统固件包,并运行该应用系统固件包”的过程,可以参见步骤504,在此不再重复赘述。
步骤506,若基础系统存储区的第二状态为异常标记,则获取应用系统存储区的第一状态,若应用系统存储区的第一状态为复用标记,则执行步骤507。
若应用系统存储区的第一状态不为复用标记,则向操作用户提示需要重新升级基础系统固件包和应用系统固件包,结束固件复位启动流程。
步骤507,从应用系统存储区中读取基础系统固件包,并将该基础系统固件包存储到基础系统存储区。在将该基础系统固件包成功存储到基础系统存储区之后,从基础系统存储区中读取该基础系统固件包,并运行该基础系统固件包。
示例性的,由于应用系统存储区的第一状态为复用标记,因此,应用系统存储区中存储的是基础系统固件包,可以从应用系统存储区中读取基础系统固件包,并将该基础系统固件包存储到基础系统存储区。在将该基础系统固件包存储到基础系统存储区之前,还可以先对该基础系统固件的基础系统固件头部进行校验,并对该基础系统固件的基础系统固件程序进行校验,若二者的校验结果均为成功,则将该基础系统固件包存储到基础系统存储区。
关于“从应用系统存储区中读取基础系统固件包,并将该基础系统固件包存储到基础系统存储区”的过程,可以参见步骤408-步骤411,在此不再赘述。
示例性的,关于“从基础系统存储区中读取该基础系统固件包,并运行该基础系统固件包”的过程,可以参见步骤502,在此不再重复赘述。
步骤508,在将该基础系统固件包成功存储到基础系统存储区之后,还可以从外部设备获取应用系统固件包,并将该应用系统固件包存储到应用系统存储区。在将该应用系统固件包成功存储到应用系统存储区之后,还可以从该应用系统存储区中读取该应用系统固件包,并运行该应用系统固件包。
示例性的,步骤508可以参见步骤505,在此不再重复赘述。
综上所述,可以从基础系统存储区中读取到基础系统固件包,从应用系统存储区中读取到应用系统固件包,并运行基础系统固件包和应用系统固件包,即正确运行基础系统固件包和应用系统固件包,实现摄像机的固件升级。
上述图4和图5的执行顺序只是为了方便描述给出的示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
由以上技术方案可见,本申请实施例中,可以先将基础系统固件包存储到应用系统存储区(记为升级过程1)。在将基础系统固件包成功存储到应用系统存储区之后,从应用系统存储区读取基础系统固件包,将基础系统固件包存储到基础系统存储区(记为升级过程2)。在将基础系统固件包成功存储到基础系统存储区之后,将应用系统固件包存储到应用系统存储区(记为升级过程3)。
在升级过程1中,若出现断网或断电等情况,则基础系统存储区的第二状态为正常标记,应用系统存储区的第一状态为异常标记。由于基础系统存储区中存储有升级前的基础系统固件包,因此,可以运行升级前的基础系统固件包,并重新执行图4所示的固件升级流程,完成摄像机的固件升级。
在升级过程2中,若出现断网或断电等情况,则基础系统存储区的第二状态为异常标记,应用系统存储区的第一状态为复用标记。虽然基础系统存储区中的升级前的基础系统固件包被破坏,但是,应用系统存储区中存储有升级后的基础系统固件包,因此,从应用系统存储区中读取基础系统固件包,并将基础系统固件包存储到基础系统存储区,从基础系统存储区中读取基础系统固件包,并运行基础系统固件包。然后,从外部设备获取应用系统固件包,将应用系统固件包存储到应用系统存储区,并从该应用系统存储区中读取该应用系统固件包,并运行该应用系统固件包。至此,完成摄像机的固件升级。
在升级过程3中,若出现断网或断电等情况,虽然应用系统存储区中的升级前的应用系统固件包被破坏,但基础系统存储区中存储有升级后的基础系统固件包,因此可以运行升级后的基础系统固件包,并从外部设备获取应用系统固件包,将应用系统固件包存储到应用系统存储区,从应用系统存储区中读取该应用系统固件包,并运行该应用系统固件包。至此,完成摄像机的固件升级。
综上所述,无论在哪个时刻出现断网或断电,摄像机均可以运行基础系统固件包,并进行固件升级,避免无法完成摄像机的固件升级,避免摄像机出现故障,使得摄像机能够正常运行,提高固件升级的可靠性,实现断网断电条件下的摄像机固件升级,防止摄像机无法启动,实现固件升级的断网断电防护。
基于与上述方法同样的申请构思,本申请实施例中提出一种固件升级装置,应用于摄像机,所述摄像机包括基础系统存储区和应用系统存储区,所述基础系统存储区和所述应用系统存储区是不同逻辑区域,所述基础系统存储区中数据与所述应用系统存储区中数据相互独立,所述应用系统存储区大于或等于所述基础系统存储区,参见图6所示,为所述装置的结构示意图,所述装置包括:
确定模块61,用于确定需要对所述摄像机进行固件升级;
获取模块62,用于从外部设备获取基础系统固件包;其中,用于对所述摄像机进行固件升级的完整系统固件包包括所述基础系统固件包和应用系统固件包,所述应用系统固件包大于或等于所述基础系统固件包;所述基础系统固件包的升级过程不依赖于所述应用系统固件包的升级过程,且所述应用系统固件包的升级过程依赖于所述基础系统固件包的升级过程;
存储模块63,用于将所述基础系统固件包存储到应用系统存储区;在将所述基础系统固件包成功存储到所述应用系统存储区后,从所述应用系统存储区读取所述基础系统固件包,将所述基础系统固件包存储到所述基础系统存储区;
所述获取模块62,还用于在将所述基础系统固件包成功存储到所述基础系统存储区之后,从外部设备获取所述应用系统固件包;
所述存储模块63,还用于将所述应用系统固件包存储到所述应用系统存储区,以通过所述应用系统固件包替换所述应用系统存储区中的基础系统固件包。
示例性的,所述确定模块61确定需要对所述摄像机进行固件升级时具体用于:获取操作用户发送的升级请求,所述升级请求包括操作用户的账户信息;
若基于所述账户信息确定所述操作用户为合法用户,且所述操作用户具有所述摄像机的升级权限,则获取基础系统存储区中已存储的基础系统固件包的第一版本和用于对摄像机进行固件升级的基础系统固件包的第二版本;
若第二版本高于第一版本,则确定需要对所述摄像机进行固件升级。
示例性的,所述存储模块63将所述基础系统固件包存储到所述应用系统存储区时具体用于:若所述应用系统存储区具有第一状态,则为所述应用系统存储区的第一状态设置异常标记,所述异常标记表示所述应用系统存储区正在更新;将所述基础系统固件包存储到所述应用系统存储区;
将所述应用系统存储区的第一状态从所述异常标记修改为复用标记,所述复用标记表示所述应用系统存储区已存储基础系统固件包。
示例性的,所述存储模块63将所述基础系统固件包存储到所述基础系统存储区时具体用于:若所述基础系统存储区具有第二状态,则为所述基础系统存储区的第二状态设置异常标记,所述异常标记表示所述基础系统存储区正在更新;将所述基础系统固件包存储到所述基础系统存储区;
将所述基础系统存储区的第二状态从所述异常标记修改为正常标记,所述正常标记表示所述基础系统存储区已经完成更新。
示例性的,所述存储模块63将所述应用系统固件包存储到所述应用系统存储区时具体用于:将所述应用系统存储区的第一状态从所述复用标记修改为异常标记;将所述应用系统固件包存储到所述应用系统存储区;其中,若所述应用系统固件包由多个分片组成,则依次将每个分片存储到所述应用系统存储区;
将所述应用系统存储区的第一状态从所述异常标记修改为正常标记,所述正常标记表示所述应用系统存储区已经完成更新。
基于与上述方法同样的申请构思,本申请实施例中提出一种摄像机,所述摄像机包括基础系统存储区和应用系统存储区,所述基础系统存储区和所述应用系统存储区是不同逻辑区域,所述基础系统存储区中数据与所述应用系统存储区中数据相互独立,所述应用系统存储区大于或等于所述基础系统存储区,参见图7所示,所述摄像机包括:处理器71和机器可读存储介质72,所述机器可读存储介质72存储有能够被所述处理器71执行的机器可执行指令;
所述处理器71用于执行机器可执行指令,以实现如下步骤:
在确定需要对所述摄像机进行固件升级后,从外部设备获取基础系统固件包;其中,用于对所述摄像机进行固件升级的完整系统固件包包括所述基础系统固件包和应用系统固件包,所述应用系统固件包大于或等于所述基础系统固件包;所述基础系统固件包的升级过程不依赖于所述应用系统固件包的升级过程,所述应用系统固件包的升级过程依赖于所述基础系统固件包的升级过程;
将所述基础系统固件包存储到所述应用系统存储区;在将所述基础系统固件包成功存储到所述应用系统存储区之后,从所述应用系统存储区读取所述基础系统固件包,将所述基础系统固件包存储到所述基础系统存储区;
在将所述基础系统固件包成功存储到所述基础系统存储区之后,从外部设备获取应用系统固件包,将所述应用系统固件包存储到所述应用系统存储区,以通过所述应用系统固件包替换所述应用系统存储区中的基础系统固件包。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的固件升级方法。
其中,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种固件升级方法,其特征在于,应用于摄像机,所述摄像机包括基础系统存储区和应用系统存储区,所述基础系统存储区和所述应用系统存储区是不同逻辑区域,所述基础系统存储区中数据与所述应用系统存储区中数据相互独立,所述应用系统存储区大于或等于所述基础系统存储区,所述方法包括:
在确定需要对所述摄像机进行固件升级后,从外部设备获取基础系统固件包;其中,用于对所述摄像机进行固件升级的完整系统固件包包括所述基础系统固件包和应用系统固件包,所述应用系统固件包大于或等于所述基础系统固件包;所述基础系统固件包的升级过程不依赖于所述应用系统固件包的升级过程,所述应用系统固件包的升级过程依赖于所述基础系统固件包的升级过程;
将所述基础系统固件包存储到所述应用系统存储区;在将所述基础系统固件包成功存储到所述应用系统存储区之后,从所述应用系统存储区读取所述基础系统固件包,将所述基础系统固件包存储到所述基础系统存储区;
在将所述基础系统固件包成功存储到所述基础系统存储区之后,从外部设备获取应用系统固件包,将所述应用系统固件包存储到所述应用系统存储区,以通过所述应用系统固件包替换所述应用系统存储区中的基础系统固件包。
2.根据权利要求1所述的方法,其特征在于,
所述确定需要对所述摄像机进行固件升级,包括:
获取操作用户发送的升级请求,所述升级请求包括操作用户的账户信息;
若基于所述账户信息确定所述操作用户为合法用户,且所述操作用户具有所述摄像机的升级权限,则获取基础系统存储区中已存储的基础系统固件包的第一版本和用于对摄像机进行固件升级的基础系统固件包的第二版本;
若第二版本高于第一版本,则确定需要对所述摄像机进行固件升级。
3.根据权利要求1所述的方法,其特征在于,
所述将所述基础系统固件包存储到所述应用系统存储区,包括:
若所述应用系统存储区具有第一状态,则为所述应用系统存储区的第一状态设置异常标记,所述异常标记表示所述应用系统存储区正在更新;
将所述基础系统固件包存储到所述应用系统存储区;
将所述应用系统存储区的第一状态从所述异常标记修改为复用标记,所述复用标记表示所述应用系统存储区已存储基础系统固件包。
4.根据权利要求3所述的方法,其特征在于,
所述将所述基础系统固件包存储到所述基础系统存储区,包括:
若所述基础系统存储区具有第二状态,则为所述基础系统存储区的第二状态设置异常标记,所述异常标记表示所述基础系统存储区正在更新;
将所述基础系统固件包存储到所述基础系统存储区;
将所述基础系统存储区的第二状态从所述异常标记修改为正常标记,所述正常标记表示所述基础系统存储区已经完成更新。
5.根据权利要求3所述的方法,其特征在于,
所述将所述应用系统固件包存储到所述应用系统存储区,包括:
将所述应用系统存储区的第一状态从所述复用标记修改为异常标记;
将所述应用系统固件包存储到所述应用系统存储区;其中,若所述应用系统固件包由多个分片组成,则依次将每个分片存储到所述应用系统存储区;
将所述应用系统存储区的第一状态从所述异常标记修改为正常标记,所述正常标记表示所述应用系统存储区已经完成更新。
6.根据权利要求4所述的方法,其特征在于,
在所述摄像机重新启动之后,所述方法还包括:
若所述基础系统存储区的第二状态为正常标记,则从所述基础系统存储区中读取所述基础系统固件包,并运行所述基础系统固件包;
若所述基础系统存储区的第二状态为异常标记,所述应用系统存储区的第一状态为复用标记,则从所述应用系统存储区中读取所述基础系统固件包,将所述基础系统固件包存储到所述基础系统存储区;从所述基础系统存储区中读取所述基础系统固件包,并运行所述基础系统固件包。
7.根据权利要求5所述的方法,其特征在于,在所述摄像机重新启动之后,若已成功运行所述基础系统固件包,所述方法还包括:
若所述应用系统存储区的第一状态为正常标记,则从所述应用系统存储区中读取所述应用系统固件包,并运行所述应用系统固件包;
若所述应用系统存储区的第一状态为异常标记,则从外部设备获取应用系统固件包,将所述应用系统固件包存储到所述应用系统存储区;从所述应用系统存储区中读取所述应用系统固件包,并运行所述应用系统固件包。
8.根据权利要求1-7任一项所述的方法,其特征在于,
所述基础系统固件包包括基础系统固件头部和基础系统固件程序;
所述应用系统固件包包括应用系统固件头部和应用系统固件程序。
9.一种固件升级装置,其特征在于,应用于摄像机,所述摄像机包括基础系统存储区和应用系统存储区,所述基础系统存储区和所述应用系统存储区是不同逻辑区域,所述基础系统存储区中数据与所述应用系统存储区中数据相互独立,所述应用系统存储区大于或等于所述基础系统存储区,所述装置包括:
确定模块,用于确定需要对所述摄像机进行固件升级;
获取模块,用于从外部设备获取基础系统固件包;其中,用于对所述摄像机进行固件升级的完整系统固件包包括所述基础系统固件包和应用系统固件包,所述应用系统固件包大于或等于所述基础系统固件包;所述基础系统固件包的升级过程不依赖于所述应用系统固件包的升级过程,且所述应用系统固件包的升级过程依赖于所述基础系统固件包的升级过程;
存储模块,用于将所述基础系统固件包存储到应用系统存储区;在将所述基础系统固件包成功存储到所述应用系统存储区后,从所述应用系统存储区读取所述基础系统固件包,将所述基础系统固件包存储到所述基础系统存储区;
所述获取模块,还用于在将所述基础系统固件包成功存储到所述基础系统存储区之后,从外部设备获取所述应用系统固件包;
所述存储模块,还用于将所述应用系统固件包存储到所述应用系统存储区,以通过所述应用系统固件包替换所述应用系统存储区中的基础系统固件包。
10.一种摄像机,其特征在于,所述摄像机包括基础系统存储区和应用系统存储区,所述基础系统存储区和所述应用系统存储区是不同逻辑区域,所述基础系统存储区中数据与所述应用系统存储区中数据相互独立,所述应用系统存储区大于或等于所述基础系统存储区,所述摄像机还包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现如下步骤:
在确定需要对所述摄像机进行固件升级后,从外部设备获取基础系统固件包;其中,用于对所述摄像机进行固件升级的完整系统固件包包括所述基础系统固件包和应用系统固件包,所述应用系统固件包大于或等于所述基础系统固件包;所述基础系统固件包的升级过程不依赖于所述应用系统固件包的升级过程,所述应用系统固件包的升级过程依赖于所述基础系统固件包的升级过程;
将所述基础系统固件包存储到所述应用系统存储区;在将所述基础系统固件包成功存储到所述应用系统存储区之后,从所述应用系统存储区读取所述基础系统固件包,将所述基础系统固件包存储到所述基础系统存储区;
在将所述基础系统固件包成功存储到所述基础系统存储区之后,从外部设备获取应用系统固件包,将所述应用系统固件包存储到所述应用系统存储区,以通过所述应用系统固件包替换所述应用系统存储区中的基础系统固件包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110169647.7A CN112905218B (zh) | 2021-02-07 | 2021-02-07 | 一种固件升级方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110169647.7A CN112905218B (zh) | 2021-02-07 | 2021-02-07 | 一种固件升级方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112905218A CN112905218A (zh) | 2021-06-04 |
CN112905218B true CN112905218B (zh) | 2023-05-26 |
Family
ID=76124426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110169647.7A Active CN112905218B (zh) | 2021-02-07 | 2021-02-07 | 一种固件升级方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112905218B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109416629A (zh) * | 2017-11-01 | 2019-03-01 | 深圳市大疆创新科技有限公司 | 固件升级方法、电子设备、相机系统和无人飞行器 |
CN111433739A (zh) * | 2018-11-30 | 2020-07-17 | 深圳市大疆创新科技有限公司 | 程序的升级方法和嵌入式设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5894495B2 (ja) * | 2012-04-27 | 2016-03-30 | キヤノン株式会社 | 情報処理装置、情報処理装置におけるファームウエアの更新方法およびプログラム |
US10437580B2 (en) * | 2017-09-11 | 2019-10-08 | Apple Inc. | Software updating methods and systems |
-
2021
- 2021-02-07 CN CN202110169647.7A patent/CN112905218B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109416629A (zh) * | 2017-11-01 | 2019-03-01 | 深圳市大疆创新科技有限公司 | 固件升级方法、电子设备、相机系统和无人飞行器 |
CN111433739A (zh) * | 2018-11-30 | 2020-07-17 | 深圳市大疆创新科技有限公司 | 程序的升级方法和嵌入式设备 |
Non-Patent Citations (2)
Title |
---|
GFUAeD:一种嵌入式设备的通用固件升级方法;纪大峣;福建电脑(第6期);122-128 * |
research firmware update over the air from the cloud;Neven Nikolov;2018 ieee international scientific conference electronics;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112905218A (zh) | 2021-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10437680B2 (en) | Relay apparatus, relay method, and computer program product | |
US8972591B2 (en) | Method for downloading software | |
CN106020865B (zh) | 一种系统升级方法和装置 | |
CN102023908B (zh) | 一种引导程序备份方法及装置 | |
US20110004871A1 (en) | Embedded electronic device and firmware updating method thereof | |
CN112131099B (zh) | 一种版本升级测试方法及装置 | |
US11385902B2 (en) | Secure firmware management with hierarchical boot sequence using last known good firmware | |
US11314665B2 (en) | Information processing system, information processing device, BIOS updating method for information processing device, and BIOS updating program for information processing device | |
US20080270782A1 (en) | Boot process | |
CN112347518B (zh) | 储存装置 | |
US20170115982A1 (en) | Multi-system terminal system updating method, updating device and terminal | |
CN106897166B (zh) | 一种移动终端及其修复方法 | |
CN108170456B (zh) | 电子设备的固件升级方法及装置 | |
CN109375953B (zh) | 一种操作系统启动方法及装置 | |
CN105550071A (zh) | 系统文件升级及检测方法、通信设备 | |
WO2021012170A1 (zh) | 固件启动方法、设备及计算机可读存储介质 | |
CN112905218B (zh) | 一种固件升级方法、装置及设备 | |
CN109189457B (zh) | 智能惯导传感系统的固件升级系统及方法 | |
CN114995852A (zh) | 一种设备升级方法、设备及计算机可读存储介质 | |
CN111611000A (zh) | 一种高可靠的固件空中升级方法及系统 | |
JP7461755B2 (ja) | 情報処理装置、プログラム更新システム、及びプログラム更新方法 | |
CN118626105A (zh) | 一种车载系统的刷写方法、装置、整车处理器及车辆 | |
US20230129942A1 (en) | Method for locking a rewritable non-volatile memory and electronic device implementing said method | |
CN117944592A (zh) | 通过车辆的控制设备执行应用程序的方法和控制设备 | |
CN118378269A (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 |