CN115794179A - 一种程序升级方法、装置、电子设备以及存储介质 - Google Patents

一种程序升级方法、装置、电子设备以及存储介质 Download PDF

Info

Publication number
CN115794179A
CN115794179A CN202211558652.8A CN202211558652A CN115794179A CN 115794179 A CN115794179 A CN 115794179A CN 202211558652 A CN202211558652 A CN 202211558652A CN 115794179 A CN115794179 A CN 115794179A
Authority
CN
China
Prior art keywords
boot
program
application
upgrading
upgrade
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
Application number
CN202211558652.8A
Other languages
English (en)
Inventor
张光耀
高峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Automotive Research Institute of Tsinghua University
Original Assignee
Suzhou Automotive Research Institute of Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Automotive Research Institute of Tsinghua University filed Critical Suzhou Automotive Research Institute of Tsinghua University
Priority to CN202211558652.8A priority Critical patent/CN115794179A/zh
Publication of CN115794179A publication Critical patent/CN115794179A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种程序升级方法、装置、电子设备以及存储介质。该方法包括:通过外部远程升级端,获取程序参数;通过boot选择器,根据程序参数进行boot激活状态校验以及boot程序参数校验,确定跳转boot,其中,boot为第一boot或者第二boot;通过跳转boot,根据程序参数进行升级标志页校验和/或至少一项应用程序参数校验,确定升级boot或者升级应用,其中,应用为第一应用或者第二应用;跳转至升级boot或者升级应用进行刷写,以实现程序升级。采用本申请技术方案,实现了基于双boot和双应用的程序升级,避免了由于内存损坏或者数据错误等造成的故障,提高了程序的安全性。

Description

