CN113553085B - 嵌入式操作系统在线升级的方法、装置、设备和存储介质 - Google Patents
嵌入式操作系统在线升级的方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN113553085B CN113553085B CN202110844605.9A CN202110844605A CN113553085B CN 113553085 B CN113553085 B CN 113553085B CN 202110844605 A CN202110844605 A CN 202110844605A CN 113553085 B CN113553085 B CN 113553085B
- Authority
- CN
- China
- Prior art keywords
- partition
- boot
- app
- check code
- data packet
- 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
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000005192 partition Methods 0.000 claims abstract description 356
- 238000012795 verification Methods 0.000 claims description 9
- 238000012423 maintenance Methods 0.000 abstract description 5
- 230000006870 function Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 230000009191 jumping Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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
- 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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及工业控制领域,本申请提供了一种嵌入式操作系统在线升级的方法、装置、设备和存储介质。本申请实施例,应用于计算设备,所述计算设备包括FLASH,所述FLASH包括引导分区、配置分区、BOOT分区和APP分区,所述引导分区中存储有引导代码,本申请实施例的嵌入式操作系统在线升级的方法,运行引导代码即可实现BOOT分区和APP分区的升级固件更新。本申请实施例通过FLASH中四个分区之间的简单逻辑校验和跳转实现了嵌入式操作系统的升级固件自动更新功能,从而显著降低了嵌入式操作系统的维护成本。
Description
技术领域
本申请涉及工业控制领域,尤其涉及一种嵌入式操作系统在线升级的方法、装置、设备和存储介质。
背景技术
目前,嵌入式操作系统在线升级技术主要通过在设备的闪存(FLASH)内划分出一段空间作为升级固件,通过该升级固件接收上位机的升级数据包,写入FLASH内应用程序空间完成升级。该方法缺陷为:升级固件不能自升级,当设备升级固件有漏洞(BUG)时,不能通过发布新升级固件的方式解决,只能返厂并使用专有机器烧写升级固件,这显著增加了嵌入式操作系统的维护成本。
发明内容
鉴于现有技术的以上问题,本申请提供一种嵌入式操作系统在线升级的方法、装置、设备和存储介质,能够实现嵌入式操作系统的在线升级,显著降低嵌入式操作系统的维护成本。
为达到上述目的,本申请第一方面提供了一种嵌入式操作系统在线升级的方法,应用于计算设备,所述计算设备包括FLASH,所述FLASH包括引导分区、配置分区、升级固件BOOT分区和应用程序APP分区,所述引导分区中存储有引导代码,包括:
运行所述引导代码以验证所述BOOT分区的校验码与所述配置分区中记录的第一校验码是否相同,所述第一校验码对应于所述BOOT分区;
在所述BOOT分区的校验码与所述第一校验码不同时将所述APP分区中的BOOT数据包复制到所述BOOT分区;
在所述BOOT分区的校验码与所述第一校验码相同时或所述复制之后,更新APP分区的升级数据包,所述升级数据包为所述BOOT数据包或APP数据包。
由此,通过在FLASH中增设存储有引导代码的FIRMWARE分区即可实现设备中升级固件的自动更新。
作为第一方面的一种可能的实现方式,所述方法还包括:验证所述APP分区的校验码与所述配置分区中记录的第二校验码是否相同,所述第二校验码对应于所述APP分区;所述更新APP分区的升级数据包,具体包括:在所述APP分区的校验码与所述第二校验码不同时,接收来自上位机的所述升级数据包并写入APP分区。
由此,通过基于APP分区的校验码和BOOT分区的校验码的简单校验逻辑,便可实现升级数据包的自动更新。
作为第一方面的一种可能的实现方式,所述方法还包括:在所述升级数据包为APP数据包时,更新所述APP分区的校验码和所述配置分区中的第二校验码;和/或,在所述升级数据包为BOOT数据包时,将所述配置分区中的第一校验码置0,并运行所述引导分区中的引导代码以重新验证所述BOOT分区的校验码与所述配置分区中记录的第一校验码是否相同。
由此,可实时更新APP分区、配置分区和BOOT分区中的校验码,以便通过校验码的校验逻辑完成BOOT分区、APP分区的升级固件更新。
作为第一方面的一种可能的实现方式,所述方法还包括:在所述BOOT分区的校验码与所述第一校验码相同且所述APP分区的校验码与所述第二校验码相同时,运行所述APP分区中APP数据包的嵌入式逻辑代码。
由此,可通过更新后的升级固件实现计算设备的具体功能。
本申请第二方面提供了一种嵌入式操作系统在线升级的装置,所述装置包括: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数据包。
由此,通过在FLASH中增设存储有引导代码的FIRMWARE分区即可实现设备中升级固件的自动更新。
作为第二方面的一种可能的实现方式,所述装置还包括:
APP校验模块,配置为验证所述APP分区的校验码与所述配置分区中记录的第二校验码是否相同,在所述APP分区的校验码与所述第二校验码不同时通知所述APP分区更新模块,所述第二校验码对应于所述APP分区,
所述APP分区更新模块,具体配置为在所述APP分区的校验码与所述第二校验码不同时,接收来自上位机的所述升级数据包并写入APP分区。
由此,通过基于APP分区的校验码和BOOT分区的校验码的简单校验逻辑,便可实现升级数据包的自动更新。
作为第二方面的一种可能的实现方式,所述APP分区更新模块,还配置为在所述升级数据包为APP数据包时通知所述APP校验模块;和/或,在所述升级数据包为BOOT数据包时通知所述BOOT校验模块;
所述APP校验模块,还配置为在所述升级数据包为APP数据包时,更新所述APP分区的校验码和所述配置分区中的第二校验码;和/或,
所述BOOT校验模块,还配置为在所述升级数据包为BOOT数据包时,将所述配置分区中的第一校验码置0,并运行所述引导分区中的引导代码以验证所述BOOT分区的校验码与所述配置分区中的第一校验码是否相同。
由此,可实时更新APP分区、配置分区和BOOT分区中的校验码,以便通过校验码的校验逻辑完成BOOT分区、APP分区的升级固件更新。
作为第二方面的一种可能的实现方式,所述装置还包括:升级模块;其中,
所述APP校验模块,还配置为在所述APP分区的校验码与所述第二校验码相同时通知所述升级模块;
所述升级模块,配置为在所述BOOT分区的校验码与所述第一校验码相同且所述APP分区的校验码与所述第二校验码相同时,运行所述APP分区中APP数据包的嵌入式逻辑代码。
由此,可通过更新后的升级固件实现计算设备的具体功能。
本申请实施例第三方面提供了一种计算设备,包括:
FLASH,包括引导分区、配置分区、BOOT分区和APP分区,所述引导分区中存储有引导代码;
处理器;
存储器,存储有程序指令,所述程序指令当被所述处理器执行时使得所述处理器实现上述的方法。
本申请第四方面提供了一种计算机可读存储介质,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机实现上述的方法。
本申请实施例,通过在FLASH中增设空间很小的FIRMWARE分区来存储引导代码,通过引导代码来引导FLASH中四个分区执行简单的逻辑校验和跳转,从而实现了嵌入式操作系统的升级固件自动更新功能。并且,在升级断电时,也能使升级固件的自动更新在下次上电时恢复,完全保证了嵌入式操作系统升级的可靠性。无需返厂或重新烧写升级固件便可实现嵌入式操作系统的升级,显著降低了嵌入式操作系统的维护成本。
附图说明
以下参照附图来进一步说明本申请的各个特征和各个特征之间的联系。附图均为示例性的,一些特征并不以实际比例示出,并且一些附图中可能省略了本申请所涉及领域的惯常的且对于本申请非必要的特征,或是额外示出了对于本申请非必要的特征,附图所示的各个特征的组合并不用以限制本申请。另外,在本说明书全文中,相同的附图标记所指代的内容也是相同的。具体的附图说明如下:
图1是本申请实施例FLASH空间分布示例图。
图2是本申请实施例嵌入式操作系统在线升级的方法流程示意图。
图3是本申请实施例嵌入式操作系统在线升级的具体实现流程示意图。
图4是本申请实施例嵌入式操作系统在线升级装置的结构示意图。
图5是本申请实施例计算设备的结构示意图。
具体实施方式
说明书和权利要求书中的词语“第一、第二、第三等”或模块A、模块B、模块C等类似用语,仅用于区别类似的对象,不代表针对对象的特定排序,可以理解地,在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
在以下的描述中,所涉及的表示步骤的标号,如S110、S120……等,并不表示一定会按此步骤执行,在允许的情况下可以互换前后步骤的顺序,或同时执行。
说明书和权利要求书中使用的术语“包括”不应解释为限制于其后列出的内容;它不排除其它的元件或步骤。因此,其应当诠释为指定所提到的所述特征、整体、步骤或部件的存在,但并不排除存在或添加一个或更多其它特征、整体、步骤或部件及其组群。因此,表述“包括装置A和B的设备”不应局限为仅由部件A和B组成的设备。
本说明书中提到的“一个实施例”或“实施例”意味着与该实施例结合描述的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在本说明书各处出现的用语“在一个实施例中”或“在实施例中”并不一定都指同一实施例,但可以指同一实施例。此外,在一个或多个实施例中,能够以任何适当的方式组合各特定特征、结构或特性,如从本公开对本领域的普通技术人员显而易见的那样。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。如有不一致,以本说明书中所说明的含义或者根据本说明书中记载的内容得出的含义为准。另外,本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
为了准确地对本申请中的技术内容进行叙述,以及为了准确地理解本申请,在对具体实施方式进行说明之前先对本说明书中所使用的术语给出如下的解释说明或定义。
FLASH,是存储芯片的一种,又称闪存,全称是FLASH存储器(Flash EEPROMMemory),具备电子可擦除可编程(EEPROM)的性能,还可以快速读取数据,使数据不会因为断电而丢失。可以通过特定的程序可以修改FLASH里的数据。
BUG,用来指代计算机上存在的漏洞,漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。BUG狭义的概念是指软件程序漏洞或缺陷,广义的概念还包括测试工程师或用户所发现和提出的软件可更改的细节、或与需求文档存在差异的功能实现等。
固件(Firmware),是写入可擦写可编程只读存储器(EPROM)或电可擦可编程只读存储器(EEPROM)中的程序。固件是设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作。固件升级,有时也称固件刷新,刷写,重写,烧录或刷机,是指把新的固件写入芯片中,代替原有的固件的过程。
下面对本申请实施例的示例性具体实施方式进行详细说明。
本申请实施例提供的嵌入式操作系统在线升级的方法可应用于嵌入式的计算设备,该计算设备可以包括FLASH,FLASH包括引导分区(即,FIRMWARE分区)、配置分区(即,CONFIG分区)、升级固件分区(即,BOOT分区)和应用程序分区(即,APP分区),引导分区中存储有引导代码。配置分区用于存储配置数据,配置数据包括下文的第一校验码和第二校验码,第一校验码对应于BOOT分区,第二校验码对应于APP分区。通常,嵌入式操作系统的升级数据包可以包括但不限于BOOT数据包、APP数据包,BOOT分区中存储有BOOT数据包,该BOOT数据包用于实现嵌入式操作系统升级过程中的BOOT操作,APP分区存储有APP数据包,APP数据包中可以包含嵌入式逻辑代码,嵌入式逻辑代码用于实现计算设备的具体功能。BOOT数据包和/或APP数据包用于完成所述计算设备的嵌入式操作系统的升级。
BOOT分区中存储有用于指示BOOT分区数据变化的校验码,APP分区中存储有用于指示APP分区数据变化的校验码,如果BOOT分区中的校验码与配置分区中的第一校验码相同,表明无需更新BOOT分区中的数据,如果BOOT分区中的校验码与配置分区中的第一校验码不同,表明需要更新BOOT分区中的数据,需要拷贝APP分区中的BOOT数据包到BOOT分区。如果APP分区中的校验码与配置分区中的第二校验码相同,表明无需更新APP分区中的数据,如果APP分区中的校验码与配置分区中的第二校验码不同,表明需要更新APP分区中的数据,需要等待来自上位机的升级数据包。
图1示例性地示出了计算设备的FLASH空间分布示意图。参见图1所示,将待升级设备的FLASH空间设置为四个分区,即FIRMWARE分区、CONFIG分区、BOOT分区、APP分区,FIRMWARE分区中存储有引导代码,CONFIG分区中存储配置数据,BOOT中存储有升级固件,APP分区中存储有应用程序代码。通过这四个分区简单的逻辑校验和跳转就可以实现升级固件的功能。本申请实施例通过在FLASH中增设存储有引导代码的FIRMWARE分区,来实现自动更新设备中升级固件的功能,FIRMWARE分区中引导代码的逻辑简单、代码量小,占用FLASH空间很小。
下面对本申请实施例的嵌入式操作系统在线升级方法的具体实施方式进行说明。
参见图2所示,本申请实施例的嵌入式操作系统在线升级方法包括如下步骤:
步骤S210,每次上电时,运行引导代码以验证所述BOOT分区的校验码与所述配置分区中记录的第一校验码是否相同,所述第一校验码对应于所述BOOT分区;
通过本步骤可见,引导代码仅需实现简单的判断逻辑,逻辑简单,因此代码量小,仅需要很小的FLASH空间便可实现引导代码的存储。
步骤S220,在BOOT分区的校验码与第一校验码不同时,将APP分区中的BOOT数据包复制到BOOT分区;
步骤S230,在BOOT分区的校验码与第一校验码相同时或所述复制之后,更新APP分区的升级数据包,升级数据包为BOOT数据包或APP数据包,所述BOOT数据包和/或APP数据包用于完成所述计算设备的嵌入式操作系统的升级。
一些实施例中,上述方法还包括:步骤S210之后,验证APP分区的校验码与配置分区中记录的第二校验码是否相同,第二校验码对应于所述APP分区。步骤S230中更新APP分区的升级数据包,具体包括:在APP分区的校验码与第二校验码不同时,接收来自上位机的升级数据包并写入APP分区,升级数据包为所述BOOT数据包或APP数据包。由此,通过基于APP分区的校验码和BOOT分区的校验码的简单校验逻辑,便可实现升级数据包的自动更新,也即实现了BOOT分区和APP分区的升级固件自动更新功能。
一些实施例中,上述方法还可以包括:在升级数据包为APP数据包时,更新APP分区的校验码和配置分区中的第二校验码;和/或,在升级数据包为BOOT数据包时,将配置分区中的第一校验码置0,并运行引导分区中的引导代码以重新验证BOOT分区的校验码与配置分区中记录的第一校验码是否相同。由此,可实时更新APP分区、配置分区和BOOT分区中的校验码,以便通过校验码的校验逻辑完成BOOT分区、APP分区的升级固件更新。
一些实施例中,所述方法还包括:在BOOT分区的校验码与第一校验码相同且APP分区的校验码与第二校验码相同时,运行APP分区中的APP数据包的嵌入式逻辑代码,以实现计算设备的具体功能。由此,可通过更新后的升级固件实现计算设备的具体功能。
本申请实施例的上述方法,设备上电时首先运行FIRMWARE分区的引导代码,然后通过简单的逻辑校验跳转到BOOT分区,再通过简单的逻辑校验从BOOT分区跳转到APP分区,最终实现嵌入式操作系统的在线升级。由此,本申请实施例通过FLASH中增设空间很小的FIRMWARE分区来存储引导代码,便可引导FLASH中四个分区执行简单的逻辑校验和跳转,从而实现了嵌入式操作系统的升级固件自动更新功能。并且,在升级断电时,也能使升级固件的自动更新在下次上电时恢复,完全保证了嵌入式操作系统升级的可靠性。这样,在升级固件有BUG时,厂家只需通过发布新升级固件的方式向设备的APP分区提供升级固件,即可远程更新设备中BOOT分区和APP分区的升级固件,无需返厂或重新烧写升级固件,便可实现嵌入式操作系统的升级,从而显著降低了嵌入式操作系统的维护成本。
下面对本申请实施例的具体实现流程进行示例性地说明。
图3示出了本申请实施例中嵌入式操作系统在线升级的示例性具体实现流程。参见图3所示,嵌入式操作系统在线升级的示例性具体实现流程可以包括如下步骤:
步骤S301,比较BOOT分区的循环冗余校验(CRC)与CONFIG分区的B-CRC(即第一校验码),判断BOOT分区的CRC与CONFIG分区的B-CRC是否相同,如果BOOT分区的CRC与CONFIG分区中的B-CRC相同,说明无需更新BOOT分区中的数据,跳转至步骤S303;如果BOOT分区的CRC与CONFIG分区中的B-CRC不同,说明需要更新BOOT分区中的数据,继续步骤S302;
具体地,通过运行FIRMWARE分区的引导代码来执行步骤S301~步骤S302。
其中,B-CRC表示CONFIG分区中记录的对应BOOT分区的CRC。
步骤S302,将APP分区的BOOT数据包复制到BOOT分区,并继续步骤S303;
步骤S303,根据BOOT分区的CRC更新CONFIG分区的B-CRC;
具体地,将BOOT分区的CRC与CONFIG分区的B-CRC比较,如果BOOT分区的CRC与CONFIG分区的B-CRC不同,则将BOOT分区的CRC写入CONFIG分区以更新CONFIG分区中的B-CRC,使得BOOT分区的CRC与CONFIG分区的B-CRC相同,并继续步骤S304;如果BOOT分区的CRC与CONFIG分区的B-CRC相同,可以继续步骤S304。
步骤S304,将APP分区的CRC与CONFIG分区的A-CRC(即,第二校验码)比较,判断APP分区的CRC与CONFIG分区的A-CRC是否相同,A-CRC表示CONFIG分区中记录的对应APP分区的CRC,如果APP分区的CRC与CONFIG分区的A-CRC相同,跳转至步骤S309;如果APP分区的CRC与CONFIG分区的A-CRC不同,继续步骤S305;
步骤S305,接收来自上位机的升级数据包;
具体地,等待来自上位机的升级数据包。上位机向当前设备发送升级数据包的过程中,接收来自上位机的升级数据包并写入APP分区,直到完成升级数据包中所有数据的接收。
步骤S306,完成升级数据包的接收后,查看升级数据包的类型,判断升级数据包的类型是BOOT数据包还是APP数据包,如果升级数据包的类型是BOOT数据包,则继续步骤S307,如果升级数据包的类型是APP数据包,则继续步骤S308;
实际应用中,上位机可以在升级数据包的包头或者升级指令中携带指示升级数据包类型的信息,设备通过解析升级数据包的包头或升级指令来获得该指示升级数据包类型的信息,通过该指示升级数据包类型的信息便可确定升级数据包的类型。
步骤S307,将CONFIG分区的B-CRC置0,跳转到FIRMWARE分区,返回步骤S301;
步骤S308,通过校验APP分区的数据生成APP分区的CRC,并将APP分区的CRC写入CONFIG分区的A-CRC,完成CONFIG分区的A-CRC的更新,跳转到FIRMWARE分区,返回步骤S301;
步骤S309,运行APP分区的APP数据包中的嵌入式逻辑代码,完成嵌入式操作系统的升级。
由上流程可见,通过4个分区简单的逻辑校验和跳转,就可以实现升级固件的功能,并且在升级过程中发生断电的情况下,也可以在下次上电时恢复升级固件自动更新的流程,完全保证了升级的可靠性。
即使在升级过程中发生断电,下次上电时将依然从FIRMWARE分区开始,也即从步骤S301开始。升级过程中发生断电,下次上电时仍将FIRMWARE分区开始,先执行步骤S301,此时BOOT分区的CRC与CONFIG分区的B-CRC必然不同,将通过步骤S302实现BOOT分区中固件的升级,也即在重新上电后即可继续执行BOOT分区和APP分区的固件升级,可见,在升级过程中发生断电的情况下,可以在下次上电时恢复升级固件更新的流程,完全保证了升级的可靠性。
图4示出了本申请实施例提供的嵌入式操作系统在线升级装置400的结构示意图。参见图4所示,装置400可以包括:BOOT校验模块410、BOOT分区更新模块420和APP分区更新模块430,装置400可应用于上述的计算设备,设置于该计算设备中或通过该计算设备中的处理器实现。
BOOT校验模块410,可配置为在每次上电时运行所述引导代码以验证BOOT分区的校验码与配置分区中记录的第一校验码是否相同,第一校验码对应于BOOT分区,在BOOT分区的校验码与第一校验码不同时通知BOOT分区更新模块420,在BOOT分区的校验码与第一校验码不同时通知APP分区更新模块430。
BOOT分区更新模块420,可配置为在BOOT分区的校验码与第一校验码不同时,将APP分区中的BOOT数据包复制到BOOT分区,并在完成所述复制之后通知APP分区更新模块430;
APP分区更新模块430,可配置为在BOOT分区的校验码与第一校验码相同时或所述复制之后,更新APP分区的升级数据包,升级数据包为BOOT数据包或APP数据包,所述BOOT数据包和/或APP数据包用于完成所述计算设备的嵌入式操作系统的升级。
一些实施例中,装置400还可以包括:APP校验模块440,配置为验证APP分区的校验码与配置分区中记录的第二校验码是否相同,在APP分区的校验码与第二校验码不同时通知APP分区更新模块430,第二校验码对应于APP分区。APP分区更新模块430可具体配置为在APP分区的校验码与第二校验码不同时,接收来自上位机的升级数据包并写入APP分区。
一些实施例中,APP分区更新模块430还可以配置为在升级数据包为APP数据包时通知APP校验模块440;和/或,在升级数据包为BOOT数据包时通知BOOT校验模块410;
APP校验模块440,还可以配置为在升级数据包为APP数据包时,更新APP分区的校验码和配置分区中的第二校验码;和/或,BOOT校验模块410,还可以配置为在升级数据包为BOOT数据包时,将配置分区中的第一校验码置0,并运行引导分区中的引导代码以重新验证BOOT分区的校验码与配置分区中的第一校验码是否相同。
一些实施例中,装置400还可以包括:升级模块450。其中,APP校验模块440,还可以配置为在APP分区的校验码与第二校验码相同时通知升级模块450。升级模块450可以配置为在BOOT分区的校验码与第一校验码相同且APP分区的校验码与第二校验码相同时,运行APP分区中的APP数据包的嵌入式逻辑代码。
图5是本申请实施例提供的一种计算设备50的结构性示意性图。该计算设备50可以包括:处理器51、存储器52和FLASH 55,FLASH 55包括引导分区、配置分区、升级固件BOOT分区和应用程序APP分区,所述引导分区中存储有引导代码。关于FLASH 55及其分区参见上文相关描述,此处不再赘述。
其中,该处理器51可以与存储器52连接。该存储器52可以用于存储该程序代码和数据。因此,该存储器52可以是处理器51内部的存储单元,也可以是与处理器51独立的外部存储单元,还可以是包括处理器51内部的存储单元和与处理器51独立的外部存储单元的部件。
计算设备50还可以包括通信接口53。应理解,图5所示的计算设备50中的通信接口53可以用于与其他设备之间进行通信。
可选的,计算设备50还可以包括总线54。其中,存储器52、通信接口53、FLASH 53可以通过总线54与处理器51连接。总线54可以是设备内部高速总线,如ARM架构下的AMBA总线等。所述总线54可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
应理解,在本申请实施例中,该处理器51可以采用中央处理单元(centralprocessing unit,CPU)。该处理器还可以是其它通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。或者该处理器51采用一个或多个集成电路,用于执行相关程序,以实现本申请实施例所提供的技术方案。
该存储器52可以包括只读存储器和随机存取存储器,并向处理器51提供指令和数据。处理器51的一部分还可以包括非易失性随机存取存储器。例如,处理器51还可以存储设备类型的信息。
在计算设备50运行时,所述处理器51执行所述存储器52中的计算机执行指令执行上述方法的操作步骤。
应理解,根据本申请实施例的计算设备50可以对应于执行根据本申请各实施例的方法中的相应主体,并且计算设备50中的各个模块的上述和其它操作和/或功能分别为了实现本实施例各方法的相应流程,为了简洁,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行一种嵌入式操作系统在线升级的方法,该方法包括上述各个实施例所描述的方案中的至少之一。
本申请实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括、但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,均属于本申请保护范畴。
Claims (10)
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任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110844605.9A CN113553085B (zh) | 2021-07-26 | 2021-07-26 | 嵌入式操作系统在线升级的方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110844605.9A CN113553085B (zh) | 2021-07-26 | 2021-07-26 | 嵌入式操作系统在线升级的方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113553085A CN113553085A (zh) | 2021-10-26 |
CN113553085B true CN113553085B (zh) | 2022-05-13 |
Family
ID=78132803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110844605.9A Active CN113553085B (zh) | 2021-07-26 | 2021-07-26 | 嵌入式操作系统在线升级的方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113553085B (zh) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101425018B (zh) * | 2008-12-05 | 2011-11-23 | 深圳创维数字技术股份有限公司 | 基于分段式的嵌入式固件升级方法及装置 |
TW201102924A (en) * | 2009-07-03 | 2011-01-16 | Inventec Appliances Corp | Embedded electronic device and method for updating firmware thereof |
CN101650662B (zh) * | 2009-08-26 | 2013-09-11 | 中兴通讯股份有限公司 | 一种嵌入式系统的存储器件的固件启动及升级方法 |
CN104572206A (zh) * | 2015-01-14 | 2015-04-29 | 厦门为那通信科技有限公司 | 应用程序自更新和备份恢复的方法 |
CN105117253A (zh) * | 2015-08-27 | 2015-12-02 | 常州大学 | 一种基于BootLoader的UV LED固化系统远程升级方法 |
WO2020037613A1 (zh) * | 2018-08-23 | 2020-02-27 | 深圳市汇顶科技股份有限公司 | 嵌入式程序的安全升级方法、装置、设备及存储介质 |
CN110333882B (zh) * | 2019-05-09 | 2023-03-14 | 阿波罗智联(北京)科技有限公司 | 系统的升级方法、装置、设备及计算机可读介质 |
-
2021
- 2021-07-26 CN CN202110844605.9A patent/CN113553085B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113553085A (zh) | 2021-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7991988B2 (en) | Communication device and firmware update method thereof | |
US9205809B2 (en) | Vehicle unit and method for operating the vehicle unit | |
US20140201726A1 (en) | Updating firmware compatibility data | |
CN110597542B (zh) | 软件自动ota升级方法及装置、电子设备 | |
CN111813428A (zh) | 终端固件的升级方法、装置、电子设备及存储介质 | |
CN108509215B (zh) | 一种系统软件的更换方法、装置、终端设备及存储介质 | |
CN107567629A (zh) | 在可信执行环境容器中的动态固件模块加载器 | |
WO2022160816A1 (zh) | 一种数据处理方法以及相关设备 | |
WO2022237122A1 (zh) | 车载迎宾动画更新方法、装置、车载终端及存储介质 | |
WO2022188690A1 (zh) | 升级电子设备的方法及装置 | |
CN115762625A (zh) | 验证eMMC功能的方法、系统、电子设备及存储介质 | |
US11137995B2 (en) | Updating firmware of a microcontroller | |
CN108845823B (zh) | 一种基于f2812芯片的软件在线升级方法 | |
CN113553085B (zh) | 嵌入式操作系统在线升级的方法、装置、设备和存储介质 | |
CN113268262A (zh) | 一种fpga远程更新配置方法、系统、电子设备和存储介质 | |
CN111124455B (zh) | 一种电池管理系统升级方法、装置、服务器及存储介质 | |
CN112230848A (zh) | 一种nvm自动配置方法、装置和设备 | |
CN116866172A (zh) | 汽车ota升级过程中的诊断刷写系统、方法、装置及介质 | |
US10691805B2 (en) | Resident manufacturing test software based system for mitigating risks associated with vehicle control modules | |
CN113626792B (zh) | PCIe Switch固件安全执行方法、装置、终端及存储介质 | |
CN112527371B (zh) | 一种引导加载程序升级方法、装置、电子设备及存储介质 | |
CN114281390A (zh) | 一种基于Zynq 7000的在线升级系统及方法 | |
CN111124462B (zh) | 一种嵌入式多媒体卡更新方法、装置、服务器和存储介质 | |
CN113703801A (zh) | 一种车载终端固件升级方法及电子装置 | |
Ji et al. | Implementation and research of bootloader for automobile ECU remote incremental update |
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 |