CN116541050A - 一种嵌入式软件升级方法、装置、设备及介质 - Google Patents
一种嵌入式软件升级方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN116541050A CN116541050A CN202310347371.6A CN202310347371A CN116541050A CN 116541050 A CN116541050 A CN 116541050A CN 202310347371 A CN202310347371 A CN 202310347371A CN 116541050 A CN116541050 A CN 116541050A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- upgrade
- difference data
- program file
- 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 67
- 238000013524 data verification Methods 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 230000006872 improvement Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- QVFWZNCVPCJQOP-UHFFFAOYSA-N chloralodol Chemical compound CC(O)(C)CC(C)OC(O)C(Cl)(Cl)Cl QVFWZNCVPCJQOP-UHFFFAOYSA-N 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 101000651958 Crotalus durissus terrificus Snaclec crotocetin-1 Proteins 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 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
- G06F8/658—Incremental updates; Differential updates
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal 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
技术领域
本申请涉及计算机技术领域,尤其涉及一种嵌入式软件升级方法、装置、设备及介质。
背景技术
现有技术中,越来越多的嵌入式软件被开发使用,为用户的生产生活带来极大便利。同时,为了满足用户持续变化的需求,延长产品的生命周期,改善产品的性能,以及方便维护,也需要对嵌入式软件进行不断更新升级。相应的,如何更高效地进行嵌入式软件的升级,成为嵌入式软件应用中的重点。
有鉴于此,需要更高效的嵌入式软件升级方案。
发明内容
本说明书实施例提供一种嵌入式软件升级方法、装置、设备及介质,用以解决如何更高效地进行嵌入式软件升级的技术问题。
为解决上述技术问题,本说明书实施例提供如下技术方案:
本说明书实施例提供一种嵌入式软件升级方法,包括:
获取目标软件的升级文件;其中,所述目标软件为待升级的嵌入式软件;
将所述升级文件中存在的与当前程序文件的差异数据写入本地存储器,以更新所述本地存储器中,所述差异数据对应位置处的所述当前程序文件中的程序数据,实现对所述目标软件的升级;其中,所述当前程序文件为所述目标软件当前版本的程序文件。
本说明书实施例提供一种嵌入式软件升级装置,包括:
文件获取模块,用于获取目标软件的升级文件;其中,所述目标软件为待升级的嵌入式软件;
升级执行模块,用于将所述升级文件中存在的与当前程序文件的差异数据写入本地存储器,以更新所述本地存储器中,所述差异数据对应位置处的所述当前程序文件中的程序数据,实现对所述目标软件的升级;其中,所述当前程序文件为所述目标软件当前版本的程序文件。
本说明书实施例提供一种嵌入式软件升级设备,包括:
至少一个处理器;
以及,
与所述至少一个处理器通信连接的存储器;
其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,使所述至少一个处理器能够执行上述的嵌入式软件升级方法。
本说明书实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现上述的嵌入式软件升级方法。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
上述技术方案通过确定升级文件与现有程序文件的差异数据,根据差异数据进行嵌入式软件升级,能够有效节约升级所占用空间,缩短升级耗时,提高升级效率。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对本说明书实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面介绍的附图仅仅是本说明书中记载的实施例可能涉及的部分附图,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书第一个实施例中的嵌入式软件升级方法的一种执行主体示意图。
图2是本说明书第一个实施例中的嵌入式软件升级方法的另一种执行主体示意图。
图3是本说明书第一个实施例中的嵌入式软件升级方法的流程示意图。
图4是本说明书第一个实施例中的一种嵌入式软件升级过程示意图。
图5是本说明书第一个实施例中的数据比较示意图。
图6是本说明书第一个实施例中的另一种嵌入式软件升级过程示意图。
图7是本说明书第一个实施例中的简化升级文件示意图。
图8是本说明书第一个实施例中的数据片段示意图。
图9是本说明书第二个实施例中的嵌入式软件升级装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例的附图,对本说明书实施例的技术方案清楚、完整地进行描述。显然,本说明书所描述的实施例仅仅是本申请的部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
随着嵌入式软件的应用越来越广泛,如何更高效地进行嵌入式软件的升级,成为了重要课题。一种嵌入式软件升级方案是:用户通过终端将升级文件远程传输给嵌入式设备,嵌入式设备将升级文件写入本地存储器中,以实现嵌入式软件升级。然而,将升级文件写入本地存储器这个过程中,需要先擦除本地存储器,并且需要擦除比升级文件更大的本地存储空间,然后将升级文件完整写入本地存储器。这就造成嵌入式软件升级需要占用比升级文件更大的存储空间,耗费较长的升级时间,尤其是不带主控芯片的FLASH,更需要等待漫长的数据写入时间(例如将一个16MB的spi flash芯片写满数据,就需要大概十分钟左右的时间)。
本说明书第一个实施例(以下简称“实施例一”)提供了一种嵌入式软件升级方法,实施例一的执行主体可以是终端(包括但不限于手机、计算机、pad、电视)或者服务器或者操作系统或者应用程序或者嵌入式软件升级平台或者嵌入式软件升级系统等,即执行主体可以是多种多样的,可以根据需要设置、使用或者变换执行主体。另外,也可以有第三方应用程序协助所述执行主体执行实施例一。例如图1所示,可以由服务器来执行实施例一中的嵌入式软件升级方法,并且可以在(用户所持有的)终端上安装(与所述服务器)相对应的应用程序,终端或应用程序与服务器之间可以进行数据传输,通过终端或应用程序来进行数据的采集或输入或输出或(向用户)进行页面或信息处理,从而辅助服务器执行实施例一中的嵌入式软件升级方法。
特别的,实施例一的执行主体可以是嵌入式设备。用户可以使用电脑或终端或其他设备,通过GPRS、WI FI、RS485、LORA等传输方式,与嵌入式设备实现通信,例如图2所示。
如图3和图4所示,实施例一提供的嵌入式软件升级方法包括:
S101:(执行主体)获取目标软件的升级文件;其中,所述目标软件为待升级的嵌入式软件;
实施例一的执行主体可以通过多种方式获取目标软件的升级文件,所述目标软件为待升级的嵌入式软件,并且,所述目标软件可以安装于实施例一的执行主体上。例如,用户可以使用电脑或终端或其他设备,通过GPRS、WIFI、RS485、LORA等传输方式,将升级文件传输至实施例一的执行主体;或者实施例一的执行主体可以从其他主体处自行下载升级文件。对于获取目标软件的升级文件的方式,实施例一不作具体限定。
所述升级文件中可以携带有待升级的嵌入式软件的信息,以便实施例一的执行主体判断其上哪个软件为目标软件。
S103:(执行主体)将所述升级文件中存在的与当前程序文件的差异数据写入本地存储器,以更新所述本地存储器中,所述差异数据对应位置处的所述当前程序文件中的程序数据,实现对所述目标软件的升级;其中,所述当前程序文件为所述目标软件当前版本的程序文件。
获取升级文件后,实施例一的执行主体可以确定所获取的升级文件与目标软件当前版本(即获取升级文件时所运行的版本)的程序文件(以下将目标软件当前版本的程序文件称为当前程序文件)的差异数据,并将差异数据写入本地存储器。
实施例一中,确定所述升级文件与目标软件当前版本的程序文件的差异数据前,实施例一的执行主体可以先对获取到的升级文件的完整性进行第一数据校验,得到第一数据校验结果,根据第一数据校验结果判断是否确定所述升级文件与所述目标软件当前版本的程序文件的差异数据。其中,若第一数据校验结果是校验通过,则实施例一的执行主体确定所述升级文件与所述目标软件当前版本的程序文件的差异数据;或,若第一数据校验结果是校验不通过,则实施例一的执行主体不确定所述升级文件与所述目标软件当前版本的程序文件的差异数据,并重新获取升级文件,从而保证升级文件被正确完整地接收。
具体的,第一数据校验可以包括:实施例一的执行主体获取的升级文件中可以包含校验值。实施例一的执行主体可以通过相应的校验算法,例如MD5或CRC1 6或哈希算法,计算获取到的升级文件的校验值,并将计算得到的校验值与升级文件中包含的校验值进行比较。若两者相等,则第一数据校验通过,说明实施例一的执行主体获取到的升级文件是正确完整的;或,若两者不相等,则第一数据校验不通过。
实施例一中,可以将升级文件中的各个数据块统称为第一数据块,将当前程序文件中的各个数据块统称为第二数据块。其中,数据块的大小为扇区或页大小,即实施例一的执行主体的本地存储器的最小擦除单元,可以将对应同一扇区或页的第一数据块和第二数据块作为相对应的第一数据块和第二数据块。
实施例一中,将所述升级文件中存在的与当前程序文件的差异数据写入本地存储器,以更新所述本地存储器中,所述差异数据对应位置处的所述当前程序文件中的程序数据,可以包括:
依次判断各第一数据块和对应的第二数据块是否相同。具体的,对任一第一数据块,实施例一的执行主体将该第一数据块与该第一数据块对应的第二数据块进行比较(十六进制数据比较),判断该第一数据块与其对应第二数据块是否相同。其中,数据比较大小为升级文件大小。
若该第一数据块与其对应的第二数据块不同,则将该第一数据块写入本地存储器,以取代与该第一数据块对应的第二数据块。其中,将该第一数据块写入本地存储器,以取代与该第一数据块对应的第二数据块可以包括:在本地存储器中,擦除与该第一数据块对应的第二数据块;将该第一数据块写入本地存储器中,与该第一数据块对应的第二数据块的位置。
或,若该第一数据块与其对应的第二数据块相同,则忽略该第一数据块。
例如图5所示,升级文件(记为New File)包括n个第一数据块,分别为Sector1,Sector2,......,Sector n;当前程序文件(记为Old File)包括m个第二数据块,分别为Sector1′,Sector2′,......,Sector m′,则可以按照顺序依次将各个第一数据块与对应的第二数据块进行比较,即比较完一个第一数据块后,继续比较下一第一数据块。假设NewFile的Sector2与Old File的Sector2′不一致,则擦除Old File的Sector2′,将New File的Sector2写入本地存储器中,原Old File的Sector2′所在的位置。
所有的第一数据块比较完毕后,也就将所有的差异数据都写入了本地存储器,更新了所述本地存储器中,所述差异数据对应位置处的所述当前程序文件中的程序数据,实现了本地存储器中目标软件的程序文件的更新(更新后的程序文件就是升级文件),从而实现了对目标软件的升级。
实施例一中,上述升级文件可以是完整升级文件,需要由实施例一的执行主体确定差异数据。
实施例一中,所述升级文件也可以是简化升级文件,所述简化升级文件包含一个或多个数据片段,每个所述数据片段包含有差异数据以及所述差异数据对应的地址信息。
如图6所示,实施例一中,若所述升级文件是简化升级文件,则将所述升级文件中存在的与当前程序文件的差异数据写入本地存储器,以更新所述本地存储器中,所述差异数据对应位置处的所述当前程序文件中的程序数据,可以包括:
1.1、获取各个数据片段中的差异数据以及所述差异数据对应的地址信息;
1.2、根据所述地址信息删除本地存储器中所述当前程序文件中地址信息对应位置处的程序数据,将所述差异数据填入本地存储器中与所述地址信息对应的位置。
下面说明简化升级文件的由来以及利用简化升级文件进行升级的过程。
具体的,可以由实施例一的执行主体以外的其他主体(第二执行主体)确定完整的升级文件与目标软件当前版本(即获取升级文件时所运行的版本)的程序文件(以下将目标软件当前版本的程序文件称为当前程序文件)的差异数据,根据所述差异数据形成简化升级文件(记为image file)。其中,所述其他主体(第二执行主体)可以从实施例一的执行主体处获取目标软件的当前程序文件。
实施例一中,如上,可以将升级文件中的各个数据块统称为第一数据块,将当前程序文件中的各个数据块统称为第二数据块。其中,数据块的大小为扇区或页大小,即目标软件所在的嵌入式设备的本地存储器的最小擦除单元,可以将对应同一扇区或页的第一数据块和第二数据块作为相对应的第一数据块和第二数据块。
实施例一中,第二执行主体在如上述实施例中获得升级文件和当前程序文件的差异数据后,将差异数据按照特定规则生成简化升级文件。所述简化升级文件包括一个或多个数据片段(slice),例如图7所示。每个数据片段对应一个第一数据块或多个连续的第一数据块,每个数据片段所对应的各个第一数据块均与对应的第二数据块不同。
在其中一个实施方式中,第二执行主体将差异数据按照特定规定生成简化升级文件,包括:按顺序判断各第一数据块与其对应的第二数据块是否相同,将各个与对应的第二数据块不同的第一数据块划分成一个或多个第一数据块组,每个第一数据块组包含一个第一数据块或连续的多个第一数据块(也就是说,各个与对应的第二数据块不同的第一数据块中,将连续的第一数据块划分成一组,从而得到一个或多个第一数据块组);将各个第一数据块组按照预设结构进行编码形成各个第一数据块组对应的数据片段,将各个数据片段依次排列组合生成简化升级文件。
具体地,形成的各个数据片段结构如下:对任一第一数据块组,将该第一数据块组中首个第一数据块的起始位置向前偏移到该第一数据块大小的整数倍,得到偏移位置(偏移位置是指当前数据块距离当前程序文件起始位置的偏移量),将前程序文件的起始位置加上该偏移位置得到该第一数据块组所在的数据片段的起始地址,将该首个第一数据块之后第一个与对应的第二数据块相同的第一数据块的起始位置作为该数据片段的终点地址,数据片段的起始地址和终点地址作为该数据片段的地址信息(address,本地存储器的地址信息,是数据块大小的整数倍),终点地址减去起始地址得到该数据片段的长度(Ien),该第一数据块组中的各第一数据块为其所在数据片段的数据内容(data),此外,在该数据片段的首个第一数据块起始位置之前、偏移位置之后还设有更新标志flag,falg根据需求可有可无,默认为改写,将更新标志、地址信息、片段长度和数据内容依次组合得到数据片段,其结构如图8所示。简化升级文件中的其他数据片段的获得也与此类似,不再赘述。
需要说明的是,若未出现相同的第一数据块和第二数据块,则说明偏移位置后的数据都需要更新,则数据片段的终点地址为程序文件的结尾。
例如,从第一个第一数据块开始,依次将各个第一数据块与对应的第二数据块进行比较(十六进制数据比较)。产生第一个与其对应的第二数据块不同的第一数据块后,将该第一数据块的起始位置向前偏移到该第一数据块大小的整数倍,得到偏移位置,偏移位置加上当前程序文件的起始位置作为第一个数据块组所在数据片段的起始地址;继续比较下一个第一数据块,直至出现与其对应的第二数据块相同的第一数据块,记为数据块i,数据块i的起始位置就是第一个数据片段的终点地址。第一个数据片段的终点地址减去第一个数据片段的起始地址,即为第一个数据片段的长度,第一个与其对应的第二数据块不同的第一数据块到数据块i的前一个第一数据块形成一个第一数据块组,该第一数据块组的各第一数据块为所述数据片段的数据内容。
从数据块i之后的第一个与其对应的第二数据块不同的第一数据块,记为数据块j,到数据块j之后首个与其对应的第二数据块相同的第一数据块,又可以如上得到下一个数据片段的偏移位置和终点位置以及长度和数据内容。如此往复,直到升级文件末尾。
当然,也有可能从第一个与其对应的第二数据块不同的第一数据块开始,一直到升级文件的最后一个第一数据块,都与对应的第二数据块不同,这说明自第一个数据片段的偏移位置往后的数据都是需要更新的,则就只得到一个数据片段,该数据片段的终点位置就是升级文件的文件末尾。
对于每个数据片段,该数据片段中的数据内容可以作为1.1中的差异数据,该数据片段中的地址可以作为1.1中的“差异数据对应的地址信息”。
通过上述内容,就会得到一个或多个数据片段。对各个数据片段进行数据校验,得到校验值,将各个数据片段与所述校验值组合起来,作为简化升级文件。
简化升级文件代表了完整升级文件与当前程序文件的差异数据。
得到简化升级文件后,所述其他主体可以向实施例一的执行主体发送简化升级文件,以使实施例一的执行主体将所述简化升级文件写入本地存储器(也就是将所述完整升级文件中存在的与当前程序文件的差异数据写入本地存储器,以更新所述本地存储器中,所述差异数据对应位置处的所述当前程序文件中的程序数据),从而实现了使用所述简化升级文件对所述目标软件进行升级。
其中,实施例一的执行主体使用所述简化升级文件对所述目标软件进行升级可以包括:
实施例一的执行主体(解析简化升级文件)对所述简化升级文件进行上述的第一数据校验。若第一数据校验通过,说明嵌入式设备获取到的简化升级文件是正确完整的;或,若第一数据校验不通过,嵌入式设备可以重新获取简化升级文件。
若第一数据校验通过,则实施例一的执行主体用所述简化升级文件中的数据取代所述目标软件当前版本的程序文件中,与所述简化升级文件中的数据对应的数据,以对所述目标软件进行升级。即如上1.2,实施例一的执行主体根据所述地址信息删除本地存储器中所述当前程序文件中的程序数据,将所述差异数据填入本地存储器中与所述地址信息对应的位置。
作为一种实施方式,当所述差异数据为新增差异数据时,所述将所述升级文件中存在的与当前程序文件的差异数据写入本地存储器,以更新所述本地存储器中,所述差异数据对应位置处的所述当前程序文件中的程序数据,包括:获取所述新增差异数据对应的第一地址信息,将新增差异数据插入到所述本地存储器中所述第一地址信息对应的位置处,所述本地存储器中新增差异数据之后的第二数据对应的地址信息依次后移。以最小限度的数据变动达到目标软件的升级。
具体的,由于每个数据片段包含差异数据和差异数据对应的地址信息,故实施例一的执行主体可以根据地址信息确定差异数据需要写入的本地存储器中的位置。将需要写入的本地存储器中的位置处的“当前程序文件的数据”(即第二数据块)擦除,将差异数据填入需要写入的本地存储器中的位置处。例如,简化升级文件中“+1,XX”代表在第一个字节后新增内容“XX”,实施例一的执行主体可以据此将差异数据写入本地存储器。
或者,由于简化升级文件的各个数据片段中的第一数据块与当前程序文件中的第二数据块对应,则实施例一的执行主体可以将本地存储器中,与简化升级文件的各个数据片段中的第一数据块对应的第二数据块擦除,将简化升级文件的各个数据片段中的第一数据块写入对应的原第二数据块的位置,从而用所述简化升级文件中的数据取代所述目标软件当前版本的程序文件中,与所述简化升级文件中的数据对应的数据,实现了对所述目标软件进行升级。
实施例一中,每次对目标软件进行升级后,实施例一的执行主体可以对本地存储器中,目标软件最新的程序文件进行第二数据校验。具体的,任一次对目标软件进行升级后,若第二数据校验结果是校验通过,则实施例一的执行主体确定本地存储器中,目标软件最新的程序文件已经成功变成本次升级前最新获取的升级文件;若第二数据校验结果是校验不通过,则实施例一的执行主体可以重新确定本次升级前最新获取的升级文件与本次升级时目标软件当前版本的程序文件的差异数据,将所述差异数据写入本地存储器,以对所述目标软件进行升级,并继续进行第二数据校验。
具体的,第二数据校验可以包括:实施例一的执行主体获取的升级文件中可以包含校验值。实施例一的执行主体可以通过相应的校验算法,例如MD5或CRC16或哈希算法,计算对本次升级后,目标软件最新的程序文件的校验值,并将计算得到的校验值与升级文件中包含的校验值进行比较。若两者相等,则第二数据校验通过;或,若两者不相等,则第二数据校验不通过。
实施例一中,每次对目标软件进行升级后,实施例一的执行主体可以执行程序备份操作。执行程序备份操作可以包括:判断所述目标软件是否能够重新启动(实施例一的执行主体可以重启,也就相当于其上的目标软件重启);
若是,则备份本地存储器中,目标软件最新的程序文件(具体是将最新的程序文件拷贝至本地存储器的另一存储分区中);或,若否,则启动上次备份的所述目标软件的程序文件。这样一种程序文件备份机制(或者称为双APP机制),每次升级(即对目标软件的程序文件进行了更新)后,即使目标软件重启失败,也有上次备份的程序文件可供启动,避免了目标软件不可用的情况。
实施例一中,每次升级后,可以先进行第二数据校验,第二数据校验通过后,再执行程序备份操作。
S101中,实施例一的执行主体除获取升级文件外,还可以获取升级指令,根据升级指令执行后续步骤。
实施例一中,将差异数据写入本地存储器或flash失败时,flash可能已遭到破坏,程序不可掉电。故嵌入式软件升级过程中,实施例一的执行主体可能需要一些冗余操作(例如根据需要发出相应警告信息,或者进行版本回退等)从而防止误操作等,确保正常升级。
实施例一中,通过确定升级文件与现有程序文件的差异数据,只需将差异数据写入本地存储器,即可进行嵌入式软件在线升级,不需要擦除比升级文件更大的空间,不需要写入完整的升级文件,能够有效节约升级所占用空间,缩短升级耗时,提高升级效率,尤其适用于本地资源紧张的嵌入式设备的软件升级。
特别的,实施例一中,仅需向嵌入式设备传输较小的简化升级文件,即可进行目标软件升级,能够有效节省传输文件所使用的带宽资源,加快数据传输速度,提高升级效率。
如图9所示,本说明书第二个实施例提供一种与实施例一对应的嵌入式软件升级装置,包括:
文件获取模块202,用于获取目标软件的升级文件;其中,所述目标软件为待升级的嵌入式软件;
升级执行模块204,用于将所述升级文件中存在的与当前程序文件的差异数据写入本地存储器,以更新所述本地存储器中,所述差异数据对应位置处的所述当前程序文件中的程序数据,实现对所述目标软件的升级;其中,所述当前程序文件为所述目标软件当前版本的程序文件。
可选的,将所述升级文件中存在的与当前程序文件的差异数据写入本地存储器,以更新所述本地存储器中,所述差异数据对应位置处的所述当前程序文件中的程序数据,包括:
依次判断各第一数据块和对应的第二数据块是否相同;其中,第一数据块是所述升级文件中的数据块,所述第二数据块是当前程序文件中的数据块;
将不相同的第一数据块确定为差异数据,在本地存储器中擦除与所述差异数据对应的位置处的第二数据块,并将所述差异数据写入与所述差异数据对应的位置。
可选的,所述升级文件为简化升级文件,所述简化升级文件包含一个或多个数据片段,每个所述数据片段包含有差异数据以及所述差异数据对应的地址信息;
将所述升级文件中存在的与当前程序文件的差异数据写入本地存储器,以更新所述本地存储器中,所述差异数据对应位置处的所述当前程序文件中的程序数据,包括:
获取各个数据片段中的差异数据以及所述差异数据对应的地址信息;
根据所述地址信息删除本地存储器中所述当前程序文件中的程序数据,将所述差异数据填入本地存储器中与所述地址信息对应的位置。
可选的,所述升级执行模块204,还用于确定所述升级文件与目标软件当前版本的程序文件的差异数据前,对所述升级文件的完整性进行第一数据校验,在第一数据校验通过后确定所述升级文件与所述目标软件当前版本的程序文件的差异数据。
可选的,所述升级执行模块204,还用于每次对所述目标软件进行升级后,对本地存储器中,所述目标软件最新的程序文件的更新度进行第二数据校验;
若第二数据校验不通过,则重新确定所述升级文件与目标软件当前版本的程序文件的差异数据,将所述差异数据写入本地存储器,以对所述目标软件进行升级。
可选的,所述升级执行模块204,还用于判断所述目标软件是否能够重新启动;
若是,则备份本地存储器中,所述目标软件最新的程序文件;
若否,则启动上次备份的所述目标软件的程序文件。
本说明书第三个实施例提供一种嵌入式软件升级设备,包括:
至少一个处理器;
以及,
与所述至少一个处理器通信连接的存储器;
其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,使所述至少一个处理器能够执行实施例一所述的嵌入式软件升级方法。
本说明书第四个实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现实施例一所述的嵌入式软件升级方法。
上述各实施例可以结合使用,不同实施例之间或同一实施例内的名称相同的模块可以是相同或不同的模块。
上述对本说明书特定实施例进行了描述,其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,附图中描绘的过程不一定必须按照示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书实施例提供的装置、设备、非易失性计算机可读存储介质与方法是对应的,因此,装置、设备、非易失性计算机存储介质也具有与对应方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置、设备、非易失性计算机存储介质的有益技术效果。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Cirrcuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书实施例可提供为方法、系统、或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带式磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种嵌入式软件升级方法,其特征在于,包括:
获取目标软件的升级文件;其中,所述目标软件为待升级的嵌入式软件;
将所述升级文件中存在的与当前程序文件的差异数据写入本地存储器,以更新所述本地存储器中,所述差异数据对应位置处的所述当前程序文件中的程序数据,实现对所述目标软件的升级;其中,所述当前程序文件为所述目标软件当前版本的程序文件。
2.如权利要求1所述的方法,其特征在于,将所述升级文件中存在的与当前程序文件的差异数据写入本地存储器,以更新所述本地存储器中,所述差异数据对应位置处的所述当前程序文件中的程序数据,包括:
依次判断各第一数据块和对应的第二数据块是否相同;其中,第一数据块是所述升级文件中的数据块,所述第二数据块是当前程序文件中的数据块;
将不相同的第一数据块确定为差异数据,在本地存储器中擦除与所述差异数据对应的位置处的第二数据块,并将所述差异数据写入与所述差异数据对应的位置。
3.如权利要求1所述的方法,其特征在于,所述升级文件为简化升级文件,所述简化升级文件包含一个或多个数据片段,每个所述数据片段包含有差异数据以及所述差异数据对应的地址信息;
将所述升级文件中存在的与当前程序文件的差异数据写入本地存储器,以更新所述本地存储器中,所述差异数据对应位置处的所述当前程序文件中的程序数据,包括:
获取各个数据片段中的差异数据以及所述差异数据对应的地址信息;
根据所述地址信息删除本地存储器中所述当前程序文件中所述地址信息对应位置处的程序数据,将所述差异数据填入本地存储器中与所述地址信息对应的位置。
4.如权利要求3所述的方法,其特征在于,当所述差异数据为新增差异数据时,所述将所述升级文件中存在的与当前程序文件的差异数据写入本地存储器,以更新所述本地存储器中,所述差异数据对应位置处的所述当前程序文件中的程序数据,包括:
获取所述新增差异数据对应的第一地址信息,将所述新增差异数据插入到所述本地存储器中所述第一地址信息对应的位置处,所述本地存储器中新增差异数据之后的第二数据对应的地址信息依次后移。
5.如权利要求1所述的方法,其特征在于,确定所述升级文件与目标软件当前版本的程序文件的差异数据前,所述方法还包括:
对所述升级文件的完整性进行第一数据校验,在第一数据校验通过后确定所述升级文件与所述目标软件当前版本的程序文件的差异数据。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:
每次对所述目标软件进行升级后,对本地存储器中,所述目标软件最新的程序文件的更新度进行第二数据校验;
若第二数据校验不通过,则重新确定所述升级文件与目标软件当前版本的程序文件的差异数据,将所述差异数据写入本地存储器,以对所述目标软件进行升级。
7.如权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:
判断所述目标软件是否能够重新启动;
若是,则备份本地存储器中,所述目标软件最新的程序文件;
若否,则启动上次备份的所述目标软件的程序文件。
8.一种嵌入式软件升级装置,其特征在于,包括:
文件获取模块,用于获取目标软件的升级文件;其中,所述目标软件为待升级的嵌入式软件;
升级执行模块,用于将所述升级文件中存在的与当前程序文件的差异数据写入本地存储器,以更新所述本地存储器中,所述差异数据对应位置处的所述当前程序文件中的程序数据,实现对所述目标软件的升级;其中,所述当前程序文件为所述目标软件当前版本的程序文件。
9.一种嵌入式软件升级设备,其特征在于,包括:
至少一个处理器;
以及,
与所述至少一个处理器通信连接的存储器;
其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,使所述至少一个处理器能够执行权利要求1至7中任一项所述的嵌入式软件升级方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现权利要求1至7中任一项所述的嵌入式软件升级方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310347371.6A CN116541050A (zh) | 2023-04-03 | 2023-04-03 | 一种嵌入式软件升级方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310347371.6A CN116541050A (zh) | 2023-04-03 | 2023-04-03 | 一种嵌入式软件升级方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116541050A true CN116541050A (zh) | 2023-08-04 |
Family
ID=87442498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310347371.6A Pending CN116541050A (zh) | 2023-04-03 | 2023-04-03 | 一种嵌入式软件升级方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116541050A (zh) |
-
2023
- 2023-04-03 CN CN202310347371.6A patent/CN116541050A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110008224B (zh) | 一种数据库事务处理方法及装置 | |
US9639423B2 (en) | Method and apparatus for recovering metadata lost during an unexpected power down event | |
US20050114852A1 (en) | Tri-phase boot process in electronic devices | |
US20070192532A1 (en) | Efficient system and method for updating a memory device | |
CN110007935B (zh) | 一种程序升级的处理方法、装置及设备 | |
CN108628688B (zh) | 一种消息处理方法、装置及设备 | |
CN110377580B (zh) | 一种数据迁移方法、装置及设备 | |
CN113744064B (zh) | 在区块链节点中执行交易的方法及装置 | |
US11474805B2 (en) | System capable of upgrading firmware in background and method for upgrading firmware in background | |
CN110989939A (zh) | 一种数据缓存处理方法、装置、设备及缓存组件 | |
CN114116023B (zh) | 操作系统启动方法、设备、存储介质及计算机程序产品 | |
EP2329368B1 (en) | Updating content without using a mini operating system | |
US12093678B2 (en) | Operating system management method, device, storage medium, and computer program product | |
CN111273965B (zh) | 一种容器应用启动方法、系统、装置及电子设备 | |
JP5733239B2 (ja) | アプリケーション実行方法及び実行装置 | |
EP1584005B1 (en) | Mobile handset with a fault tolerant update agent | |
CN113835637B (zh) | 一种数据的写入方法、装置以及设备 | |
CN117093247A (zh) | 嵌入式设备的固件升级方法、装置、芯片和计算设备 | |
CN116541050A (zh) | 一种嵌入式软件升级方法、装置、设备及介质 | |
CN111913733A (zh) | 制作自动升级包方法、装置、计算机设备和存储介质 | |
CN113490112B (zh) | 一种无线耳机及无线耳机的数据处理方法、存储介质 | |
CN116880905B (zh) | 一种数据存储方法、装置、存储介质及电子设备 | |
CN104133846A (zh) | 文件复制方法和装置 | |
CN116893839A (zh) | 生成ota数据包的方法、用于更新系统的方法及相关产品 | |
KR100321999B1 (ko) | 스크립트를이용한프로그램패치방법 |
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 |