一种程序升级方法、装置、电子设备以及存储介质
技术领域
本发明涉及电子信息技术领域,尤其涉及一种程序升级方法、装置、电子设备以及存储介质。
背景技术
在汽车电子行业,通过汽车OTA(Over-the-Air Technology,空中下载技术)进行远程的程序升级,即通过无线网络下载数据包,从而对汽车系统进行升级。
现有技术中,进行程序升级时,采用的是单boot单app或单boot双App的方式,boot储存进行在线升级的驱动程序,app储存应用程序。但是,上述的方式对于安全方面的考虑不足,由于没有冗余系统,一旦发生错误,则会造成内存损坏、数据错误,最终导致模块故障甚至报废。
发明内容
本发明提供了一种程序升级方法、装置、电子设备以及存储介质,以实现避免由于内存损坏或者数据错误等造成的故障,提高程序的安全性。
第一方面,本发明实施例提供了一种程序升级方法,该方法包括:
通过外部远程升级端,获取程序参数;
通过boot选择器,根据程序参数进行boot激活状态校验以及boot程序参数校验,确定跳转boot,其中,boot为第一boot或者第二boot;
通过跳转boot,根据程序参数进行升级标志页校验和/或至少一项应用程序参数校验,确定升级boot或者升级应用,其中,应用为第一应用或者第二应用;
跳转至升级boot或者升级应用进行刷写,以实现程序升级。
第二方面,本发明实施例还提供了一种程序升级装置,该装置包括:
程序参数获取模块,用于通过外部远程升级端,获取程序参数;
校验模块,用于通过boot选择器,根据程序参数进行boot激活状态校验以及boot程序参数校验,确定跳转boot,其中,boot为第一boot或者第二boot;
升级程序确定模块,用于通过跳转boot,根据程序参数进行升级标志页校验和/或至少一项应用程序参数校验,确定升级boot或者升级应用,其中,应用为第一应用或者第二应用;
程序刷写模块,用于跳转至升级boot或者升级应用进行刷写,以实现程序升级。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现如本发明实施例中任一的程序升级方法。
第四方面,本发明实施例还提供了一种存储计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行如本发明实施例中任一的程序升级方法。
本发明实施例的技术方案,通过外部远程升级端,获取程序参数,使得设备能够较为容易获取程序参数,并且由于程序参数存储于外部远程升级端,进而减少存储程序参数所使用的资源。通过boot选择器确定将要跳转的boot,使得更新boot时,仍可以通过另一个boot运行设备的同时,避免了由于内存或通信等问题造成boot更新错误而导致设备发生故障,甚至报废等问题。通过跳转boot,确定升级boot或者升级应用,使得微控制单元中程序运行更为有序,避免了同一个模块处理多个程序而导致程序错乱,进而对微控制单元造成损害。通过跳转至升级boot或者升级应用进行刷写,实现程序升级,使得升级过程中,整体设备仍可以正常工作的同时,避免了由于发生错误而造成内存损坏、数据错误,最终导致模块故障甚至报废的问题的发生。通过上述步骤的运行,使得整体升级进行了程序的冗余处理,并对程序进行了备份,优化了boot的设计架构,使得每一个模块都具有单独的闪存区域和单独的程序开发。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种程序升级方法的流程图;
图2为本发明实施例一所适用的设备实现OTA的原理图;
图3为boot选择器逻辑控制的结构示意图;
图4为本发明实施例所适用的读取与写入程序参数的原理图;
图5是本发明实施例二提供的另一种程序升级方法的流程图;
图6为跳转boot为boot1时,boot1控制逻辑的示意图;
图7是本发明实施例三提供的一种程序升级装置的结构示意图;
图8是本发明实施例四提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1为本发明实施例一提供了一种程序升级方法的流程图,本实施例可适用于在设备具有双boot双app时,进行程序升级的情况,该方法可以由程序升级装置来执行,该程序升级装置可以采用硬件和/或软件的形式实现,该程序升级装置可配置于具有数据处理能力的电子设备中。
如图1所示,该方法包括:
S110、通过外部远程升级端,获取程序参数。
外部远程升级端也即外部OTA端,是提供更新程序参数的设备,包括但不限于服务器以及电脑等设备。程序参数可以是程序更新时包含的参数信息,包括但不限于更新过程中使用或更新的boot(引导程序,Boot)、将要更新的app(应用程序,Application)、将要更新的完整数据的数据传输接口以及程序参数自身正确性的校验值等。本发明对此不进行限制。
在使用传统方法进行程序更新时,更新设备由于仅有一个boot与一个对应boot的app。因此在更新时,一旦出现网络波动等问题就会导致内存损坏、数据错误,最终导致模块故障甚至报废等问题的出现。
在对设备进行更新时,OTA端向设备的微控制单元发出更新请求,用以请求设备接收程序参数并依据程序参数进行更新。在设备的微控制单元接收到更新请求后,将使用网络接收程序参数。其中使用的网络包括但不限于WIFI,SIM卡移动网络以及蓝牙等。
通过外部远程升级端,获取程序参数,使得设备能够较为容易获取程序参数,并且由于程序参数存储于外部远程升级端,进而减少存储程序参数所使用的资源。
在一种可选方案中,通过外部远程升级端,获取程序参数,可包括步骤A1-A2:
步骤A1、通过外部远程升级端,将程序参数下载至外部闪存的代码段中。
步骤A2、通过微控制单元,从外部闪存的代码段中将程序参数写入内部闪存中。
外部闪存,也即外部Flash,是设备外部存储器中一种不断供电的非易失性存储器。其中外部存储器可以是U盘、移动硬盘以及机械硬盘等。内部闪存也即内部Flash,是微控制单元内部的存储器中的一种不断供电的非易失性存储器。微控制单元可以是将微型计算机的主要部分集成在一个芯片上的单芯片微型控制单元。
图2为本发明实施例一所适用的设备实现OTA的原理图。参见图2,尽管设备的微控制单元中已经拥有了内部闪存可以存储部分数据,但由于成本等问题,设备往往会外接一个或多个外部存储器,并使用外部存储器进行数据存储,内部存储器往往用以存储设备运行过程中使用的数据等。
因此在设备通过向外部远程升级端发送更新请求并对程序参数进行下载时,会将下载后的程序参数存储在外部存储器的闪存的代码段中。并通过微控制单元,将外部闪存的代码段中的程序参数写入到内部闪存中,其中,程序参数的写入协议包括但不限于SPI协议、IIC协议以及UART协议等。
通过将程序参数下载至外部闪存的代码段中,并使用微控制单元,从外部闪存的代码段中将程序参数写入内部闪存中,使得对程序参数进行存储时,不影响微控制单元内部的运行,尽可能的避免由于直接将程序参数写入内部存储而对整体设备的运行带来影响。
S120、通过boot选择器,根据程序参数进行boot激活状态校验以及boot程序参数校验,确定跳转boot,其中,boot为第一boot或者第二boot。
boot选择器可以是用以确定将要对运行的boot进行选择的模块。boot激活状态可以是当前设备中正在运行的boot。第一boot可以是预先设定的boot中的一个,另一个为第二boot,其中,第一与第二仅用以区分两个boot。
由于获取程序参数中包含有boot激活状态以及校验值等信息,因此boot选择器在接收到程序参数时,会读取程序参数中boot激活状态以及校验值,并根据读取的数据进行boot激活状态校验以及boot程序参数校验,在校验通过时,会跳转到与程序参数对应的boot中。
通过boot选择器确定将要跳转的boot,使得更新boot时,仍可以通过另一个boot运行设备的同时,避免了由于网络等问题造成boot更新错误而导致设备发生故障,甚至报废等问题。
在一种可选方案中,通过boot选择器,根据程序参数进行boot激活状态校验以及boot程序参数校验,确定跳转boot,可包括步骤B1-B2:
步骤B1、通过boot选择器,读取程序参数。
步骤B2、若确定目标boot处于boot激活状态,并且目标boot的程序参数与boot选择器读取的boot程序参数校验通过,则确定目标boot为跳转boot。
目标boot可以是程序参数中标识的,将要使用的boot。
在boot选择器读取外部闪存的代码段中存储的程序参数时,可能存在某些异常而导致读取失败的问题出现,因此boot选择器在读取外部闪存的代码段中的程序参数时,将记录读取的次数,当读取次数累计量超过预设数值时,将不在对外部闪存的代码段中存储的程序参数进行读取。其中,预设数值可以是预先设定的用以表示读取当前外部闪存的代码段中存储的程序参数的最大次数。
图3为boot选择器逻辑控制的结构示意图。其中,图3中boot选择器keep状态可以是boot选择器保持监听的状态,监听状态为检测外部闪存中是否存在程序参数时的状态。参见图2,在boot选择器成功读取外部闪存的代码段中存储的程序参数时,会判断程序参数中的目标boot是否处于激活状态。
在boot选择器确定目标boot处于激活状态时,会将读取boot程序参数,并使用此程序参数与目标boot程序参数进行校验,在校验值相同后,确定目标boot为跳转boot。其中校验方法包括但不限于校验值对比以及奇偶校验值对比等,本发明对此不进行限制。
在一种可选方案中,通过boot选择器,读取程序参数,可包括步骤C1-C3:
步骤C1、通过boot选择器,读取内部闪存中的程序参数。
步骤C2、若确定程序参数未被复制,则对程序参数进行复制,并将复制后的程序参数写入内部存储器中以及外部缓存的数据段中。
步骤C3、读取内部存储器中的程序参数,以及外部缓存的数据段中的程序参数。
在通过boot选择器,读取程序参数时,boot选择器将读取内部闪存中存储的程序参数,并判断程序参数是否已经复制过。若已经复制过,则代表此程序参数已经存储在外部缓存的数据段中,此时将直接读取内部存储器中的程序参数,以及外部缓存的数据段中的程序参数。
若程序参数尚未复制过,则代表此程序参数尚未存储在外部缓存的数据段中,此时会将程序参数进行复制,并将复制后的程序参数写入内部存储器中以及外部缓存的数据段,并读取内部存储器中的程序参数,以及外部缓存的数据段中的程序参数。
通过对程序参数进行复制,并写入内部存储器中以及外部缓存的数据段,使得程序参数被保存,进而后续出现数据错误等问题时,能够及时确定导致错误发生的程序参数。
在一种可选方案中,目标boot的程序参数与boot选择器读取的boot程序参数校验通过,可包括步骤D1-D4:
步骤D1、将目标boot的程序参数分别与内部存储器中的程序参数,以及外部缓存的数据段中的程序参数进行校验。
步骤D2、若确定目标boot的程序参数与内部存储器中的程序参数以及外部缓存的数据段中的程序参数均校验通过,则确定目标boot的boot程序参数校验通过。
步骤D3、若确定目标boot的程序参数与内部存储器中的程序参数的校验通过,与外部缓存的数据段中的程序参数未校验通过,则确定目标boot的boot程序参数校验通过,并且将内部存储器中的程序参数写入外部缓存的数据段中。
步骤D4、若确定目标boot的程序参数与外部缓存的数据段中的程序参数的校验通过,与内部存储器中的程序参数未校验通过,则确定目标boot的boot程序参数校验通过,并且将外部缓存的数据段中的程序参数写入内部存储器中。
图4为本发明实施例所适用的读取与写入程序参数的原理图。参见图4,在通过boot选择器,读取程序参数,并且确定目标boot处于boot激活状态时,目标boot的程序参数将分别进行程序参数将与内部存储器中的程序参数的校验,以及程序参数与外部缓存的数据段中的程序参数校验。其中,校验方法包括但不限于页号与页计数校验、页校验值校验、总包数校验以及哈希值校验等。
在目标boot的程序参数与内部存储器中的程序参数和外部缓存的数据段中的程序参数的校验结果均通过时,认定目标boot的程序参数与内部存储器中的程序参数以及外部缓存的数据段中的程序参数相同。进而使得boot选择器确定目标boot程序参数通过校验。
在目标boot的程序参数通过内部存储器中的程序参数校验,但未通过外部缓存的数据段中的程序参数校验时,认定目标boot的程序参数与内部存储器中的程序参数相同,但与外部缓存的数据段中的程序参数不同,此时boot选择器会将内部存储器中的程序参数写入到外部缓存的数据段中,使得外部缓存的数据段中的程序参数与目标boot的程序参数和内部存储器中的程序参数相同,并确定目标boot程序参数通过校验。
在目标boot的程序参数通过外部存储器中的程序参数校验,但未通过内部缓存的数据段中的程序参数校验时,认定目标boot的程序参数与外部存储器中的程序参数相同,但与内部缓存的数据段中的程序参数不同,此时boot选择器会将外部存储器中的程序参数写入到内部缓存的数据段中,使得内部缓存的数据段中的程序参数与目标boot的程序参数和外部存储器中的程序参数相同,并确定目标boot程序参数通过校验。
S130、通过跳转boot,根据程序参数进行升级标志页校验和/或至少一项应用程序参数校验,确定升级boot或者升级应用,其中,应用为第一应用或者第二应用。
升级标志页可以是程序参数中用以标志将要升级的boot或应用的数据页。第一应用可以是预先设定的应用中的一个,另一个为第二应用,其中,第一与第二仅用以区分两个应用。
在根据程序参数进行boot激活状态校验以及boot程序参数校验,确定跳转boot后,根据跳转后的boot对校验程序参数中升级标志页校验和/或至少一项应用程序参数校验。在升级标志页校验通过时,跳转后的boot确定当前程序参数用以对微控制单元中boot或app进行升级。在应用程序参数校验通过时,跳转后的boot确定当前程序参数用以升级与当前程序参数对应的app。
在升级标志页校验通过但应用程序参数校验未通过时,跳转后的boot将确定当前程序参数用以升级与当前程序参数对应的boot。
通过跳转boot,确定升级boot或者升级应用,使得微控制单元中程序运行更为有序,避免了同一个模块处理多个程序而导致程序错乱,进而对微控制单元造成损害。
S140、跳转至升级boot或者升级应用进行刷写,以实现程序升级。
在通过跳转boot,确定升级boot或者升级应用后,将根据确定的升序boot或升级应用,跳转到对应的boot或应用中,进行程序升级。
示例性的,在对第一boot升级时,由于已经激活的为第二boot,因此会通过第二boot对第一boot进行程序升级,进而避免了boot在升级过程中无法使用而导致整体设备瘫痪的问题。
在对第一应用进行升级时,由于已经激活了第二应用,因此会通过升级boot对第一应用进行程序升级,进而使得升级第一应用时,整体设备仍处于正常工作状态。
通过跳转至升级boot或者升级应用进行刷写,实现程序升级,使得升级过程中,整体设备仍可以正常工作的同时,避免了由于发生错误而造成内存损坏、数据错误,最终导致模块故障甚至报废的问题的发生。
本发明实施例的技术方案,通过外部远程升级端,获取程序参数,使得设备能够较为容易获取程序参数,并且由于程序参数存储于外部远程升级端,进而减少存储程序参数所使用的资源。通过boot选择器确定将要跳转的boot,使得更新boot时,仍可以通过另一个boot运行设备,避免了由于网络等问题造成boot更新错误而导致设备发生故障,甚至报废等问题。通过跳转boot,确定升级boot或者升级应用,使得微控制单元中程序运行更为有序,避免了同一个模块处理多个程序而导致程序错乱,进而对微控制单元造成损害。通过跳转至升级boot或者升级应用进行刷写,实现程序升级,使得升级过程中,整体设备仍可以正常工作的同时,避免了由于发生错误而造成内存损坏、数据错误,最终导致模块故障甚至报废的问题的发生。通过上述步骤的运行,使得整体升级进行了程序的冗余处理,并对程序进行了备份,优化了boot的设计架构,使得每一个模块都具有单独的闪存区域和单独的程序开发。
实施例二
图5为本发明实施例二提供的一种程序升级方法的流程图,本发明实施例在上述实施例的基础上,对通过跳转boot,根据程序参数进行升级标志页校验和/或至少一项应用程序参数校验,确定升级boot或者升级应用的过程进行了进一步的具体化。
如图5所示,该方法包括:
S210、通过外部远程升级端,获取程序参数。
S220、通过boot选择器,根据程序参数进行boot激活状态校验以及boot程序参数校验,确定跳转boot,其中,boot为第一boot或者第二boot。
S230、通过跳转boot,根据程序参数进行升级标志页校验。
在通过boot选择器确定跳转boot后,将跳转到跳转boot中,并使用跳转boot对程序参数进行升级标志页校验。其中,程序参数中包含的升级标志页包括但不限于第一boot升级标志页、第二boot升级标志页、第一应用升级标志页以及第二应用升级标志页等。
示例性的,在程序参数将要升级第一boot时,会将第一boot升级标志页置为1,使得跳转boot依据程序参数进行升级标志页校验时,会读取到第一boot升级标志页置的数值为1,进而确定出升级的目标为第一boot。
通过跳转boot,根据程序参数进行升级标志页校验,使得同一模块仅处理一项或少数几项程序,进而使得程序运行较为有序,整体系统运行过程较为清晰,进而尽可能的保证了整体系统运行的稳定性。
在一种可选方案中,在通过跳转boot,根据程序参数进行升级标志页校验之后,包括步骤C1-C3:
步骤C1、若根据升级标志页确定程序升级为boot升级,并且程序升级为应用升级,则判断应用的激活状态。
步骤C2、若确定目标应用的激活状态为激活,则确定除目标应用之外的另一应用为升级应用。
步骤C3、若确定第一应用和第二应用的激活状态均为未激活,则确定第一应用为升级应用。
目标应用可以是升级标志页中标记的将要升级的应用。升级应用可以是跳转boot确定目标应用的工作状态后,确定的实际升级应用。本发明对此不进行限制。
图6为跳转boot为boot1时,boot1控制逻辑的示意图。参见图6,在根据程序参数进行升级标志页校验之后,若校验升级标志页后确定为boot升级,并且程序升级为应用升级时,为了避免直接升级而导致设备停止工作,会对应用的激活状态进行判断。
在确定目标应用的激活状态为激活时,确定当前目标应用处于工作状态,进而确定目标应用之外的另一应用为升级应用。
示例性的,在boot1确定升级标志页数据正确,且第一应用为升级应用时,将对第一应用的激活状态进行判断,在确定第一应用的激活状态为激活时,确定第二应用为升级应用。
在确定目标应用的激活状态为非激活,且目标应用以外的应用的激活状态也为非激活时,确定第一应用与第二应用均未处于工作状态,进而确定出第一应用为升级应用。
示例性的,在boot1确定升级标志页数据正确,且第一应用为升级应用时,将对第一应用的激活状态进行判断,在确定第一应用的激活状态为未激活且第二应用的激活状态也为未激活时,确定第一应用为升级应用。
在一种可选方案中,在通过跳转boot,根据程序参数进行升级标志页校验之后,还包括:
若根据升级标志页确定程序升级不为boot升级,并且目标应用的应用长度校验以及应用程序参数校验均通过,则确定目标应用为升级应用。
由于存在仅升级应用但不升级boot的情况,因此在跳转boot根据程序参数进行升级标志页校验时,将根据升级标志页判断程序参数中升级标志页是否为boot升级。在确定程序升级不为boot升级时,将校验应用激活状态是否为激活。
当确定目标应用的激活状态为激活时,将对应用程序校验,当目标应用的应用程序校验通过时,确定目标应用为升级应用。当应用程序校验未通过时,将判断另一个应用程序长度是否为0。在另一个应用长度不为0且校验正确时,将会确定另一个应用为升级应用。
当目标应用与另一个应用的长度都为0时,将停留在当前boot中。
当目标应用与另一个应用的长度不都为0时,将判断目标应用与另一个应用的校验值是否正确。当目标应用与另一个应用的校验值均错误时,将停留在当前boot中。当目标应用与另一个应用的校验值存在至少一个正确时,将确定目标应用为升级应用。
S240、若根据升级标志页确定程序升级为boot升级,并且程序升级不为应用升级,则确定除跳转boot之外的另一boot为升级boot。
通过跳转到跳转boot中,并使用跳转boot对程序参数进行升级标志页校验,并确定程序参数中升级标志页为boot升级且程序升级不为应用升级时,将确定程序参数仅用于boot升级。此时,跳转boot将确定另一个boot为升级boot。
示例性的,在跳转boot为第一boot时,会对程序参数的升级标志页进行校验,在确定程序参数中升级标志页中boot升级标志页为1,应用升级为0时,将确定第二boot为升级boot。
通过升级标志页确定程序升级为boot升级,使得在boot升级过程时,设备仍可以使用另一个boot,进而避免在出现boot损害时,设备无法使用且无法修复的问题。
S250、跳转至升级boot或者升级应用进行刷写,以实现程序升级。
通过跳转boot,根据程序参数进行升级标志页校验,使得同一模块仅处理一项或少数几项程序,进而使得程序运行较为有序,整体系统运行过程较为清晰,进而尽可能的保证了整体系统运行的稳定性。通过升级标志页确定程序升级为boot升级,使得在boot升级过程时,设备仍可以使用另一个boot,进而避免在出现boot损害时,设备无法使用且无法修复的问题。
实施例三
图7为本发明实施例提供了一种程序升级装置的结构框图,本实施例可适用于在设备具有双boot双app时,进行程序升级的情况。该程序升级装置可以采用硬件和/或软件的形式实现,该程序升级装置可配置于具有数据处理能力的电子设备中。如图7所示,该装置包括:程序参数获取模块310、校验模块320、升级程序确定模块330以及程序刷写模块340。
其中:
程序参数获取模块310,用于通过外部远程升级端,获取程序参数;
校验模块320,用于通过boot选择器,根据程序参数进行boot激活状态校验以及boot程序参数校验,确定跳转boot,其中,boot为第一boot或者第二boot;
升级程序确定模块330,用于通过跳转boot,根据程序参数进行升级标志页校验和/或至少一项应用程序参数校验,确定升级boot或者升级应用,其中,应用为第一应用或者第二应用;
程序刷写模块340,用于跳转至升级boot或者升级应用进行刷写,以实现程序升级。
在上述实施例的基础上,可选的,程序参数获取模块310,具体用于:
通过外部远程升级端,将程序参数下载至外部闪存的代码段中;
通过微控制单元,从外部闪存的代码段中将程序参数写入内部闪存中。
在上述实施例的基础上,可选的,校验模块320,包括:
程序参数读取单元,用于通过boot选择器,读取程序参数;
跳转boot确定单元,用于若确定目标boot处于boot激活状态,并且目标boot的程序参数与boot选择器读取的boot程序参数校验通过,则确定目标boot为跳转boot。
在上述实施例的基础上,可选的,程序参数读取单元,具体用于:
通过boot选择器,读取内部闪存中的程序参数;
若确定程序参数未被复制,则对程序参数进行复制,并将复制后的程序参数写入内部存储器中以及外部缓存的数据段中;
读取内部存储器中的程序参数,以及外部缓存的数据段中的程序参数。
在上述实施例的基础上,可选的,跳转boot确定单元,具体用于:
将目标boot的程序参数分别与内部存储器中的程序参数,以及外部缓存的数据段中的程序参数进行校验;
若确定目标boot的程序参数与内部存储器中的程序参数以及外部缓存的数据段中的程序参数均校验通过,则确定目标boot的boot程序参数校验通过;
若确定目标boot的程序参数与内部存储器中的程序参数的校验通过,与外部缓存的数据段中的程序参数未校验通过,则确定目标boot的boot程序参数校验通过,并且将内部存储器中的程序参数写入外部缓存的数据段中;
若确定目标boot的程序参数与外部缓存的数据段中的程序参数的校验通过,与内部存储器中的程序参数未校验通过,则确定目标boot的boot程序参数校验通过,并且将外部缓存的数据段中的程序参数写入内部存储器中。
在上述实施例的基础上,可选的,升级程序确定模块330,包括:
程序校验单元,用于通过跳转boot,根据程序参数进行升级标志页校验。
升级boot确定单元,用于若根据升级标志页确定程序升级为boot升级,并且程序升级不为应用升级,则确定除跳转boot之外的另一boot为升级boot。
在上述实施例的基础上,可选的,程序校验单元之后,包括:
激活状态确定单元,用于若根据升级标志页确定程序升级为boot升级,并且程序升级为应用升级,则判断应用的激活状态。
升级应用确定单元,用于若确定目标应用的激活状态为激活,则确定除目标应用之外的另一应用为升级应用。
应用确定单元,用于若确定第一应用和第二应用的激活状态均为未激活,则确定第一应用为升级应用。
在上述实施例的基础上,可选的,程序校验单元之后,还包括:
应用升级确定单元,用于若根据升级标志页确定程序升级不为boot升级,并且目标应用的应用长度校验以及应用程序参数校验均通过,则确定目标应用为升级应用。
本发明实施例所提供的程序升级装置可执行本发明任意实施例所提供的程序升级方法,具备执行方法相应的功能模块和有益效果。
实施例四
图8示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图8所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(中央处理器)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如程序升级方法。
在一些实施例中,程序升级方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的程序升级方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行程序升级方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (10)

