CN117492794A - 固件更新方法和装置 - Google Patents
固件更新方法和装置 Download PDFInfo
- Publication number
- CN117492794A CN117492794A CN202311437522.3A CN202311437522A CN117492794A CN 117492794 A CN117492794 A CN 117492794A CN 202311437522 A CN202311437522 A CN 202311437522A CN 117492794 A CN117492794 A CN 117492794A
- Authority
- CN
- China
- Prior art keywords
- firmware
- updated
- area
- information
- updating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000011084 recovery Methods 0.000 claims abstract description 99
- 238000012795 verification Methods 0.000 claims description 37
- 238000004458 analytical method Methods 0.000 claims description 7
- 238000004064 recycling Methods 0.000 claims description 2
- 238000004590 computer program Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例涉及计算机技术领域,具体涉及一种固件更新方法和装置。该固件更新方法将应用代码区中的在先固件发送至外接存储模块中的固件回收区;将获取的待更新固件发送至所述外接存储模块中的待更新固件区;基于所述外接存储模块中信息区的待更新信息从所述待更新固件区中读取所述待更新固件,并将所述待更新固件写入所述应用代码区;在所述应用代码区基于所述待更新固件对所述在先固件进行更新。本申请实施例从灵活性、安全性与简化结构三个维度提供了一种更为可靠与灵活的固件更新方法。
Description
技术领域
本申请涉及计算机技术领域,具体地,涉及一种固件更新方法和装置。
背景技术
固件升级是指对音乐播放机等便携式机器的内嵌固件进行升级的一种方式,目前的固件升级方式主要包括两种:
第一种方式,通过上位机将需更新文件下载到下位机,下位机通过判断新增头部两字节CRC16校验码来删除并更新下位机内置存储单元空间,然后通过SPI协议下载到spiflash(基于SPI(Serial Peripheral Interface,串行外设接口)通信的一种闪存存储器)。功能简单,成本高,但是仅可以为spi flash下载代码;
第二种方式,通过串口打印信息,提示更新信息,利用SRAM调试代码。需要加入sram调试机制,系统结构复杂。
因此,目前的固件更新方法均不理想。
发明内容
本申请实施例中提供了一种固件更新方法和装置。
本申请实施例的第一个方面,提供了一种固件更新方法,应用于嵌入式设备中,该固件更新方法包括:
将应用代码区中的在先固件发送至外接存储模块中的固件回收区;
将获取的待更新固件发送至外接存储模块中的待更新固件区;
基于外接存储模块中信息区的待更新信息从待更新固件区中读取待更新固件,并将待更新固件写入应用代码区;
在应用代码区基于待更新固件对在先固件进行更新。
在本申请一个可选实施例中,该固件更新方法还包括:
若对在先固件更新失败,则将固件回收区中的在先固件写回应用代码区。
在本申请一个可选实施例中,在将应用代码区中的在先固件发送至外接存储模块中的固件回收区之前,该固件更新方法还包括:
读取外接存储模块中信息区的待更新信息,并对待更新信息进行校验;
若校验合格,则将应用代码区中的在先固件发送至外接存储模块中的固件回收区。
在本申请一个可选实施例中,对待更新信息进行校验,包括:
确定待更新信息中的更新密码与预设更新密码是否相同;
对应的,若校验合格,则将应用代码区中的在先固件发送至外接存储模块中的固件回收区,包括:
若待更新信息中的更新密码与预设更新密码相同,则若校验合格,则将应用代码区中的在先固件发送至外接存储模块中的固件回收区。
在本申请一个可选实施例中,在将应用代码区中的在先固件发送至外接存储模块中的固件回收区之后,该固件更新方法还包括:
确定在先固件的在先固件版本;
根据在先固件版本与在先固件确定在先固件的回收校验信息;
将回收校验信息更新至信息区的回收固件信息区。
在本申请一个可选实施例中,在将应用代码区中的在先固件发送至外接存储模块中的固件回收区之后,该固件更新方法还包括:
删除应用代码区中的在先固件。
在本申请一个可选实施例中,在将待更新固件写入应用代码区之后,该固件更新方法还包括:
更新待更新信息中的更新密码。
在本申请一个可选实施例中,在应用代码区基于待更新固件对在先固件进行更新,包括:
读取外接存储模块中信息区的待更新信息,并基于待更新信息对待更新固件进行检验;
若校验合格,则在应用代码区基于待更新固件对在先固件进行更新。
在本申请一个可选实施例中,该固件更新方法还包括:
若校验不合格,根据信息区中固件回收信息对待更新固件进行校验;
若对待更新固件进行校验合格,则在应用代码区基于待更新固件对在先固件进行更新。
在本申请一个可选实施例中,回收固件信息包括:待更新应用代码的代码地址、代码长度中的至少一种。
在本申请一个可选实施例中,根据信息区中固件回收信息对待更新固件进行校验,包括:
确定待更新固件的回收升级密码与信息区中固件回收信息中设定的预设回收升级密码是否相同;
对应的,若对待更新固件进行校验合格,则在应用代码区基于待更新固件对在先固件进行更新,包括:
若待更新固件的回收升级密码与信息区中固件回收信息中设定的预设回收升级密码相同,则在应用代码区基于待更新固件对在先固件进行更新。
在本申请一个可选实施例中,该固件更新方法还包括:
对在先固件进行命令解析,得到第一操作内容;
基于第一操作指令将在先固件发送至外接存储模块中的固件回收区;和/或,
对待更新固件进行命令解析,得到第二操作内容;
基于第二操作指令将待更新固件发送至外接存储模块中的待更新固件区。
本申请实施例的第二个方面,提供了一种固件更新装置,应用于嵌入式设备中,该装置包括:
第一发送模块,用于将应用代码区中的在先固件发送至外接存储模块中的固件回收区;
第二发送模块,用于将获取的待更新固件发送至外接存储模块中的待更新固件区;
读写模块,用于基于外接存储模块中信息区的待更新信息从待更新固件区中读取待更新固件,并将待更新固件写入应用代码区;
本申请实施例的第三个方面,提供了一种计算机设备,包括:包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如上任一项方法的步骤。
本申请实施例的第四个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,计算机程序被处理器执行时实现如上任一项的方法的步骤。
本申请实施例提供的固件更新方法,第一方面,在外接存储模块中增设了信息区,通过该信息区可以实现对待更新固件以及回收的在先固件的描述与校验,可靠性和安全性更高;且在信息区中可以对描述与校验信息进行修改和扩展,灵活性更高;第二方面,在外接存储模块中增设了待更新固件区和固件回收区,通过固件待更新固件区存储待更新固件,通过固件回收区存储固件更新前的在先固件,可以防止因为一些未知因素导致在固件更新过程中在先固件或者待更新固件被删除无法恢复的问题,安全性和可靠性更高;第三方面,本申请实施例结构简单,无需引入传统方式中的利用SRAM调试代码(需要加入sram调试机制),即可完成应用代码的下载与固件更新。综上,本申请实施例从灵活性、安全性与简化结构三个维度提供了一种更为可靠与灵活的固件更新方法。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一个实施例提供的固件更新方法中固件更新系统的结构示意图;
图2为本申请一个实施例提供的固件更新方法中外接存储设备的结构示意图;
图3为本申请一个实施例提供的固件更新方法中信息区的内容示意图;
图4为本申请一个实施例提供的固件更新方法中嵌入式设备的结构示意图;
图5为本申请一个实施例提供的固件更新方法的流程图;
图6为本申请一个实施例提供的固件更新方法的流程图;
图7为本申请一个实施例对固件解析后对应的操作内容示意图;
图8为本申请一个实施例提供的固件更新装置结构示意图;
图9为本申请一个实施例提供的计算机设备结构示意图。
具体实施方式
在实现本申请的过程中,发明人发现,目前的固件更新方法均不理想。
针对上述问题,本申请实施例中提供了一种固件更新方法和装置。
本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
以下对本申请实施例提供的固件更新方法的应用环境作简要说明:
请参见图1,本申请实施例提供的固件更新方法应用于固件更新系统,该固件更新系统请参见图1,包括:spi flash(Serial Peripheral Interface flash,串行外设接口存储器,可以理解为一种使用spi通信的存储器,以下简称外接存储模块)、嵌入式设备和上位机,通过UART(Universal Asynchronous Receiver/Transmitter,译为通用异步收发器)指令将上位机中的待更新文件(例如待更新固件或待更新应用代码)下载到嵌入式设备中,通过与外接存储设备的交互实现在该嵌入式设备中进行固件更新等处理操作。其中:
外接存储模块spi flash的结构示意图如图2所示,包括:信息区、待更新固件区和固件回收区。其中,信息区用于描述和校验内容,包括:待更新固件信息区和回收固件信息区,待更新固件信息区与回收固件信息区文件结构一致,内容不同。待更新固件信息区用于储存待更新固件以及固件更新过程中的相关信息,如图3示例中,待更新固件信息区包括:待更新固件起始更新地址(处于0~3字节)、待更新固件长度(处于4~7字节)、待更新固件升级密码(处于8~11字节)、待更新固件内容校验区(处于12~15字节)、待更新固件固件版本(处于16~19字节)、通过更新地址和长度来验证需要更新数据的量,通过校验区来对更新数据进行校验(例如所有数据按字节加起来之和取前32bit)。同理,回收固件信息区包括:回收固件起始更新地址(处于2048~2051字节)、回收固件长度(处于2052~2055字节)、回收固件升级密码(处于2056~2059字节)、回收固件内容校验区(处于2060~2063字节)、回收固件的固件版本(处于2064~2067字节)等,用于描述回收固件以及固件回收区的信息。
由于一般spi flash最小擦除空间是4096字节(sector),所以本申请实施例将外接存储模块第一个sector存放信息数据,方便读写。且在待更新固件信息区保留20~2047字节位置以方便后续对各种固件更新信息进一步扩展,在回收固件信息区保留2068~4095字节位置以方便后续对各种固件回收信息进一步扩展。待更新固件区用于固件文件的存储于更新;固件回收区用来存储更新前的固件,即在先固件。
如图4所示,嵌入式设备包括:启动程序(boot loader,也称启动加载器,引导程序)代码区和应用程序代码区、其中,该启动程序代码区存储有启动程序代码,基于该启动程序代码进行地址的查询,更新模式的选择、更新信息的校验等。应用程序代码区(以下简称应用代码区)存储有固件(即应用程序代码),例如包括更新前的在先固件以及用于更新的待更新固件。
嵌入式设备的整体工作流程为:嵌入式系统上电之后,进入bootloader代码,bootloader代码经过一系列操作包括:初始化,读取数据,确定是否升级和回收固件之后,进入应用代码区,基于应用代码执行对应操作。
请参见图5,以下实施例以上述嵌入式设备为执行主体,将本申请实施例提供的固件更新方法应用于上述嵌入式设备进行固件更新为例进行具体说明。本申请实施例提供的固件更新方法包括如下步骤501-步骤504:
步骤501、嵌入式设备将应用代码区中的在先固件发送至外接存储模块中的固件回收区。
应用代码区用于存储和运行固件,该在先固件是指未更新前的固件,例如可以为未升级前的旧版本固件。该应用代码区中可以存储有一个或多个固件,但需要解释的是,各个固件的更新相互独立,也就是一次更新中,待更新固件与在先固件一一对应。
步骤502、嵌入式设备将获取的待更新固件发送至外接存储模块中的待更新固件区。
嵌入式设备通过UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)指令从上位机中下载得到待更新固件,并将该待更新固件通过spi通信方式发送至外接存储设备的待更新固件区进行存储。
步骤503、嵌入式设备基于外接存储模块中信息区的待更新信息从待更新固件区中读取待更新固件,并将待更新固件写入应用代码区。
如上,该信息区包括待更新信息区和回收固件信息区,分别用于存储固件更新信息和固件回收信息。
步骤504、嵌入式设备在应用代码区基于待更新固件对在先固件进行更新。
例如,在嵌入式设备的应用代码区基于待更新固件(固件3.0)对在先固件(固件2.0)进行固件升级。当然,本申请实施例中所阐述的更新包括但不限于:版本升级、bug修复。
嵌入式设备的存储空间至少包括启动程序(boot loader)代码区和应用代码区;在先固件的代码至少分为启动程序代码和应用代码;对应的,待更新固件同样至少分为启动程序代码和应用代码。在更新过程中,在启动程序区,待更新固件的启动程序代码对在先固件的应用代码进行更新;在应用代码区,待更新固件的应用代码对在先固件的启动程序代码进行更新。通过这两个步骤完成对在先固件的更新。
更新过程可基于实际情况灵活调整,该示例不构成对本申请实施例中在先固件更新方式的具体限定。
本申请实施例提供的固件更新方法,第一方面,在外接存储模块中增设了信息区,通过该信息区可以实现对待更新固件以及回收的在先固件的描述与校验,可靠性和安全性更高;且在信息区中可以对描述与校验信息进行修改和扩展,灵活性更高;第二方面,在外接存储模块中增设了待更新固件区和固件回收区,通过固件待更新固件区存储待更新固件,通过固件回收区存储固件更新前的在先固件,可以防止因为一些未知因素导致在固件更新过程中在先固件或者待更新固件被删除无法恢复的问题,安全性和可靠性更高;第三方面,本申请实施例结构简单,无需引入传统方式中的利用SRAM调试代码(需要加入sram调试机制),即可完成应用代码的下载与固件更新。综上,本申请实施例从灵活性、安全性与简化结构三个维度提供了一种更为可靠与灵活的固件更新方法。
在本申请一个可选实施例中,上述步骤504、嵌入式设备在应用代码区基于待更新固件对在先固件进行更新之后,该固件更新方法还包括:
若对在先固件更新失败,嵌入式设备则将固件回收区中的在先固件写回应用代码区。
本申请实施例在更新之前将在先固件存储于外接存储模块中的固件回收区,一旦在先固件更新失败,嵌入式设备可以继续从固件回收区读取在先固件,并将该在先固件重新写回至应用代码区,以基于该在先固件继续工作,从而确保系统的稳定运行,进一步提高本申请实施例固件更新的可靠性与稳定性。
在本申请一个可选实施例中,在上述步骤501、嵌入式设备将应用代码区中的在先固件发送至外接存储模块中的固件回收区之前,该固件更新方法还包括:
嵌入式设备读取外接存储模块中信息区的待更新信息,并对待更新信息进行校验;
例如,嵌入式设备可以通过SPI读取外接存储模块SPI norflash前0~4095个字节(如图3,待更新固件信息区和回收固件信息区),例如第0~3字节内容是待更新固件起始更新地址;第4~7字节内容是待更新固件长度;第2056~2059内容是回收固件升级密码;每个字节都有设定的信息内容,在此不作穷举。
若校验合格,嵌入式设备则将应用代码区中的在先固件发送至外接存储模块中的固件回收区。
在对在先固件进行回收之前基于待更新信息(例如其中的固件回收信息)对该在先固件先进行校验,以确保所回收的固件与待更新固件一致,防止误操作,以及避免在后续出现更新失败的情况下无法继续重新回收到该待更新固件的在先固件,从而保障本申请实施例提供的固件更新的安全性与可靠性。
在本申请一个可选实施例中,上述对待更新信息进行校验,包括如下步骤:
嵌入式设备确定待更新信息中的更新密码与预设更新密码是否相同;
对应的,上述若校验合格,嵌入式设备则将应用代码区中的在先固件发送至外接存储模块中的固件回收区,包括如下步骤:
若待更新信息中的更新密码与预设更新密码相同,嵌入式设备则若校验合格,则将应用代码区中的在先固件发送至外接存储模块中的固件回收区。
校验过程例如可以为:检查外接存储模块SPI norflash第0~3字节内容,如果该内容与预设更新密码(比如0x5A5A5A5A)相同,那么直接进入应用代码区继续进行固件回收与固件更新。如果外接存储模块SPI norflash第0~3字节内容等于预设更新密码,那么进入下一阶段,基于上述待更新信息将待更新固件通过SPI发送给外接存储模块SPInorflash的固件回收区。其中,该待更新信息可以包括:待更新固件起始地址、待更新应用代码的发送长度(待更新固件发送长度和)中的至少一种。
该更新密码可以针对每一个待更新固件以及每一次固件更新和回收不断更新,通过密码的更新和设定确保固件回收和更新的准确性与可靠性。
请参见图6,在本申请一个可选实施例中,在上述步骤501、嵌入式设备将应用代码区中的在先固件发送至外接存储模块中的固件回收区之后,该固件更新方法还包括如下步骤601-步骤605:
步骤601、嵌入式设备确定在先固件的在先固件版本。
该固件版本可根据实际情况灵活设定,本申请实施例不作任何限定。
步骤602、嵌入式设备根据在先固件版本与在先固件确定在先固件的回收校验信息。
例如计算发送内容(即在先固件版本)所有字节内容之和作为固件回收信息区的回收校验值,在该校验值的基础上再加入对应版本(即固件版本)作为在先固件的回收校验信息。
步骤603、嵌入式设备将回收校验信息更新至信息区的回收固件信息区。
例如将新的回收校验信息中的新的回收固件内容校验区的地址和新的内容长度更新到该固件回收信息区,以防止被篡改而影响数据的安全性。
步骤604、嵌入式设备删除应用代码区中的在先固件。
即删除嵌入式设备中更新前的在先固件,以节省存储空间。
步骤605、嵌入式设备更新待更新信息中的更新密码。
该更新密码可以随机生成,也可以通过待更新固件与其他信息,例如可以根据新的代码长度等计算得到,本申请实施例不作具体限定,可根据实际情况灵活调整。通过更新该更新密码,可以保证每次更新的唯一性,提高固件更新的可靠性。
在本申请一个可选实施例中,上述步骤504、嵌入式设备在应用代码区基于待更新固件对在先固件进行更新,包括如下步骤:
嵌入式设备读取外接存储模块中信息区的待更新信息,并基于待更新信息对待更新固件进行检验。
嵌入式设备基于待更新信息(例如,起始地址为待更新固件区起始地址,长度为待更新固件区长度)通过SPI读出外接存储模块SPI norflash的待更新固件区的待更新固件,然后将该待更新固件的内容(将所有的内容按字节加起来取32位)与待更新信息中的固件内容信息等进行比对,以实现校验。校验结果可能会出现如下两种情况:
第一种情况,若校验合格,嵌入式设备则在应用代码区基于待更新固件对在先固件进行更新。
第二种情况,若校验不合格,嵌入式设备根据信息区中固件回收信息对待更新固件进行校验;
若校验不合格,则意味着固件更新系统出现了某些问题,即需要进一步判断是否需要继续进行固件更新以及是否需要回收在先固件。
在本申请一个可选实施例中,回收固件信息包括:待更新应用代码的代码地址、代码长度中的至少一种。
代码地址用于表征待更新应用代码的具体位置,该代码长度用于表征待更新应用代码的大小,通过该代码地址和代码长度可以实现对待更新应用代码位置和大小的判断,方便预判存储位置与存储空间,进一步提高固件更新的可靠性与效率。
在本申请一个可选实施例中,针对上述第二种校验不合格的情况,嵌入式设备根据信息区中固件回收信息对待更新固件进行校验,包括如下步骤:
嵌入式设备确定待更新固件的回收升级密码与信息区中固件回收信息中设定的预设回收升级密码是否相同;
例如检查外接存储模块SPI norflash前0~4095个字节的第2056~2059字节内容(回收升级密码),如果该内容不等于预设回收固件升级密码(比如0xA5A5A5A5),那么直接进入应用代码区,运行未更新的在先固件。
若待更新固件的回收升级密码与信息区中设定的预设回收升级密码相同,则将外接存储模块SPI norflash中的在先固件下载至应用代码区。下载的起始地址为回收固件区起始地址,长度为回收固件区长度。
对应的,若对待更新固件进行校验合格,嵌入式设备则在应用代码区基于待更新固件对在先固件进行更新,包括:
若待更新固件的回收升级密码与信息区中固件回收信息中设定的预设回收升级密码相同,嵌入式设备则在应用代码区基于待更新固件对在先固件进行更新。
本申请实施例在对待更新固件进行检验不合格的情况下,进一步对更新前处于应用代码区,且在更新时存入外接存储模块SPI norflash的在先固件进一步校验,以防止固件回收错误,进而提高本申请实施例固件更新的可靠性。
在本申请一个可选实施例中,上述固件更新方法还包括对在先固件和/待更新固件的命令解析以及执行:
第一种:
嵌入式设备对在先固件进行命令解析,得到第一操作内容;
嵌入式设备基于第一操作指令将在先固件发送至外接存储模块中的固件回收区。
第二种:
嵌入式设备对待更新固件进行命令解析,得到第二操作内容;
嵌入式设备基于第二操作指令将待更新固件发送至外接存储模块中的待更新固件区。
在先固件与待更新固件的解析内容较为一致,以下以该在先固件和待更新固件中的任意一种固件为例进行举例说明:
例如可以通过加入的UART命令来实现对接收的数据进行解析,解析形式以及对应的操作内容可以根据实际情况灵活设置,本申请实施例不作具体限定。不同指令对应不同的操作内容,例如可参见图7,指令1对应的操作内容为:通过xmoden将指定文件下载到嵌入式系统地址0x8000;指令2对应的操作内容为:通过xmoden将嵌入式系统地址0x8000,长度0x200数据发送到指定文件;指令3对应的操作内容为:操作SPI将嵌入式系统地址0x2000,长度0x200数据发送到spi flash地址0x200处;指令4对应的操作内容为:操作SPI spiflash地址0x200,长度0x200数据读取到嵌入式系统地址0x2000。
在应用代码中,可以通过uart等方式实现对接收到的数据字符串进行解析,例如包括spi flash的读写,以及xmoden接收和发送,可待更新文件(待更新固件的待更新应用程序代码)最终下载到spi flash待更新固件区,实现外部文件到嵌入式系统到spi flash的互通;应用程序代码可以通过UART指令实现可升级文件的传输以及spi flash的读写;同时,SPI flash型号可以替换,信息区和回收区位置可改变,灵活性更高。
应该理解的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
请参见图8,本申请一个实施例提供了一种固件更新装置800,应用于嵌入式设备中,该固件更新装置800包括:第一发送模块810、第二发送模块820、读写模块830和更新模块840,其中:
该第一发送模块810,用于将应用代码区中的在先固件发送至外接存储模块中的固件回收区;
该第二发送模块820,用于将获取的待更新固件发送至外接存储模块中的待更新固件区;
该读写模块830,用于基于外接存储模块中信息区的待更新信息从待更新固件区中读取待更新固件,并将待更新固件写入应用代码区;
该更新模块840,用于在应用代码区基于待更新固件对在先固件进行更新。
在本申请一个可选实施例中,该更新模块840还用于,若对在先固件更新失败,则将固件回收区中的在先固件写回应用代码区。
在本申请一个可选实施例中,该第一发送模块810还用于,读取外接存储模块中信息区的待更新信息,并对待更新信息进行校验;若校验合格,则将应用代码区中的在先固件发送至外接存储模块中的固件回收区。
在本申请一个可选实施例中,该第一发送模块810具体用于,确定待更新信息中的更新密码与预设更新密码是否相同;若待更新信息中的更新密码与预设更新密码相同,则若校验合格,则将应用代码区中的在先固件发送至外接存储模块中的固件回收区。
在本申请一个可选实施例中,该更新模块840还用于,确定在先固件的在先固件版本;根据在先固件版本与在先固件确定在先固件的回收校验信息;将回收校验信息更新至信息区的回收固件信息区。
在本申请一个可选实施例中,该分析模块还用于,删除应用代码区中的在先固件。
在本申请一个可选实施例中,该更新模块840还用于,更新待更新信息中的更新密码。
在本申请一个可选实施例中,该更新模块840具体用于,读取外接存储模块中信息区的待更新信息,并基于待更新信息对待更新固件进行检验;若校验合格,则在应用代码区基于待更新固件对在先固件进行更新。
在本申请一个可选实施例中,该更新模块840还用于,若校验不合格,根据信息区中固件回收信息对待更新固件进行校验;若对待更新固件进行校验合格,则在应用代码区基于待更新固件对在先固件进行更新。
在本申请一个可选实施例中,回收固件信息包括:待更新应用代码的代码地址、代码长度中的至少一种。
在本申请一个可选实施例中,该更新模块840具体用于,确定待更新固件的回收升级密码与信息区中固件回收信息中设定的预设回收升级密码是否相同;若待更新固件的回收升级密码与信息区中固件回收信息中设定的预设回收升级密码相同,则在应用代码区基于待更新固件对在先固件进行更新。
在本申请一个可选实施例中,该读写模块830还用于,对在先固件进行命令解析,得到第一操作内容;基于第一操作指令将在先固件发送至外接存储模块中的固件回收区;和/或,对待更新固件进行命令解析,得到第二操作内容;基于第二操作指令将待更新固件发送至外接存储模块中的待更新固件区。
关于上述固件更新装置800的具体限定可以参见上文中对于固件更新方法的限定,在此不再赘述。上述固件更新装置800中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备的内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现如上的一种固件更新方法。包括:包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如上固件更新方法中的任一步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时可以实现如上固件更新方法中的任一步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (13)
1.一种固件更新方法,其特征在于,应用于嵌入式设备中,所述方法包括:
将应用代码区中的在先固件发送至外接存储模块中的固件回收区;
将获取的待更新固件发送至所述外接存储模块中的待更新固件区;
基于所述外接存储模块中信息区的待更新信息从所述待更新固件区中读取所述待更新固件,并将所述待更新固件写入所述应用代码区;
在所述应用代码区基于所述待更新固件对所述在先固件进行更新。
2.根据权利要求1所述的固件更新方法,其特征在于,在所述应用代码区基于所述待更新固件对所述在先固件进行更新之后,所述方法还包括:
若对所述在先固件更新失败,则将所述固件回收区中的所述在先固件写回所述应用代码区。
3.根据权利要求1所述的固件更新方法,其特征在于,在所述将应用代码区中的在先固件发送至外接存储模块中的固件回收区之前,所述方法还包括:
读取所述外接存储模块中信息区的所述待更新信息,并对所述待更新信息进行校验;
若校验合格,则将所述应用代码区中的所述在先固件发送至所述外接存储模块中的所述固件回收区。
4.根据权利要求3所述的固件更新方法,其特征在于,所述对所述待更新信息进行校验,包括:
确定所述待更新信息中的更新密码与预设更新密码是否相同;
对应的,所述若校验合格,则将所述应用代码区中的所述在先固件发送至所述外接存储模块中的所述固件回收区,包括:
若所述待更新信息中的更新密码与所述预设更新密码相同,则若校验合格,则将所述应用代码区中的所述在先固件发送至所述外接存储模块中的所述固件回收区。
5.根据权利要求3所述的固件更新方法,其特征在于,在所述将应用代码区中的在先固件发送至外接存储模块中的固件回收区之后,所述方法还包括:
确定所述在先固件的在先固件版本;
根据所述在先固件版本与所述在先固件确定所述在先固件的回收校验信息;
将所述回收校验信息更新至所述信息区的回收固件信息区。
6.根据权利要求1所述的固件更新方法,其特征在于,在所述将应用代码区中的在先固件发送至外接存储模块中的固件回收区之后,所述方法还包括:
删除所述应用代码区中的所述在先固件。
7.根据权利要求1所述的固件更新方法,其特征在于,在所述将所述待更新固件写入所述应用代码区之后,所述方法还包括:
更新所述待更新信息中的更新密码。
8.根据权利要求1所述的固件更新方法,其特征在于,所述在所述应用代码区基于所述待更新固件对所述在先固件进行更新,包括:
读取所述外接存储模块中信息区的所述待更新信息,并基于所述待更新信息对所述待更新固件进行检验;
若校验合格,则在所述应用代码区基于所述待更新固件对所述在先固件进行更新。
9.根据权利要求8所述的固件更新方法,其特征在于,所述方法还包括:
若校验不合格,根据所述信息区中固件回收信息对所述待更新固件进行校验;
若对所述待更新固件进行校验合格,则在所述应用代码区基于所述待更新固件对所述在先固件进行更新。
10.根据权利要求9所述的固件更新方法,其特征在于,所述回收固件信息包括:所述待更新应用代码的代码地址、代码长度中的至少一种。
11.根据权利要求9所述的固件更新方法,其特征在于,所述根据所述信息区中固件回收信息对所述待更新固件进行校验,包括:
确定所述待更新固件的回收升级密码与所述信息区中所述固件回收信息中设定的预设回收升级密码是否相同;
对应的,所述若对所述待更新固件进行校验合格,则在所述应用代码区基于所述待更新固件对所述在先固件进行更新,包括:
若所述待更新固件的所述回收升级密码与所述信息区中所述固件回收信息中设定的所述预设回收升级密码相同,则在所述应用代码区基于所述待更新固件对所述在先固件进行更新。
12.根据权利要求1所述的固件更新方法,其特征在于,所述方法还包括:
对所述在先固件进行命令解析,得到第一操作内容;
基于所述第一操作指令将所述在先固件发送至所述外接存储模块中的所述固件回收区;和/或,
对所述待更新固件进行命令解析,得到第二操作内容;
基于所述第二操作指令将所述待更新固件发送至所述外接存储模块中的所述待更新固件区。
13.一种固件更新装置,其特征在于,应用于嵌入式设备中,所述装置包括:
第一发送模块,用于将应用代码区中的在先固件发送至外接存储模块中的固件回收区;
第二发送模块,用于将获取的待更新固件发送至所述外接存储模块中的待更新固件区;
读写模块,用于基于所述外接存储模块中信息区的待更新信息从所述待更新固件区中读取所述待更新固件,并将所述待更新固件写入所述应用代码区;
更新模块,用于在所述应用代码区基于所述待更新固件对所述在先固件进行更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311437522.3A CN117492794A (zh) | 2023-11-01 | 2023-11-01 | 固件更新方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311437522.3A CN117492794A (zh) | 2023-11-01 | 2023-11-01 | 固件更新方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117492794A true CN117492794A (zh) | 2024-02-02 |
Family
ID=89684113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311437522.3A Pending CN117492794A (zh) | 2023-11-01 | 2023-11-01 | 固件更新方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117492794A (zh) |
-
2023
- 2023-11-01 CN CN202311437522.3A patent/CN117492794A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109189445B (zh) | 一种物联网设备程序升级的方法 | |
KR101003888B1 (ko) | 전자 장치에서의 3-단계 부팅 프로세스 | |
US20140201727A1 (en) | Updating firmware compatibility data | |
CN111813428A (zh) | 终端固件的升级方法、装置、电子设备及存储介质 | |
CN107783776B (zh) | 固件升级包的处理方法及装置、电子设备 | |
CN111796848A (zh) | Bootloader软件更新方法、装置、嵌入式控制器以及存储介质 | |
US20080270677A1 (en) | Safe software revision for embedded systems | |
CN108509215B (zh) | 一种系统软件的更换方法、装置、终端设备及存储介质 | |
CN110597542A (zh) | 软件自动ota升级方法及装置、电子设备 | |
CN113238790B (zh) | 基于sd卡和eeprom的固件程序更新方法及系统 | |
CN114138295A (zh) | 一种电子设备的应用程序固件升级方法、装置及系统 | |
CN116302011B (zh) | 一种电缆监测设备固件升级方法 | |
KR101968272B1 (ko) | 펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체 | |
US7428635B2 (en) | Method of writing non-volatile memory that avoids corrupting the vital initialization code | |
CN110134423B (zh) | 固件的更新方法、装置及计算机可读存储介质 | |
CN111459496A (zh) | 一种防篡改的程序文件的生成方法、设备的升级方法 | |
CN117492794A (zh) | 固件更新方法和装置 | |
CN114996717A (zh) | 一种防止误擦除的升级程序设计方法 | |
CN112527371A (zh) | 一种引导加载程序升级方法、装置、电子设备及存储介质 | |
CN111813597A (zh) | 一种空调器 | |
US11513792B2 (en) | Tracking history of firmware program updates | |
CN115421761A (zh) | 微控制单元应用程序升级方法、装置、系统、设备及介质 | |
EP4113288B1 (en) | Systems and method for bootup activation of firmware images | |
WO2001050261A2 (en) | Updating non volatile memory in a data processing system | |
CN116225502A (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 |