嵌入式操作系统在线升级的方法、装置、设备和存储介质转让专利
申请号 : CN202110844605.9
文献号 : CN113553085B
文献日 : 2022-05-13
发明人 : 先凤新
申请人 : 科东(广州)软件科技有限公司
摘要 :
权利要求 :
1.一种嵌入式操作系统在线升级的方法,其特征在于,应用于计算设备,所述计算设备包括FLASH,所述FLASH包括引导分区、配置分区、升级固件BOOT分区和应用程序APP分区,所述引导分区中存储有引导代码,包括:运行所述引导代码以验证所述BOOT分区的校验码与所述配置分区中记录的第一校验码是否相同,所述第一校验码对应于所述BOOT分区;
在所述BOOT分区的校验码与所述第一校验码不同时将所述APP分区中的BOOT数据包复制到所述BOOT分区;
在所述BOOT分区的校验码与所述第一校验码相同时或所述复制之后,更新APP分区的升级数据包,所述升级数据包为所述BOOT数据包或APP数据包。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:验证所述APP分区的校验码与所述配置分区中记录的第二校验码是否相同,所述第二校验码对应于所述APP分区;
所述更新APP分区的升级数据包,具体包括:在所述APP分区的校验码与所述第二校验码不同时,接收来自上位机的所述升级数据包并写入APP分区。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:在所述升级数据包为APP数据包时,更新所述APP分区的校验码和所述配置分区中的第二校验码;和/或,
在所述升级数据包为BOOT数据包时,将所述配置分区中的第一校验码置0,并运行所述引导分区中的引导代码以重新验证所述BOOT分区的校验码与所述配置分区中记录的第一校验码是否相同。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:在所述BOOT分区的校验码与所述第一校验码相同且所述APP分区的校验码与所述第二校验码相同时,运行所述APP分区中APP数据包的嵌入式逻辑代码。
5.一种嵌入式操作系统在线升级的装置,其特征在于,所述装置包括:BOOT校验模块、BOOT分区更新模块和APP分区更新模块;所述装置应用于计算设备,所述计算设备包括FLASH,所述FLASH包括引导分区、配置分区、升级固件BOOT分区和应用程序APP分区,所述引导分区中存储有引导代码;其中,
所述BOOT校验模块,配置为运行所述引导代码以验证所述BOOT分区的校验码与所述配置分区中记录的第一校验码是否相同,所述第一校验码对应于所述BOOT分区,在所述BOOT分区的校验码与所述第一校验码不同时通知所述BOOT分区更新模块,在所述BOOT分区的校验码与所述第一校验码相同时通知所述APP分区更新模块;
BOOT分区更新模块,配置为在所述BOOT分区的校验码与所述第一校验码不同时,将所述APP分区中的BOOT数据包复制到所述BOOT分区,并在完成所述复制之后通知所述APP分区更新模块;
APP分区更新模块,配置为在所述BOOT分区的校验码与所述第一校验码相同时或所述复制之后,更新APP分区的升级数据包,所述升级数据包为所述BOOT数据包或APP数据包。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:APP校验模块,配置为验证所述APP分区的校验码与所述配置分区中记录的第二校验码是否相同,在所述APP分区的校验码与所述第二校验码不同时通知所述APP分区更新模块,所述第二校验码对应于所述APP分区,所述APP分区更新模块,具体配置为在所述APP分区的校验码与所述第二校验码不同时,接收来自上位机的所述升级数据包并写入APP分区。
7.根据权利要求6所述的装置,其特征在于,所述APP分区更新模块,还配置为在所述升级数据包为APP数据包时通知所述APP校验模块;和/或,在所述升级数据包为BOOT数据包时通知所述BOOT校验模块;
所述APP校验模块,还配置为在所述升级数据包为APP数据包时,更新所述APP分区的校验码和所述配置分区中的第二校验码;和/或,所述BOOT校验模块,还配置为在所述升级数据包为BOOT数据包时,将所述配置分区中的第一校验码置0,并运行所述引导分区中的引导代码以验证所述BOOT分区的校验码与所述配置分区中的第一校验码是否相同。
8.根据权利要求6或7所述的装置,其特征在于,所述装置还包括:升级模块;其中,所述APP校验模块,还配置为在所述APP分区的校验码与所述第二校验码相同时通知所述升级模块;
所述升级模块,配置为在所述BOOT分区的校验码与所述第一校验码相同且所述APP分区的校验码与所述第二校验码相同时,运行所述APP分区中APP数据包的嵌入式逻辑代码。
9.一种计算设备,其特征在于,包括:FLASH,包括引导分区、配置分区、升级固件BOOT分区和应用程序APP分区,所述引导分区中存储有引导代码;
处理器;
存储器,存储有程序指令,所述程序指令当被所述处理器执行时使得所述处理器实现权利要求1至4任一项所述的方法。
10.一种计算机可读存储介质,其上存储有程序指令,其特征在于,所述程序指令当被计算机执行时使得所述计算机实现权利要求1至4任一所述的方法。
说明书 :
嵌入式操作系统在线升级的方法、装置、设备和存储介质
技术领域
背景技术
间完成升级。该方法缺陷为:升级固件不能自升级,当设备升级固件有漏洞(BUG)时,不能通
过发布新升级固件的方式解决,只能返厂并使用专有机器烧写升级固件,这显著增加了嵌
入式操作系统的维护成本。
发明内容
护成本。
BOOT分区和应用程序APP分区,所述引导分区中存储有引导代码,包括:
述更新APP分区的升级数据包,具体包括:在所述APP分区的校验码与所述第二校验码不同
时,接收来自上位机的所述升级数据包并写入APP分区。
数据包为BOOT数据包时,将所述配置分区中的第一校验码置0,并运行所述引导分区中的引
导代码以重新验证所述BOOT分区的校验码与所述配置分区中记录的第一校验码是否相同。
分区中APP数据包的嵌入式逻辑代码。
算设备包括FLASH,所述FLASH包括引导分区、配置分区、升级固件BOOT分区和应用程序APP
分区,所述引导分区中存储有引导代码;其中,
BOOT分区的校验码与所述第一校验码不同时通知所述BOOT分区更新模块,在所述BOOT分区
的校验码与所述第一校验码不同时通知所述APP分区更新模块;
分区更新模块;
包。
块,所述第二校验码对应于所述APP分区,
通知所述BOOT校验模块;
与所述配置分区中的第一校验码是否相同。
代码。
系统的升级固件自动更新功能。并且,在升级断电时,也能使升级固件的自动更新在下次上
电时恢复,完全保证了嵌入式操作系统升级的可靠性。无需返厂或重新烧写升级固件便可
实现嵌入式操作系统的升级,显著降低了嵌入式操作系统的维护成本。
附图说明
的惯常的且对于本申请非必要的特征,或是额外示出了对于本申请非必要的特征,附图所
示的各个特征的组合并不用以限制本申请。另外,在本说明书全文中,相同的附图标记所指
代的内容也是相同的。具体的附图说明如下:
具体实施方式
可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或
描述的以外的顺序实施。
的存在,但并不排除存在或添加一个或更多其它特征、整体、步骤或部件及其组群。因此,表
述“包括装置A和B的设备”不应局限为仅由部件A和B组成的设备。
“在一个实施例中”或“在实施例中”并不一定都指同一实施例,但可以指同一实施例。此外,
在一个或多个实施例中,能够以任何适当的方式组合各特定特征、结构或特性,如从本公开
对本领域的普通技术人员显而易见的那样。
书中记载的内容得出的含义为准。另外,本文中所使用的术语只是为了描述本申请实施例
的目的,不是旨在限制本申请。
断电而丢失。可以通过特定的程序可以修改FLASH里的数据。
义的概念是指软件程序漏洞或缺陷,广义的概念还包括测试工程师或用户所发现和提出的
软件可更改的细节、或与需求文档存在差异的功能实现等。
能按照标准的设备驱动实现特定机器的运行动作。固件升级,有时也称固件刷新,刷写,重
写,烧录或刷机,是指把新的固件写入芯片中,代替原有的固件的过程。
CONFIG分区)、升级固件分区(即,BOOT分区)和应用程序分区(即,APP分区),引导分区中存
储有引导代码。配置分区用于存储配置数据,配置数据包括下文的第一校验码和第二校验
码,第一校验码对应于BOOT分区,第二校验码对应于APP分区。通常,嵌入式操作系统的升级
数据包可以包括但不限于BOOT数据包、APP数据包,BOOT分区中存储有BOOT数据包,该BOOT
数据包用于实现嵌入式操作系统升级过程中的BOOT操作,APP分区存储有APP数据包,APP数
据包中可以包含嵌入式逻辑代码,嵌入式逻辑代码用于实现计算设备的具体功能。BOOT数
据包和/或APP数据包用于完成所述计算设备的嵌入式操作系统的升级。
同,表明无需更新BOOT分区中的数据,如果BOOT分区中的校验码与配置分区中的第一校验
码不同,表明需要更新BOOT分区中的数据,需要拷贝APP分区中的BOOT数据包到BOOT分区。
如果APP分区中的校验码与配置分区中的第二校验码相同,表明无需更新APP分区中的数
据,如果APP分区中的校验码与配置分区中的第二校验码不同,表明需要更新APP分区中的
数据,需要等待来自上位机的升级数据包。
FIRMWARE分区中存储有引导代码,CONFIG分区中存储配置数据,BOOT中存储有升级固件,
APP分区中存储有应用程序代码。通过这四个分区简单的逻辑校验和跳转就可以实现升级
固件的功能。本申请实施例通过在FLASH中增设存储有引导代码的FIRMWARE分区,来实现自
动更新设备中升级固件的功能,FIRMWARE分区中引导代码的逻辑简单、代码量小,占用
FLASH空间很小。
用于完成所述计算设备的嵌入式操作系统的升级。
区的升级数据包,具体包括:在APP分区的校验码与第二校验码不同时,接收来自上位机的
升级数据包并写入APP分区,升级数据包为所述BOOT数据包或APP数据包。由此,通过基于
APP分区的校验码和BOOT分区的校验码的简单校验逻辑,便可实现升级数据包的自动更新,
也即实现了BOOT分区和APP分区的升级固件自动更新功能。
中的第一校验码置0,并运行引导分区中的引导代码以重新验证BOOT分区的校验码与配置
分区中记录的第一校验码是否相同。由此,可实时更新APP分区、配置分区和BOOT分区中的
校验码,以便通过校验码的校验逻辑完成BOOT分区、APP分区的升级固件更新。
计算设备的具体功能。由此,可通过更新后的升级固件实现计算设备的具体功能。
最终实现嵌入式操作系统的在线升级。由此,本申请实施例通过FLASH中增设空间很小的
FIRMWARE分区来存储引导代码,便可引导FLASH中四个分区执行简单的逻辑校验和跳转,从
而实现了嵌入式操作系统的升级固件自动更新功能。并且,在升级断电时,也能使升级固件
的自动更新在下次上电时恢复,完全保证了嵌入式操作系统升级的可靠性。这样,在升级固
件有BUG时,厂家只需通过发布新升级固件的方式向设备的APP分区提供升级固件,即可远
程更新设备中BOOT分区和APP分区的升级固件,无需返厂或重新烧写升级固件,便可实现嵌
入式操作系统的升级,从而显著降低了嵌入式操作系统的维护成本。
分区中的B‑CRC相同,说明无需更新BOOT分区中的数据,跳转至步骤S303;如果BOOT分区的
CRC与CONFIG分区中的B‑CRC不同,说明需要更新BOOT分区中的数据,继续步骤S302;
CRC,使得BOOT分区的CRC与CONFIG分区的B‑CRC相同,并继续步骤S304;如果BOOT分区的CRC
与CONFIG分区的B‑CRC相同,可以继续步骤S304。
CRC,如果APP分区的CRC与CONFIG分区的A‑CRC相同,跳转至步骤S309;如果APP分区的CRC与
CONFIG分区的A‑CRC不同,继续步骤S305;
收。
S307,如果升级数据包的类型是APP数据包,则继续步骤S308;
的信息,通过该指示升级数据包类型的信息便可确定升级数据包的类型。
S301;
流程,完全保证了升级的可靠性。
此时BOOT分区的CRC与CONFIG分区的B‑CRC必然不同,将通过步骤S302实现BOOT分区中固件
的升级,也即在重新上电后即可继续执行BOOT分区和APP分区的固件升级,可见,在升级过
程中发生断电的情况下,可以在下次上电时恢复升级固件更新的流程,完全保证了升级的
可靠性。
模块430,装置400可应用于上述的计算设备,设置于该计算设备中或通过该计算设备中的
处理器实现。
区的校验码与第一校验码不同时通知BOOT分区更新模块420,在BOOT分区的校验码与第一
校验码不同时通知APP分区更新模块430。
430;
据包和/或APP数据包用于完成所述计算设备的嵌入式操作系统的升级。
知APP分区更新模块430,第二校验码对应于APP分区。APP分区更新模块430可具体配置为在
APP分区的校验码与第二校验码不同时,接收来自上位机的升级数据包并写入APP分区。
BOOT数据包时,将配置分区中的第一校验码置0,并运行引导分区中的引导代码以重新验证
BOOT分区的校验码与配置分区中的第一校验码是否相同。
为在BOOT分区的校验码与第一校验码相同且APP分区的校验码与第二校验码相同时,运行
APP分区中的APP数据包的嵌入式逻辑代码。
分区和应用程序APP分区,所述引导分区中存储有引导代码。关于FLASH 55及其分区参见上
文相关描述,此处不再赘述。
存储单元,还可以是包括处理器51内部的存储单元和与处理器51独立的外部存储单元的部
件。
等。所述总线54可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条线
表示,但并不表示仅有一根总线或一种类型的总线。
signal processor,DSP)、专用集成电路(application specific integrated circuit,
ASIC)、现成可编程门阵列(field programmable gate Array,FPGA)或者其它可编程逻辑
器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处
理器也可以是任何常规的处理器等。或者该处理器51采用一个或多个集成电路,用于执行
相关程序,以实现本申请实施例所提供的技术方案。
备类型的信息。
实现本实施例各方法的相应流程,为了简洁,在此不再赘述。
以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员
可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出
本申请的范围。
划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件
可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或
讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦
合或通信连接,可以是电性,机械或其它的形式。
网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目
的。
对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计
算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个
人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read‑Only Memory,ROM)、随机存取存
储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
施例所描述的方案中的至少之一。
存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或
者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个
或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、
可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD‑ROM)、光
存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可
以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或
者与其结合使用。
于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可
读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于
由指令执行系统、装置或者器件使用或者与其结合使用的程序。
还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以
完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部
分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在
涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域
网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来
通过因特网连接)。
重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行
了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还
可以包括更多其他等效实施例,均属于本申请保护范畴。