1.一种程序升级方法,其特征在于,包括:
通过外部远程升级端,获取程序参数;
通过boot选择器,根据程序参数进行boot激活状态校验以及boot程序参数校验,确定跳转boot,其中,所述boot为第一boot或者第二boot;
通过跳转boot,根据程序参数进行升级标志页校验和/或至少一项应用程序参数校验,确定升级boot或者升级应用,其中,所述应用为第一应用或者第二应用;
跳转至所述升级boot或者升级应用进行刷写,以实现程序升级。
2.根据权利要求1所述的方法,其特征在于,通过boot选择器,根据程序参数进行boot激活状态校验以及boot程序参数校验,确定跳转boot,包括:
通过boot选择器,读取程序参数;
若确定目标boot处于boot激活状态,并且目标boot的程序参数与boot选择器读取的boot程序参数校验通过,则确定所述目标boot为跳转boot。
3.根据权利要求2所述的方法,其特征在于,通过外部远程升级端,获取程序参数,包括:
通过外部远程升级端,将程序参数下载至外部闪存的代码段中;
通过微控制单元,从外部闪存的代码段中将所述程序参数写入内部闪存中;
通过boot选择器,读取程序参数,包括:
通过boot选择器,读取内部闪存中的程序参数;
若确定所述程序参数未被复制,则对所述程序参数进行复制,并将复制后的程序参数写入内部存储器中以及外部缓存的数据段中;
读取内部存储器中的程序参数,以及外部缓存的数据段中的程序参数。
4.根据权利要求3所述的方法,其特征在于,目标boot的程序参数与boot选择器读取的boot程序参数校验通过,包括:
将目标boot的程序参数分别与内部存储器中的程序参数,以及外部缓存的数据段中的程序参数进行校验;
若确定目标boot的程序参数与内部存储器中的程序参数以及外部缓存的数据段中的程序参数均校验通过,则确定目标boot的boot程序参数校验通过;
若确定目标boot的程序参数与内部存储器中的程序参数的校验通过,与外部缓存的数据段中的程序参数未校验通过,则确定目标boot的boot程序参数校验通过,并且将内部存储器中的程序参数写入外部缓存的数据段中;
若确定目标boot的程序参数与外部缓存的数据段中的程序参数的校验通过,与内部存储器中的程序参数未校验通过,则确定目标boot的boot程序参数校验通过,并且将外部缓存的数据段中的程序参数写入内部存储器中。
5.根据权利要求1所述的方法,其特征在于,通过跳转boot,根据程序参数进行升级标志页校验和/或至少一项应用程序参数校验,确定升级boot或者升级应用,包括:
通过跳转boot,根据程序参数进行升级标志页校验;
若根据升级标志页确定程序升级为boot升级,并且程序升级不为应用升级,则确定除跳转boot之外的另一boot为升级boot。
6.根据权利要求5所述的方法,其特征在于,在通过跳转boot,根据程序参数进行升级标志页校验之后,包括:
若根据升级标志页确定程序升级为boot升级,并且程序升级为应用升级,则判断应用的激活状态;
若确定目标应用的激活状态为激活,则确定除目标应用之外的另一应用为升级应用;
若确定第一应用和第二应用的激活状态均为未激活,则确定第一应用为升级应用。
7.根据权利要求5所述的方法,其特征在于,在通过跳转boot,根据程序参数进行升级标志页校验之后,还包括:
若根据升级标志页确定程序升级不为boot升级,并且目标应用的应用长度校验以及应用程序参数校验均通过,则确定所述目标应用为升级应用。
8.一种程序升级装置,其特征在于,所述装置包括:
程序参数获取模块,用于通过外部远程升级端,获取程序参数;
校验模块,用于通过boot选择器,根据程序参数进行boot激活状态校验以及boot程序参数校验,确定跳转boot,其中,所述boot为第一boot或者第二boot;
升级程序确定模块,用于通过跳转boot,根据程序参数进行升级标志页校验和/或至少一项应用程序参数校验,确定升级boot或者升级应用,其中,所述应用为第一应用或者第二应用;
程序刷写模块,用于跳转至所述升级boot或者升级应用进行刷写,以实现程序升级。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7中任一所述的一种程序升级方法。
10.一种存储计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-7中任一所述的一种程序升级方法。
CN202211558652.8A 2022-12-06 2022-12-06 一种程序升级方法、装置、电子设备以及存储介质 Pending CN115794179A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211558652.8A CN115794179A (zh) 2022-12-06 2022-12-06 一种程序升级方法、装置、电子设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211558652.8A CN115794179A (zh) 2022-12-06 2022-12-06 一种程序升级方法、装置、电子设备以及存储介质

