CN115421761A - 微控制单元应用程序升级方法、装置、***、设备及介质 - Google Patents
微控制单元应用程序升级方法、装置、***、设备及介质 Download PDFInfo
- Publication number
- CN115421761A CN115421761A CN202211250736.5A CN202211250736A CN115421761A CN 115421761 A CN115421761 A CN 115421761A CN 202211250736 A CN202211250736 A CN 202211250736A CN 115421761 A CN115421761 A CN 115421761A
- Authority
- CN
- China
- Prior art keywords
- upgrading
- application program
- program
- application
- version
- 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
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration 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
技术领域
本公开涉及车联网技术领域,尤其涉及一种微控制单元应用程序升级方法、装置、***、设备及介质。
背景技术
在车辆微控制单元(Microcontroller Unit,MCU)的研发以及应用过程中,由于需要不断对车辆微控制单元应用程序进行必要的修复以及功能迭代,因此,经常需要对车辆微控制单元应用程序进行升级。
目前,对车辆微控制单元应用程序进行升级的方法主要分为以下两种:通过烧写器进行固件烧写,或者,通过ISP(In-System Programming,在线***编程)的方法进行升级。然而,以上两种方法在实际应用过程中,都存在一些问题。其中,通过烧写器的方法通常需要连接硬线以及专用的烧写设备,且需要逐台拆机烧写,对于已经部署到项目现场的无人驾驶车辆来说,难以实现;通过ISP的方法虽然可以在不拆机的情况下通过外部上位机软件进行固件更新,但是由于这种升级方法不具备固件恢复机制,在微控制单元应用程序升级过程中,如果出现设备断电,传输中断,升级失败等情况,微控制单元应用程序无法恢复到升级前的版本,导致设备无法使用。
在实现本发明的过程中,发现现有技术中至少存在以下技术问题:现有技术在微控制单元应用程序升级过程中,若出现设备断电、传输中断、升级失败等异常情况时,微控制单元应用程序无法恢复到升级前的版本,会导致设备无法使用。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开实施例提供了一种微控制单元应用程序升级方法、装置、***、设备及介质,在应用程序升级过程中出现设备断电、传输终端或升级失败等异常情况时,可以保证微控制单元应用程序能够恢复到升级前的版本,进而保证设备的正常使用。
第一方面,本公开实施例提供了一种微控制单元应用程序升级方法,该方法包括:
检测到升级命令,确定目标车辆当前运行的第一应用程序;
对除所述第一应用程序之外的其它应用程序进行升级;
在对所述其它应用程序升级完成后,更新所述其它应用程序对应的版本标记位;
其中,各所述应用程序分别对应有版本标记位,所述版本标记位用于确定下一次被运行的应用程序。
第二方面,本公开实施例还提供了一种微控制单元应用程序升级装置,该装置包括:
运行确定模块,用于检测到升级命令,确定目标车辆当前运行的第一应用程序;
升级模块,用于对除所述第一应用程序之外的其它应用程序进行升级;
版本更新模块,用于在对所述其它应用程序升级完成后,更新所述其它应用程序对应的版本标记位;
其中,各所述应用程序分别对应有版本标记位,所述版本标记位用于确定下一次被运行的应用程序。
第三方面,本公开实施例还提供了一种微控制单元应用程序升级***,包括上位机以及目标车辆,所述上位机包括版本查询模块、触发模块以及升级模块;其中,
所述版本查询模块,用于获取所述目标车辆的升级参考信息,其中,所述升级参考信息包括各所述应用程序的程序版本、各所述应用程序的硬件版本以及车辆信息中的至少一种;
所述触发模块,用于基于所述升级参考信息确定是否生成升级命令;
所述升级模块,用于向所述目标车辆传输升级数据;
所述目标车辆,用于响应于检测到升级命令,执行如上所述的微控制单元应用程序升级方法。
第四方面本公开实施例还提供了一种电子设备,所述电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的微控制单元应用程序升级方法。
第五方面,本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的微控制单元应用程序升级方法。
本公开实施例提供的一种微控制单元应用程序升级方法、装置、***、设备及介质,该方法在检测到升级命令时确定当前运行的第一应用程序,对除第一应用程序之外的其它应用程序进行升级,并在升级完成后更新该其它应用程序对应的版本标记位,以根据各应用程序的版本标记为确定下一次被运行的应用程序,使得该其它应用程序在下一次被运行,进而若再次检测到升级命令,可以对除该其它应用程序之外的应用程序进行升级,实现了车辆中的各应用程序之间的交替升级,降低了各应用程序之间的版本差距;在应用程序升级过程中出现设备断电、传输终端或升级失败等异常情况时,可以通过运行其它程序,返回至升级前版本运行,解决了现有技术无法恢复到升级前版本的问题,保证设备在异常情况下的正常使用,提高了用户体验。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
图1A为本公开实施例中的一种微控制单元应用程序升级方法的流程图;
图1B为本公开实施例中的一种源码存储单元的内存布局图;
图1C为本公开实施例中的一种硬件兼容性的检查流程图;
图2A为本公开实施例中的另一种微控制单元应用程序升级方法的流程图;
图2B为本公开实施例中的一种应用程序的升级过程的示意图;
图3A为本公开实施例中的另一种微控制单元应用程序升级方法的流程图;
图3B为本公开实施例中的一种数据存储单元的内存布局图;
图3C为本公开实施例中的一种模式切换位的设置流程图;
图3D为本公开实施例中的一种堆芯复位的判断流程图;
图3E为本公开实施例中的一种程序复位流程图;
图3F为本公开实施例中的一种上电复位的过程示意图;
图4为本公开实施例中的一种微控制单元应用程序升级装置的结构示意图;
图5A为本公开实施例中的一种微控制单元应用程序升级***的结构示意图;
图5B为本公开实施例中的一种微控制单元应用程序升级***中各模块的依赖关系示意图;
图6为本公开实施例中的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
现有的针对车辆微控制单元应用程序升级方法,通常采用烧写器进行固件少些,或者采用ISP方法进行升级。ISP升级方法虽然可以在不拆机的情况下通过外部上位机软件进行固件更新,但这种方法不具备固件恢复机制,在升级过程中若出现异常情况,设备无法回退或者只能回退到初始版本运行,无法回退到升级前的版本运行。
针对上述问题,本公开实施例提供了一种微控制单元应用程序升级方法、装置、***、设备及介质,在应用程序升级过程中出现设备断电、传输终端或升级失败等异常情况时,可以保证微控制单元应用程序能够恢复到升级前的版本,进而保证设备的正常使用。需要说明的是,本实施例提供的微控制单元应用程序升级方法,可以用于对车辆中各微控制单元对应的应用程序(即固件)进行升级,也可以用于对其它电子设备的微控制单元对应的应用程序进行升级,如机器人的微控制单元、医疗设备的微控制单元等。本实施例对该微控制单元应用程序升级方法的应用场景不进行限定,以车辆MCU为例,对MCU应用程序的升级过程进行说明。
图1A为本公开实施例中的一种微控制单元应用程序升级方法的流程图。该方法可以由微控制单元应用程序升级装置执行,该装置可以采用软件和/或硬件的方式实现,该装置可配置于电子设备中。如图1A所示,该方法具体可以包括如下步骤:
S110、检测到升级命令,确定目标车辆当前运行的第一应用程序。
在本实施例中,目标车辆中可以包括至少两个应用程序。具体的,各应用程序可以为目标车辆中的同一微控制单元对应的应用程序。示例性的,各应用程序可以是针对自动驾驶***微控制单元的程序,或者,针对悬挂***微控制单元的程序,等。
其中,各应用程序为同一微控制单元对应的应用程序的好处在于,通过对同一微控制单元对应的各个应用程序进行交替升级,可以避免在微控制单元的某个应用程序的升级过程中出现异常情况时,由于无法恢复至升级之前的应用程序所导致的微控制单元无法工作的情形,保证了车辆的正常使用,进而保证了车辆行驶安全。
其中,升级命令可以是上位机向车辆微控制单元传输的触发升级流程的命令。具体的,微控制单元在接收到上位机发送的升级命令时,可以检查目标车辆的当前车速是否为零,若否,则停止响应该升级命令,若是,则可以继续响应该升级命令,并确定当前运行的第一应用程序。
S120、对除第一应用程序之外的其它应用程序进行升级。
具体的,在确定出当前正在运行的第一应用程序后,可以对未运行的其它应用程序进行升级。需要说明的是,本实施例中未运行的其它应用程序的数量可以是一个,也可以是多个。具体的,若目标车辆中同一微控制单元对应两个应用程序,则其它应用程序的数量为1,若目标车辆同一微控制单元对应至少三个应用程序,则其它应用程序的数量为至少两个。
在本实施例中,如果其它应用程序的数量为多个,则可以在多个其它应用程序中选择任意一个进行升级,或者,对所有其它应用程序进行升级,或者,可以从各个应用程序中选择版本最低的其它应用程序,对版本最低的其它应用程序进行升级。
在一种具体的实施方式中,对其它应用程序进行升级,包括:获取其它应用程序对应的中断向量,基于中断向量在源码存储单元中确定与其它应用程序对应的目标位置;获取升级数据,并利用升级数据替换目标位置中存储的数据。
其中,源码存储单元可以用于存储微控制单元中的程序数据,例如,源码存储单元可以是code flash。源码存储单元可以存放各个应用程序对应的程序数据。示例性的,参见图1B,展示了一种源码存储单元的内存布局图,其中,以微控制单元对应应用程序1和应用程序2为例,应用程序1、应用程序2以及引导加载程序(bootloader)存储在该源码存储单元,源码存储单元可以为引导加载程序提供64K的空间,为应用程序1、应用程序2分别预留128K*4=512K的空间。
在需要对其它应用程序进行升级时,可以先定位出源码存储单元中存放该其它应用程序的程序数据的位置,进而对该位置内的数据进行更新。
具体的,可以预先维护一个中断向量表,其中,该中断向量表包括各应用程序对应的中断向量。根据中断向量表,可以查询待升级的其它应用程序对应的中断向量,进而将该中断向量所指向的地址确定为目标位置,通过上位机发送的升级数据替换目标位置中存储的数据,以实现对其它应用程序的升级。
在上述实施方式中,各个应用程序存储在源码存储单元即可,无需单独存储在不同存储单元中,进而在应用程序升级时,通过中断向量直接在源码存储单元中定位至其它应用程序对应的位置进行数据刷写,实现对微控制单元的程序的升级。与将各个应用程序对应的程序数据存储在不同存储单元中的方式相比,本实施例的方法可以减少占用内存。
考虑到在对应用程序升级时可能存在上位机下发的固件硬件类型与目标车辆的固件硬件类型不匹配的情况,在该情况下升级可能会导致升级失败。因此,为了避免由于固件硬件类型不匹配所导致的升级失败的情况,在对除所述第一应用程序之外的其它应用程序进行升级之前,还包括:获取目标车辆对应的当前固件硬件类型;确定与升级命令对应的待输入固件硬件类型,基于当前固件硬件类型和待输入固件硬件类型确定是否满足升级条件,若是,则执行对除第一应用程序之外的其它应用程序进行升级的操作。
其中,当前固件硬件类型可以是微控制单元对应的各个应用程序的固件类型,待输入固件硬件类型可以是上位机需要发送的升级数据对应的固件类型。具体的,如果当前固件硬件类型与待输入固件硬件类型一致,则可以执行对除第一应用程序之外的其它应用程序进行升级的操作;如果当前固件硬件类型与待输入固件硬件类型不一致,则可以反馈提示信息,以提示当前固件硬件类型与待输入固件硬件类型不匹配,即硬件不兼容,无法进行升级。
示例性的,参见图1C,展示了一种硬件兼容性的检查流程图。其中,在检测到升级命令时,可以执行升级脚本,进而升级脚本可以获取当前固件硬件类型。如果当前固件硬件类型为类型A,则进一步判断待输入固件硬件类型是否为类型A,若是,则进行升级,若否,则提示当前固件硬件类型与待输入固件硬件类型不匹配,并退出。如果当前固件硬件类型为类型B,则进一步判断待输入固件硬件类型是否为类型B,若是,则进行升级,若否,则提示当前固件硬件类型与待输入固件硬件类型不匹配,并退出。如果当前固件硬件类型为类型C,则进一步判断待输入固件硬件类型是否为类型C,若是,则进行升级,若否,则提示当前固件硬件类型与待输入固件硬件类型不匹配,并退出。如果没有获取到当前固件硬件类型或者获取到其它硬件类型,则可以提示获取硬件类型有误或没有获取到硬件类型,并退出。
在上述实施方式中,通过在对其它应用程序进行升级之前,判断当前固件硬件类型与上位机输入的升级数据的待输入固件硬件类型是否匹配,以实现硬件兼容性检查,避免了由于硬件不兼容所造成的升级失败的情形,提高了程序升级成功率。
S130、在对其它应用程序升级完成后,更新其它应用程序对应的版本标记位,其中,各应用程序分别对应有版本标记位,版本标记位用于确定下一次被运行的应用程序。
具体的,在完成对其它应用程序的升级后,可以对该其它应用程序对应的版本标记位进行更新。其中,每一个应用程序都对应有版本标记位,版本标记位可以表示应用程序对应的当前版本。
在本实施例中,在其它应用程序升级完成后,对其它应用程序对应的版本标记位进行更新的目的在于:更新其它应用程序对应的当前版本,进而在目标车辆下一次上电需要确定被运行的应用程序时,可以根据该其它应用程序对应的版本标记位,确定出该其它应用程序的版本最新,可以运行该其它应用程序。
具体的,对其它应用程序对应的版本标记位的更新,可以是直接将其它应用程序对应的版本标记位设置为预设值,如1、0等,也可以是在当前的版本标记位的基础上进行计算,得到新的版本标记位。
在一种具体的实施方式中,更新其它应用程序对应的版本标记位,包括:基于第一应用程序对应的版本标记位与第一数值的相加结果,更新其它应用程序对应的版本标记位;或者,基于其它应用程序对应的版本标记位与第二数值的相加结果,更新其它应用程序对应的版本标记位。
其中,第二数值可以大于第一数值。第一数值表示各个应用程序之间的版本差距,可以设置为1;第二数值表示每一个应用程序在相邻两次升级之间的版本差距,以一个微控制单元对应两个应用程序为例,第二数值可以设置为2。即,可以将第一应用程序对应的版本标记位与第一数值的相加结果,作为其它应用程序对应的版本标记位;将其它应用程序对应的版本标记位与第二数值的相加结果,作为其它应用程序对应的新的版本标记位。
通过上述方式,可以实现在对其它应用程序升级完成后,对其它应用程序对应的版本标记位的更改,与直接将版本标记位置为1或置为0的方式相比,该方式可以保证更新后的其它应用程序的版本标记位大于未更新的第一应用程序的版本标记位,进而在下一次上电时可以保证更新后的其它应用程序被运行,并且,通过在每次升级后对版本标记位进行累加,还可以使得版本标记位可以用来确定已升级的次数,以供后续进行微控制单元升级分析时使用。
在本实施例中,在检测到升级命令时,可以确定出第一应用程序以及其它应用程序,对其它应用程序进行升级,并在升级完成后更新其它应用程序对应的版本标记位,以使在下一次上电时运行该其它应用程序,并且,如果在下一次上电后接收到新的升级命令,此时可以将其它应用程序确定为新的第一应用程序,并对除新的第一应用程序之外的其它应用程序进行升级,以此实现程序之间的交替升级。
以微控制单元对应有应用程序1和应用程序2为例,第一次检测到升级命令时,如果正在运行的为应用程序1,则对应用程序2升级,并更新应用程序2的版本标记位,当目标车辆重新上电后,根据应用程序1和应用程序2的版本标记位可以确定出应用程序2为最新版本,运行应用程序2,若在应用程序2的运行过程中再次检测到升级命令,则此时对应用程序1升级,并更新应用程序1的版本标记位,以此类推,可以实现对应用程序1和应用程序2的交替升级。
需要说明的是,本实施例提供的微控制单元应用程序升级方法,与在应用程序升级之前,将主区域里存放的应用程序的程序数据拷贝到备份区的方式相比,本实施例提供的方法,无需在每一次升级前都进行程序数据的拷贝,极大地提高了升级效率,并且,本实施例提供的方法,在升级失败后,直接运行另一个应用程序即可,也无需重新将备份区里的程序数据拷贝至主区域里,进一步的提高了升级效率,并且,减少用户等待时间,提高用户体验。
本实施例提供的微控制单元应用程序升级方法,该方法在检测到升级命令时确定当前运行的第一应用程序,对除第一应用程序之外的其它应用程序进行升级,并在升级完成后更新该其它应用程序对应的版本标记位,以根据各应用程序的版本标记为确定下一次被运行的应用程序,使得该其它应用程序在下一次被运行,进而若再次检测到升级命令,可以对除该其它应用程序之外的应用程序进行升级,实现了车辆中的各应用程序之间的交替升级,降低了各应用程序之间的版本差距;在应用程序升级过程中出现设备断电、传输终端或升级失败等异常情况时,可以通过运行其它程序,返回至升级前版本运行,解决了现有技术无法恢复到升级前版本的问题,保证设备在异常情况下的正常使用,提高了用户体验。
图2A为本公开实施例中的另一种微控制单元应用程序升级方法的流程图,在上述各实施方式的基础上,对其它应用程序的升级过程进行了示例性说明。参见图2A,该方法可以包括如下步骤:
S210、检测到升级命令,确定目标车辆当前运行的第一应用程序。
S220、对除第一应用程序之外的其它应用程序对应的升级标记位进行更新,并生成程序复位命令,其中,各应用程序分别还对应有升级标记位,升级标记位用于在程序复位时确定被升级的应用程序。
在本实施例中,更新其它应用程序对应的升级标记位的目的在于:保证在根据程序复位命令进行程序复位之后,可以通过其它应用程序对应的升级标记位,确定是对其它应用程序进行升级。
示例性的,对其它应用程序对应的升级标记位进行更新,可以是直接将其它应用程序对应的升级标记位设置为预设值,或者,根据各个应用程序对应的升级标记位计算其它应用程序对应的新的升级标记位。
在一种具体的实施方式中,对除第一应用程序之外的其它应用程序对应的升级标记位进行更新,可以是:根据第一数值与第一应用程序对应的升级标记位的相加结果,更新其它应用程序对应的升级标记位;或者,根据第二数值与其它应用程序对应的升级标记位的相加结果,更新其它应用程序对应的升级标记位。
即,其它应用程序对应的更新后的升级标记位可以等于第一数值与第一应用程序对应的升级标记位的相加结果,或者,可以等于第二数值与其它应用程序对应的更新前的升级标记位的相加结果。
通过上述方式,可以实现在程序复位之前,对其它应用程序对应的升级标记位的更改,与直接将升级标记位置为1或置为0的方式相比,该方式可以保证其它应用程序的升级标记位大于第一应用程序的升级标记位,进而保证在程序复位后对其它应用程序进行升级,并且,通过在每次升级复位之前对升级标记位进行累加,还可以使得升级标记位可以用来确定已升级的次数,以供后续进行微控制单元升级分析时使用。
在对其他应用程序的版本标记位进行更新之后,可以生成程序复位命令,以通过程序复位命令触发微控制单元重新启动,即复位到源码存储单元中的起始地址,以从当前运行的第一应用程序跳转至重新运行引导加载程序。
S230、基于程序复位命令,对其它应用程序进行升级。
在本实施例中,在生成程序复位命令后,可以将指向源码存储单元中第一应用程序的指针跳转至指向引导加载程序,进而可以通过引导加载程序对其它应用程序进行升级。其中,引导加载程序可以具备对应用程序进行升级的功能,以及,引导应用程序运行的功能。
具体的,引导加载程序可以获取其它应用程序对应的中断向量,根据中断向量在源码存储单元中确定与其它应用程序对应的目标位置;并将升级数据写入至目标位置。
S240、在对其它应用程序升级完成后,更新其它应用程序对应的版本标记位。
在本实施例中,若其它应用程序升级完成,可以通过引导加载程序,直接运行其它应用程序;若其它应用程序升级失败,可以通过引导加载程序,直接运行除其它应用程序之外的应用程序。
可选的,本实施例提供的方法还可以包括:在检测到其它应用程序升级失败时,基于预设升级次数和/或预设等待时间,重新对其它应用程序进行升级。
其中,预设升级次数可以是预先设置的在响应一次升级命令过程中可以尝试对其它应用程序进行升级的次数;预设等待时间可以是预先设置的在响应一次升级命令过程中等待对其它应用程序重新升级的时长。
预设升级次数和预设等待时间可以根据实际业务需求进行设置,预设升级次数和预设等待时间越大,相应的,其它应用程序的重新升级的成功概率越大,用户等待时间越长;预设升级次数和预设等待时间越小,相应的,其它应用程序的重新升级的成功概率越小,用户等待时间越短。因此,可以结合用户等待时间和升级成功率的需求,对上述参数进行设置。
具体的,在检测到其它应用程序升级失败时,可以更新当前尝试次数,并根据当前尝试次数以及预设升级次数确定是否重新对其它应用程序进行升级;或者,在检测到其它应用程序升级失败时,可以在预设等待时间内可以继续对其它应用程序进行升级;或者,在预设等待时间内,可以根据当前尝试次数以及预设升级次数确定是否重新对其它应用程序进行升级。
在上述过程中,通过设置预设升级次数和/或预设等待时间,避免一直发起重新升级,让用户等待过久,同时,也可以提高其它应用程序的升级成功率。当然,如果基于预设升级次数和/或预设等待时间,重新对其它应用程序进行升级,且其它应用程序仍然升级失败时,还可以直接运行除其它应用程序之外的应用程序。
示例性的,参见图2B,图2B展示了一种应用程序的升级过程的示意图,以微控制单元对应两个应用程序为例,对升级过程进行了示例性说明。其中,在根据程序复位命令进行程序复位后,可以先对各个应用程序的程序文本文件(即Cookies)进行CRC(CyclicRedundancy Check,循环冗余校验码)校验,其中,程序文本文件存储有应用程序的各个标记位,CRC具体校验过程可参见后文。若两个应用程序的程序文本文件均校验通过,则可以进一步比对两个应用程序的升级标记位。若应用程序1的升级标记位_1等于应用程序2的升级标记位_2,则可以确定为异常情况,反馈编码错误信息;若应用程序1的升级标记位_1大于应用程序2的升级标记位_2,则可以升级应用程序1;若应用程序1的升级标记位_1小于应用程序2的升级标记位_2,则可以升级应用程序2。
进一步的,在应用程序1或应用程序2升级后,判断是否升级成功,若升级成功,则直接运行升级后的应用程序1或应用程序2,并将升级后的应用程序1或应用程序2的版本标记位加一,如果升级不成功,则执行运行应用程序2或应用程序1。
如果应用程序1的Cookies_1校验通过,应用程序2的Cookies_2校验未通过,则直接运行应用程序1;如果应用程序1的Cookies_1校验未通过,应用程序2的Cookies_2校验通过,则直接运行应用程序2;如果应用程序1的Cookies_1以及应用程序2的Cookies_2均校验未通过,则确定为异常情况,反馈编码错误信息(如反馈fail code)。
本实施例提供的微控制单元应用程序升级方法,可以对其它应用程序对应的升级标记位进行更新,并生成程序复位命令,进而基于程序复位命令执行程序复位,并根据各个应用程序的升级标记位确定需要对其它应用程序进行升级,升级该其它应用程序,实现了基于程序复位的应用程序升级,保证了程序复位后可以根据升级标记位确定出需要对其它应用程序进行升级,进而保证了程序升级的正确性。
图3A为本公开实施例中的另一种微控制单元应用程序升级方法的流程图,在上述各实施方式的基础上,补充了在程序复位之后判断是否为升级模式,若是,则对其它应用程序进行升级。参见图3A,该方法可以包括如下步骤:
S310、检测到升级命令,确定目标车辆当前运行的第一应用程序。
S320、对除第一应用程序之外的其它应用程序对应的升级标记位进行更新。
S330、访问数据存储单元中的预设存储区域,将预设存储区域中的模式切换位设置为升级模式对应的标识,并生成程序复位命令。
其中,数据存储单元可以用于存储各应用程序的相关数据,如存储模式切换位、各个应用程序的程序文本文件、程序配置信息等。可选的,数据存储单元和源码存储单元可以设置在同一芯片上。
示例性的,参见图3B,展示了一种数据存储单元的内存布局图,以微控制单元对应两个应用程序为例,其中,数据存储单元包括预设存储区域(HOTRESET)、应用程序1的程序文本文件(Cookies_1)区域、应用程序2的程序文本文件(Cookies_2)区域,以及程序配置信息(Config)区域。
具体的,预设存储区域可以是热启动功能区域,至少包括模式切换位,该模式切换位用于表示程序复位的模式,如升级模式、热启动模式等。预设存储区域还可以包括指针信息,即当前运行的第一应用程序的位置;或者,还可以包括引导加载程序的版本信息等。预设存储区域的空间可以为32Byte。
各个应用程序的程序文本文件可以包括应用程序的标记位,如版本标记位、升级标记位、存在标记位,还可以包括标记位对应的校验码(如通过CRC计算得到的校验码)。在上述更新其它应用程序的版本标记位或升级标记位的过程中,可以是访问数据存储单元中其它应用程序对应的程序文本文件,利用新的版本标记位或升级标记位替换原有的版本标记位或升级标记位。程序配置信息可以是应用程序的相关配置参数信息,程序配置信息所在区域的空间可以是128K。
在本实施例中,考虑到热启动和升级都可以进行程序复位,因此,为了区分热启动导致的程序复位以及升级导致的程序复位,可以在检测到升级命令后,将预设存储区域中的模式切换位设置为升级模式对应的标识。相应的,在接收到热启动命令后,可以将预设存储区域中的模式切换位设置为热启动模式对应的标识,并确定当前运行的应用程序对应的目标地址,其中,目标地址指向源码存储单元中的当前运行的应用程序。
示例性的,参见图3C,展示了一种模式切换位的设置流程图,当前运行的应用程序在收到升级命令时,将模式切换位设置为升级模式对应的标识,并生成程序复位命令;在收到热启动命令时,将模式切换位设置为热启动模式对应的标识,确定目标地址,并生成程序复位命令。
S340、基于程序复位命令,运行引导加载程序,通过引导加载程序,判断模式切换位是否为升级模式对应的标识,若是,则对其它应用程序进行升级。
具体的,在生成程序复位命令后,根据程序复位命令可以执行程序复位,程序复位到源码存储单元中的起始地址后,会运行引导加载程序。进一步的,引导加载程序判断模式切换位是否为升级模式对应的标识,如果是升级模式对应的标识,则根据各个应用程序的升级标记位确定需要待升级的应用程序,即其它应用程序,进而对其它应用程序进行升级,如果是热启动模式对应的标识,则执行热启动流程。
在一种具体的实施方式中,本实施例提供的方法还包括:若通过引导加载程序确定模式切换位为热启动模式对应的标识,则跳转至运行目标车辆中上一次运行的应用程序。
具体的,可以获取目标地址,进而及控制指向源码存储单元的当前指针跳转至目标地址,以运行目标地址指向的应用程序,即上一次运行的应用程序。通过上述方式,实现了程序复位的热启动,直接跳转至上一次运行的应用程序即可,无需从起始地址开始重新运行源码存储单元中的程序数据,减少了用户等待时间。
考虑到除了上述由热启动和升级引起的程序复位之外,车辆上电也可以造成程序复位。其中,热启动和升级引起的程序复位可以是堆芯复位(即corereset),因此,为了区分上电复位和堆芯复位,还可以在对模式切换位进行判断之前,判断是否为堆芯复位。
在一种具体的实施方式中,在通过引导加载程序,判断模式切换位是否为升级模式对应的标识之前,还包括:通过引导加载程序,判断当前的程序复位为上电复位或堆芯复位;若为堆芯复位,则执行判断模式切换位是否为升级模式对应的标识的操作。即,在运行引导加载程序后,若引导加载程序判断出是堆芯复位,则进一步根据模式切换位确定为升级模式对应的标识或热启动模式对应的标识;若引导加载程序判断出是上电复位,则无需判断模式切换位,直接根据各个应用程序对应的版本标记位,确定需要运行的应用程序即可。
参见图3D,展示了一种堆芯复位的判断流程图。以微控制单元对应应用程序1和应用程序2为例,其中,在确定出当前程序复位为堆芯复位后,引导加载程序可以进行引导,判断模式切换位是否为升级模式对应的标识,若是,则执行升级流程,若否,则执行热启动流程。具体的,可以根据目标地址判断其指向的为应用程序1或应用程序2,若为应用程序1,则跳转至应用程序1,若为应用程序2,则跳转至应用程序2。
示例性的,参见图3E,展示了一种程序复位流程图。首先,在程序复位后,运行引导加载程序,进一步的,引导加载程序判断是上电复位还是堆芯复位,若是上电复位,则根据各个应用程序的版本标记位确定待运行的应用程序,并进行程序运行;若是堆芯复位,则进一步判断是热启动还是升级,若为热启动,则跳转至上一次运行的应用程序,若为升级,则根据升级标记位确定需要升级的其它应用程序,进行程序升级,并在升级完成后运行该升级后的应用程序。
如果在运行应用程序的过程中收到热启动命令,则将模式切换位设置为热启动模式对应的标识,并生成程序复位命令,进行程序复位;若收到升级命令,则将模式切换位设置为升级模式对应的标识,并生成程序复位命令,进行程序复位;若收到版本查看命令,则确认版本信息。
通过判断当前的程序复位为上电复位或堆芯复位,以区分上电复位和堆芯复位,并在堆芯复位时执行判断模式切换位是否为升级模式对应的标识的操作,以区分升级模式和热启动模式,实现了程序复位时的各种复位情况的准确判断,避免了在复位情况下执行与复位情况不符的操作,确保程序复位后的操作无误。
S350、在对其它应用程序升级完成后,更新其它应用程序对应的版本标记位。
在上述实施方式中,版本标记位可以用于确定下一次被运行的应用程序。除了采用版本标记位确定下一次被运行的应用程序之外,还可以为各个应用程序设置对应的存在标记位。在下一次上电复位时,可以通过各个应用程序对应的存在标记位以及版本标记位中的至少一种,确定出需要运行的应用程序。
在一种具体的实施方式中,各应用程序还分别对应有存在标记位,存在标记位用于确定应用程序处于可运行状态或者不可运行状态;
在对其它应用程序升级完成后,还包括:对其它应用程序的存在标记位进行更新,以标记其它应用程序处于可运行状态;
在通过引导加载程序,判断当前的程序复位为上电复位或堆芯复位之后,还包括:若当前的程序复位为上电复位,则基于各应用程序对应的存在标记位和/或版本标记位,确定待运行应用程序。
其中,存在标记位可以是可运行状态对应的标识,或不可运行状态对应的标识。在对其它应用程序进行升级之前,即在更新其它应用程序对应的升级标记位的同时,还可以更新其它应用程序对应的存在标记位,以标记其它应用程序处于不可运行状态,进而使得程序复位后对其它应用程序进行升级,不直接运行其它应用程序。相应的,在对其它应用程序进行升级之后,可以更新其它应用程序的存在标记位,以标记其它应用程序处于可运行状态。
进一步的,当进行上电复位后,可以根据各应用程序对应的存在标记位和/或版本标记位,确定出待运行应用程序。示例性的,可以根据存在标记位,确定出处于可运行状态的应用程序,进而从可运行状态的应用程序中选择一个作为待运行应用程序;或者,还可以根据版本标记位,将最新版本的应用程序作为待运行应用程序等。
在引导加载程序确定出待运行应用程序后,可以直接运行该待运行应用程序。通过上述实施方式,可以实现上电复位情况下对待运行应用程序的准确判断,进而可以实现优先启动新版本的应用程序,或者实现优先启动不需要升级、处于可运行状态的应用程序,提高了用户体验。
在一种具体的实施方式中,基于各应用程序对应的存在标记位和/或版本标记位,确定待运行应用程序,可以是:针对每一个应用程序,获取应用程序对应的预设校验码,并基于应用程序对应的升级标记位、存在标记位以及版本标记位,确定当前校验码;基于当前校验码以及预设校验码确定标记位验证结果,将标记位验证结果为验证通过的应用程序确定为候选启动程序;基于各候选启动程序对应的存在标记位和/或版本标记位,确定待运行应用程序。
其中,预设校验码可以是应用程序对应的程序文本文件中存储的校验码。当前校验码可以是通过升级标记位、存在标记位以及版本标记位,实时计算出的校验码。示例性的,当前校验码可以通过CRC计算得到。
具体的,可以判断当前校验码与预设校验码是否一致,若是,则可以确定标记位验证结果为验证通过;若否,则可以确定标记位验证结果为验证未通过。
进一步的,针对标记位验证结果为验证通过的应用程序,可以将其确定为候选启动程序。在确定出各个候选启动程序后,可以根据各个候选启动程序对应的存在标记位和/或版本标记位,筛选出待运行应用程序。
在本实施例中,通过预设校验码以及当前校验码对各个应用程序的标记位进行校验,实现了对应用程序的程序文本文件(即Cookies)的校验,进而针对校验通过的应用程序,根据存在标记位和/或版本标记位从中筛选出待运行应用程序,避免了运行程序文本文件异常的应用程序,保证了程序运行的正确性。
在一种具体的实施方式中,基于各候选启动程序对应的存在标记位和/或版本标记位,确定待运行应用程序,可以是:基于各候选启动程序对应的存在标记位,将处于可运行状态的候选启动程序确定为待运行应用程序;若待运行应用程序的数量为多个,则基于各待运行应用程序对应的版本标记位,确定最终的待运行应用程序。
即,在根据标记位校验结果确定出各候选启动程序后,进一步的,判断各候选启动程序的存在标记位,如果存在标记位为可运行状态对应的标识,则可以将其确定为待运行应用程序;进一步的,如果通过存在标记位确定出的待运行应用程序的数量为多个,则可以根据版本标记位,将多个待运行应用程序中最新版本的程序作为最终的待运行应用程序。
需要说明的是,优先根据存在标记位确定待运行应用程序的目的在于:在收到升级命令时,需要对其它应用程序的升级标记位以及存在标记位进行更新,以在程序复位后对其它应用程序进行升级,如果其它应用程序未成功升级,那么其它应用程序的存在标记位仍然为不可运行状态对应的标识,那么在上电复位后可以不运行该其它应用程序,如果再次收到升级命令,此时仍然可以将未运行的其它应用程序作为需要升级的应用程序,以再次对其进行升级。
通过上述方式,可以运行程序文本文件正常以及处于可运行状态的应用程序运行,或者,运行程序文本文件正常、处于可运行状态以及版本最新的应用程序运行,实现了上电复位情况下运行的程序的准确判断,避免了运行标记位错误的应用程序,以及避免了运行需要升级的应用程序。
示例性的,参见图3F,展示了一种上电复位的过程示意图。其中,以微控制单元对应应用程序1(APP1)和应用程序2(APP2)为例,在判断出为上电复位后,引导加载程序可以确定需要引导运行的应用程序,即待运行应用程序。
具体的,在图3F中,如果APP1的Cookies_1正常,APP2的Cookies_2异常,则将APP1作为候选启动程序,进而判断APP1的存在标记位(C1.ex)是否为1,如果是,则运行APP1,如果不是,则返回编码错误信息;如果APP2的Cookies_2正常,APP1的Cookies_1异常,则将APP2作为候选启动程序,进而判断APP2的存在标记位(C2.ex)是否为1,如果是,则运行APP2,如果不是,则返回编码错误信息。
如果Cookies_1、Cookies_2均正常,则在C1.ex为1时运行APP1,在C2.ex为1时运行APP2;在C1.ex、C2.ex均为1时,如果APP1的版本标记位(C1.new)大于(C2.new),则运行APP1,如果C2.new大于C1.new,则运行APP2,如果C2.new等于C1.new,则运行APP1。在C1.ex和C2.ex均不为1时返回编码错误信息。
如果Cookies_1、Cookies_2均异常,则返回编码错误信息。
进一步的,在APP1/APP2的运行过程中,如果收到升级命令,则可以将APP2/APP1的升级标记位置为APP1/APP2的升级标记位+1,将APP2/APP1的存在标记位置为1,并生成程序复位命令,以进行堆芯复位,跳转至引导加载程序等待升级。
需要说明的是,考虑到在更新升级标记位、存在标记位的过程中,若出现断电情况,可能会导致在数据存储单元中的写入操作失败,即升级标记位和/或存在标记位写入失败,此时,若重新上电复位,则仍然可以基于各应用程序的预设校验码、存在标记位以及版本标记位确定需要运行的应用程序。参见表1,表1以微控制单元对应应用程序1(APP1)和应用程序2(APP2)为例,展示了在写入APP2的升级标记位、存在标记位的过程中出现断电,各种写入情况下分别对应的上电后运行结果。
表1升级前的不同写入情况对应的运行结果
具体的,在重新上电复位后,如果APP2的CRC校验通过,那么可以将APP2确定为候选启动程序,进一步判断APP2的存在标记位,如果APP2的存在标记位写入成功,即为0,则可以运行APP1,如果APP2的存在标记位写入失败,即为1,则可以在APP1和APP2中选择一个运行,由于预先设置的APP1、APP2都可运行时优先运行APP1,因此,此时运行APP1。如果APP2的CRC校验不通过,那么可以直接运行APP1。
当然,考虑到除了上述在更新升级标记位、存在标记位的过程中,可以出现断电情况之外,在更新版本标记位、存在标记位的过程中,也可以出现断电情况。即在其它应用程序更新完成时,在数据存储单元的程序文本文件中写入其它应用程序的版本标记位、存在标记位的操作可能存在失败情形。
此时,若重新上电复位,则仍然可以基于各应用程序的预设校验码、存在标记位以及版本标记位确定需要运行的应用程序。参见表2,表2以微控制单元对应应用程序1(APP1)和应用程序2(APP2)为例,展示了在写入APP2的版本标记位、存在标记位的过程中出现断电,各种写入情况下分别对应的上电后运行结果。
表2升级后的不同写入情况对应的运行结果
具体的,在重新上电复位后,如果APP2的CRC校验通过,且APP2的存在标记位为1,则可以进一步判断APP2的版本标记位是否大于APP1的版本标记位,如果APP2的版本标记位写入成功,则APP2的版本标记位大于APP1,可以运行APP2,如果APP2的版本标记位写入失败,则APP2的版本标记位小于APP1,可以运行APP1。
如果APP2的CRC校验通过,且APP2的存在标记位为0,则可以直接运行APP1;如果APP2的CRC校验未通过,则可以直接运行APP1。
本实施例提供的微控制单元应用程序升级方法,在接收到升级命令时,对其它应用程序对应的升级标志位进行更新,并访问数据存储单元中的预设存储区域,将模式切换位设置为升级模式对应的标识,进而生成程序复位命令,通过程序复位命令进行程序复位,运行引导加载程序,通过引导加载程序,判断模式切换位是否为升级模式对应的标识,如果是,则对其它应用程序进行升级,实现了程序复位后升级模式的判断,避免了在热启动模式下对其它应用程序进行升级,提高了用户体验。
图4为本公开实施例中的一种微控制单元应用程序升级装置的结构示意图。如图4所示:该装置包括:运行确定模块410、升级模块420以及版本更新模块430。
运行确定模块410,用于检测到升级命令,确定目标车辆当前运行的第一应用程序;
升级模块420,用于对除所述第一应用程序之外的其它应用程序进行升级;
版本更新模块430,用于在对所述其它应用程序升级完成后,更新所述其它应用程序对应的版本标记位;
其中,各所述应用程序分别对应有版本标记位,所述版本标记位用于确定下一次被运行的应用程序。
本实施例提供的微控制单元应用程序升级装置,可以在检测到升级命令时确定当前运行的第一应用程序,对除第一应用程序之外的其它应用程序进行升级,并在升级完成后更新该其它应用程序对应的版本标记位,以根据各应用程序的版本标记为确定下一次被运行的应用程序,使得该其它应用程序在下一次被运行,进而若再次检测到升级命令,可以对除该其它应用程序之外的应用程序进行升级,实现了车辆中的各应用程序之间的交替升级,降低了各应用程序之间的版本差距;在应用程序升级过程中出现设备断电、传输终端或升级失败等异常情况时,可以通过运行其它程序,返回至升级前版本运行,解决了现有技术无法恢复到升级前版本的问题,保证设备在异常情况下的正常使用,提高了用户体验。
在上述实施方式的基础上,可选的,升级模块420包括标记位更新单元以及复位升级单元,其中;
标记位更新单元,用于对除所述第一应用程序之外的其它应用程序对应的升级标记位进行更新,并生成程序复位命令;
复位升级单元,用于基于所述程序复位命令,对所述其它应用程序进行升级;
其中,各所述应用程序分别还对应有升级标记位,所述升级标记位用于在程序复位时确定被升级的应用程序。
在上述实施方式的基础上,可选的,标记位更新单元,还用于根据第一数值与所述第一应用程序对应的升级标记位的相加结果,更新所述其它应用程序对应的升级标记位;或者,根据第二数值与所述其它应用程序对应的升级标记位的相加结果,更新所述其它应用程序对应的升级标记位。
在上述实施方式的基础上,可选的,标记位更新单元,还用于访问数据存储单元中的预设存储区域,将所述预设存储区域中的模式切换位设置为升级模式对应的标识;相应的,复位升级单元,还用于基于所述程序复位命令,运行引导加载程序;通过所述引导加载程序,判断所述模式切换位是否为所述升级模式对应的标识,若是,则对所述其它应用程序进行升级。
在上述实施方式的基础上,可选的,复位升级单元,还用于通过所述引导加载程序,判断当前的程序复位为上电复位或堆芯复位;若为堆芯复位,则执行判断所述模式切换位是否为所述升级模式对应的标识的操作。
在上述实施方式的基础上,可选的,复位升级单元,还用于若通过所述引导加载程序确定所述模式切换位为热启动模式对应的标识,则跳转至运行所述目标车辆中上一次运行的应用程序。
在上述实施方式的基础上,可选的,各所述应用程序还分别对应有存在标记位,所述存在标记位用于确定应用程序处于可运行状态或者不可运行状态;版本更新模块430,还用于对所述其它应用程序的存在标记位进行更新,以标记所述其它应用程序处于可运行状态;所述装置还包括上电复位模块,上电复位模块,用于在所述通过所述引导加载程序,判断当前的程序复位为上电复位或堆芯复位之后,若当前的程序复位为上电复位,则基于各所述应用程序对应的存在标记位和/或版本标记位,确定待运行应用程序。
在上述实施方式的基础上,可选的,上电复位模块,还用于针对每一个所述应用程序,获取所述应用程序对应的预设校验码,并基于所述应用程序对应的升级标记位、存在标记位以及版本标记位,确定当前校验码;基于所述当前校验码以及所述预设校验码确定标记位验证结果,将标记位验证结果为验证通过的所述应用程序确定为候选启动程序;基于各所述候选启动程序对应的存在标记位和/或版本标记位,确定待运行应用程序。
在上述实施方式的基础上,可选的,上电复位模块,还用于基于各所述候选启动程序对应的存在标记位,将处于可运行状态的候选启动程序确定为待运行应用程序;若所述待运行应用程序的数量为多个,则基于各所述待运行应用程序对应的版本标记位,确定最终的待运行应用程序。
在上述实施方式的基础上,可选的,升级模块420,还用于在检测到所述其它应用程序升级失败时,基于预设升级次数和/或预设等待时间,重新对所述其它应用程序进行升级。
在上述实施方式的基础上,可选的,升级模块420,还用于获取所述其它应用程序对应的中断向量,基于所述中断向量在源码存储单元中确定与所述其它应用程序对应的目标位置;获取升级数据,并利用所述升级数据替换所述目标位置中存储的数据。
在上述实施方式的基础上,可选的,升级模块420,还用于获取目标车辆对应的当前固件硬件类型;确定与所述升级命令对应的待输入固件硬件类型,基于所述当前固件硬件类型和所述待输入固件硬件类型确定是否满足升级条件,若是,则执行对除所述第一应用程序之外的其它应用程序进行升级的操作。
在上述实施方式的基础上,可选的,版本更新模块430,还用于基于所述第一应用程序对应的版本标记位与第一数值的相加结果,更新所述其它应用程序对应的版本标记位;或者,基于所述其它应用程序对应的版本标记位与第二数值的相加结果,更新所述其它应用程序对应的版本标记位。
在上述实施方式的基础上,可选的,各所述应用程序为所述目标车辆中的同一微控制单元对应的应用程序。
本公开实施例提供的微控制单元应用程序升级装置,可执行本公开方法实施例所提供的微控制单元应用程序升级方法中的步骤,具备执行步骤和有益效果此处不再赘述。
图5A为本公开实施例中的一种微控制单元应用程序升级***的结构示意图。如图5A所示:该***包括上位机51以及目标车辆52,上位机包括版本查询模块510、触发模块511以及升级模块512。其中;
所述版本查询模块510,用于获取所述目标车辆52的升级参考信息,其中,所述升级参考信息包括各所述应用程序的程序版本、各所述应用程序的硬件版本以及车辆信息中的至少一种;
所述触发模块511,用于基于所述升级参考信息确定是否生成升级命令;
所述升级模块512,用于向所述目标车辆传输升级数据;
所述目标车辆52,用于响应于检测到升级命令,执行本公开任一实施例提供的微控制单元应用程序升级方法。
其中,版本查询模块510依赖于各应用程序提供的版本查询功能,可以用于查询各应用程序软件版本、引导加载程序的软件版本、当前硬件版本以及当前车型信息等。触发模块511依赖于版本查询模块510,可以用于确定是否生成升级命令。升级模块512依赖于触发模块511,可以向引导加载程序传输升级数据。版本查询模块510还可以执行硬件固件兼容性检查。
在本实施例中,目标车辆52可以包括各应用程序以及引导加载程序。如图5B所示,展示了一种微控制单元应用程序升级***中各模块的依赖关系示意图。具体的,版本查询模块可以向应用程序发送版本查询命令,进而获取应用程序反馈的升级参考信息。进一步的,触发模块可以根据版本查询模块获取到的升级参考信息,确定是否触发应用程序跳转至引导加载程序,如果触发应用程序跳转至引导加载程序,则升级模块可以进一步的向引导加载程序传输升级数据。引导加载程序可以在运行后,判断是否为堆芯复位,进而判断是否为升级模式,如果是升级模式,则根据各应用程序的升级标记位确定需要升级的应用程序,将升级数据写入该应用程序对应的存储空间。
本公开实施例提供的微控制单元应用程序升级***,实现了车辆中的各应用程序之间的交替升级,降低了各应用程序之间的版本差距;在应用程序升级过程中出现设备断电、传输终端或升级失败等异常情况时,可以通过运行其它程序,返回至升级前版本运行,解决了现有技术无法恢复到升级前版本的问题,保证设备在异常情况下的正常使用,提高了用户体验。
图6为本公开实施例中的一种电子设备的结构示意图。下面具体参考图6,其示出了适于用来实现本公开实施例中的电子设备600的结构示意图。图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理以实现如本公开所述的实施例的方法。在RAM 603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、ROM602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码,从而实现如上所述的定位方法。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:
检测到升级命令,确定目标车辆当前运行的第一应用程序;
对除所述第一应用程序之外的其它应用程序进行升级;
在对所述其它应用程序升级完成后,更新所述其它应用程序对应的版本标记位;
其中,各所述应用程序分别对应有版本标记位,所述版本标记位用于确定下一次被运行的应用程序。。
可选的,当上述一个或者多个程序被该电子设备执行时,该电子设备还可以执行上述实施例所述的其他步骤。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
方案1、一种微控制单元应用程序升级方法,所述方法包括:
检测到升级命令,确定目标车辆当前运行的第一应用程序;
对除所述第一应用程序之外的其它应用程序进行升级;
在对所述其它应用程序升级完成后,更新所述其它应用程序对应的版本标记位;
其中,各所述应用程序分别对应有版本标记位,所述版本标记位用于确定下一次被运行的应用程序。
方案2、根据方案1所述的方法,所述对除所述第一应用程序之外的其它应用程序进行升级,包括:
对除所述第一应用程序之外的其它应用程序对应的升级标记位进行更新,并生成程序复位命令;
基于所述程序复位命令,对所述其它应用程序进行升级;
其中,各所述应用程序分别还对应有升级标记位,所述升级标记位用于在程序复位时确定被升级的应用程序。
方案3、根据方案2所述的方法,在所述对除所述第一应用程序之外的其它应用程序对应的升级标记位进行更新之后,所述方法还包括:
访问数据存储单元中的预设存储区域,将所述预设存储区域中的模式切换位设置为升级模式对应的标识;
相应的,所述基于所述程序复位命令,对所述其它应用程序进行升级,包括:
基于所述程序复位命令,运行引导加载程序;
通过所述引导加载程序,判断所述模式切换位是否为所述升级模式对应的标识,若是,则对所述其它应用程序进行升级。
方案4、根据方案3所述的方法,在所述通过所述引导加载程序,判断所述模式切换位是否为所述升级模式对应的标识之前,所述方法还包括:
通过所述引导加载程序,判断当前的程序复位为上电复位或堆芯复位;
若为堆芯复位,则执行判断所述模式切换位是否为所述升级模式对应的标识的操作。
方案5、根据方案4所述的方法,所述方法还包括:
若通过所述引导加载程序确定所述模式切换位为热启动模式对应的标识,则跳转至运行所述目标车辆中上一次运行的应用程序。
方案6、根据方案4所述的方法,各所述应用程序还分别对应有存在标记位,所述存在标记位用于确定应用程序处于可运行状态或者不可运行状态;
在对所述其它应用程序升级完成后,还包括:
对所述其它应用程序的存在标记位进行更新,以标记所述其它应用程序处于可运行状态;
在所述通过所述引导加载程序,判断当前的程序复位为上电复位或堆芯复位之后,还包括:
若当前的程序复位为上电复位,则基于各所述应用程序对应的存在标记位和/或版本标记位,确定待运行应用程序。
方案7、根据方案6任一项所述的方法,所述基于各所述应用程序对应的存在标记位和/或版本标记位,确定待运行应用程序,包括:
针对每一个所述应用程序,获取所述应用程序对应的预设校验码,并基于所述应用程序对应的升级标记位、存在标记位以及版本标记位,确定当前校验码;
基于所述当前校验码以及所述预设校验码确定标记位验证结果,将标记位验证结果为验证通过的所述应用程序确定为候选启动程序;
基于各所述候选启动程序对应的存在标记位和/或版本标记位,确定待运行应用程序。
方案8、根据方案7所述的方法,所述基于各所述候选启动程序对应的存在标记位和/或版本标记位,确定待运行应用程序,包括:
基于各所述候选启动程序对应的存在标记位,将处于可运行状态的候选启动程序确定为待运行应用程序;
若所述待运行应用程序的数量为多个,则基于各所述待运行应用程序对应的版本标记位,确定最终的待运行应用程序。
方案9、根据方案2所述的方法,所述方法还包括:
在检测到所述其它应用程序升级失败时,基于预设升级次数和/或预设等待时间,重新对所述其它应用程序进行升级。
方案10、根据方案2所述的方法,所述对除所述第一应用程序之外的其它应用程序对应的升级标记位进行更新,包括:
根据第一数值与所述第一应用程序对应的升级标记位的相加结果,更新所述其它应用程序对应的升级标记位;或者,
根据第二数值与所述其它应用程序对应的升级标记位的相加结果,更新所述其它应用程序对应的升级标记位。
方案11、根据方案1所述的方法,所述对所述其它应用程序进行升级,包括:
获取所述其它应用程序对应的中断向量,基于所述中断向量在源码存储单元中确定与所述其它应用程序对应的目标位置;
获取升级数据,并利用所述升级数据替换所述目标位置中存储的数据。
方案12、根据方案1所述的方法,在所述对除所述第一应用程序之外的其它应用程序进行升级之前,所述方法还包括:
获取目标车辆对应的当前固件硬件类型;
确定与所述升级命令对应的待输入固件硬件类型,基于所述当前固件硬件类型和所述待输入固件硬件类型确定是否满足升级条件,若是,则执行对除所述第一应用程序之外的其它应用程序进行升级的操作。
方案13、根据方案1所述的方法,所述更新所述其它应用程序对应的版本标记位,包括:
基于所述第一应用程序对应的版本标记位与第一数值的相加结果,更新所述其它应用程序对应的版本标记位;或者,
基于所述其它应用程序对应的版本标记位与第二数值的相加结果,更新所述其它应用程序对应的版本标记位。
方案14、根据方案1-13中任一项所述的方法,各所述应用程序为所述目标车辆中的同一微控制单元对应的应用程序。
方案15、一种微控制单元应用程序升级装置,包括:
运行确定模块,用于检测到升级命令,确定目标车辆当前运行的第一应用程序;
升级模块,用于对除所述第一应用程序之外的其它应用程序进行升级;
版本更新模块,用于在对所述其它应用程序升级完成后,更新所述其它应用程序对应的版本标记位;
其中,各所述应用程序分别对应有版本标记位,所述版本标记位用于确定下一次被运行的应用程序。
方案16、一种微控制单元应用程序升级***,包括上位机以及目标车辆,所述上位机包括版本查询模块、触发模块以及升级模块;其中,
所述版本查询模块,用于获取所述目标车辆的升级参考信息,其中,所述升级参考信息包括各所述应用程序的程序版本、各所述应用程序的硬件版本以及车辆信息中的至少一种;
所述触发模块,用于基于所述升级参考信息确定是否生成升级命令;
所述升级模块,用于向所述目标车辆传输升级数据;
所述目标车辆,用于响应于检测到升级命令,执行方案1-14中任一项所述的方法。
方案17、一种电子设备,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如方案1-14中任一项所述的方法。
方案18、一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如方案1-14中任一项所述的方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (10)
1.一种微控制单元应用程序升级方法,其特征在于,所述方法包括:
检测到升级命令,确定目标车辆当前运行的第一应用程序;
对除所述第一应用程序之外的其它应用程序进行升级;
在对所述其它应用程序升级完成后,更新所述其它应用程序对应的版本标记位;
其中,各所述应用程序分别对应有版本标记位,所述版本标记位用于确定下一次被运行的应用程序。
2.根据权利要求1所述的方法,其特征在于,所述对除所述第一应用程序之外的其它应用程序进行升级,包括:
对除所述第一应用程序之外的其它应用程序对应的升级标记位进行更新,并生成程序复位命令;
基于所述程序复位命令,对所述其它应用程序进行升级;
其中,各所述应用程序分别还对应有升级标记位,所述升级标记位用于在程序复位时确定被升级的应用程序。
3.根据权利要求2所述的方法,其特征在于,在所述对除所述第一应用程序之外的其它应用程序对应的升级标记位进行更新之后,所述方法还包括:
访问数据存储单元中的预设存储区域,将所述预设存储区域中的模式切换位设置为升级模式对应的标识;
相应的,所述基于所述程序复位命令,对所述其它应用程序进行升级,包括:
基于所述程序复位命令,运行引导加载程序;
通过所述引导加载程序,判断所述模式切换位是否为所述升级模式对应的标识,若是,则对所述其它应用程序进行升级。
4.根据权利要求3所述的方法,其特征在于,在所述通过所述引导加载程序,判断所述模式切换位是否为所述升级模式对应的标识之前,所述方法还包括:
通过所述引导加载程序,判断当前的程序复位为上电复位或堆芯复位;
若为堆芯复位,则执行判断所述模式切换位是否为所述升级模式对应的标识的操作。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若通过所述引导加载程序确定所述模式切换位为热启动模式对应的标识,则跳转至运行所述目标车辆中上一次运行的应用程序。
6.根据权利要求4所述的方法,其特征在于,各所述应用程序还分别对应有存在标记位,所述存在标记位用于确定应用程序处于可运行状态或者不可运行状态;
在对所述其它应用程序升级完成后,还包括:
对所述其它应用程序的存在标记位进行更新,以标记所述其它应用程序处于可运行状态;
在所述通过所述引导加载程序,判断当前的程序复位为上电复位或堆芯复位之后,还包括:
若当前的程序复位为上电复位,则基于各所述应用程序对应的存在标记位和/或版本标记位,确定待运行应用程序。
7.一种微控制单元应用程序升级装置,其特征在于,包括:
运行确定模块,用于检测到升级命令,确定目标车辆当前运行的第一应用程序;
升级模块,用于对除所述第一应用程序之外的其它应用程序进行升级;
版本更新模块,用于在对所述其它应用程序升级完成后,更新所述其它应用程序对应的版本标记位;
其中,各所述应用程序分别对应有版本标记位,所述版本标记位用于确定下一次被运行的应用程序。
8.一种微控制单元应用程序升级***,其特征在于,包括上位机以及目标车辆,所述上位机包括版本查询模块、触发模块以及升级模块;其中,
所述版本查询模块,用于获取所述目标车辆的升级参考信息,其中,所述升级参考信息包括各所述应用程序的程序版本、各所述应用程序的硬件版本以及车辆信息中的至少一种;
所述触发模块,用于基于所述升级参考信息确定是否生成升级命令;
所述升级模块,用于向所述目标车辆传输升级数据;
所述目标车辆,用于响应于检测到升级命令,执行权利要求1-6中任一项所述的方法。
9.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211250736.5A CN115421761A (zh) | 2022-10-13 | 2022-10-13 | 微控制单元应用程序升级方法、装置、***、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211250736.5A CN115421761A (zh) | 2022-10-13 | 2022-10-13 | 微控制单元应用程序升级方法、装置、***、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115421761A true CN115421761A (zh) | 2022-12-02 |
Family
ID=84205460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211250736.5A Pending CN115421761A (zh) | 2022-10-13 | 2022-10-13 | 微控制单元应用程序升级方法、装置、***、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115421761A (zh) |
-
2022
- 2022-10-13 CN CN202211250736.5A patent/CN115421761A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108196878B (zh) | 应用程序安装包的生成方法、装置、电子设备及存储介质 | |
CN109933348B (zh) | 一种电子控制单元中Bootloader的更新方法和装置 | |
CN109189445B (zh) | 一种物联网设备程序升级的方法 | |
CN109240730B (zh) | 一种单片机在线升级方法和*** | |
US10216514B2 (en) | Identification of a component for upgrade | |
US9027014B2 (en) | Updating firmware compatibility data | |
CN109358887B (zh) | 一种单片机程序的在线升级方法、装置及*** | |
CN111796848A (zh) | Bootloader软件更新方法、装置、嵌入式控制器以及存储介质 | |
CN101815988A (zh) | 固件映像更新和管理 | |
CN111813428A (zh) | 终端固件的升级方法、装置、电子设备及存储介质 | |
CN110187909B (zh) | 一种基于安卓***的单片机固件升级方法 | |
CN110633091A (zh) | 一种电子模块及其软件无线升级方法 | |
CN112015447B (zh) | 电子设备的***更新方法及装置、电子设备及存储介质 | |
CN113760332A (zh) | 软件升级方法和电子设备 | |
CN112650518A (zh) | Dsp程序在线升级方法 | |
CN110597545A (zh) | 一种基于ota组件的热补丁智能升级方法及*** | |
CN113220319A (zh) | 一种数据更新方法、装置及车辆 | |
CN116755737A (zh) | 汽车软件ota升级方法、装置、设备、存储介质及程序 | |
CN115421761A (zh) | 微控制单元应用程序升级方法、装置、***、设备及介质 | |
CN100359485C (zh) | 嵌入式***的测试装置及测试方法 | |
CN114546455A (zh) | 一种双分区的mcu软件升级方法及装置 | |
CN114706608A (zh) | 升级固件的方法和电子设备 | |
CN113157329A (zh) | 启动应用的方法、***、服务器和存储介质 | |
CN114064086B (zh) | 多级处理器***及其升级方法 | |
CN117687663B (zh) | 基于ota的分区动态调整方法、装置、设备及存储介质 |
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 |