Publications (1)

Publication Number Publication Date
CN115794179A true CN115794179A (zh) 2023-03-14

Family

ID=85418786

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211558652.8A Pending CN115794179A (zh) 2022-12-06 2022-12-06 一种程序升级方法、装置、电子设备以及存储介质

Country Status (1)

Country Link
CN (1) CN115794179A (zh)

Similar Documents

Publication Publication Date Title
US9471435B2 (en) Information processing device, information processing method, and computer program
CN109358887B (zh) 一种单片机程序的在线升级方法、装置及系统
CN110780890A (zh) 系统升级方法、装置、电子设备和介质
EP2375323A1 (en) Firmware image update and management
CN107315616B (zh) 一种固件的加载方法、装置及电子设备
US20110197193A1 (en) Device and method for controlling communication between bios and bmc
CN107908417B (zh) 固件升级方法及电子设备
EP2680137A1 (en) Method and system for managing bios configuration data of basic input/output system
CN112015447B (zh) 电子设备的系统更新方法及装置、电子设备及存储介质
CN114489732A (zh) 一种更新设备的fpga固件的方法、装置及电子设备
CN108196975B (zh) 基于多校验和的数据验证方法、装置及存储介质
CN115794179A (zh) 一种程序升级方法、装置、电子设备以及存储介质
CN116257397A (zh) 一种压力测试方法、装置、存储介质及设备
CN115033261A (zh) 一种程序更新方法、装置、设备及存储介质
CN112925546B (zh) 一种防止车载ecu刷新出错的多级校验方法及系统
CN111694608B (zh) 终端设备的系统升级方法和装置、电子设备和终端设备
US9704598B2 (en) Use of in-field programmable fuses in the PCH dye
CN117971272A (zh) 一种程序升级方法和电子设备
CN116661698B (zh) 一种窨井排水监测设备中存储器的管理方法及装置
CN117453255A (zh) 嵌入式设备升级方法、装置、设备及存储介质
CN117992305A (zh) 虚拟机监测方法、装置、电子设备及存储介质
CN113064608A (zh) 一种ota升级方法、装置、设备和介质
CN115421761A (zh) 微控制单元应用程序升级方法、装置、系统、设备及介质
CN117931254A (zh) 一种固件升级方法、装置、电子设备及存储介质
CN116185457A (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