CN114579161A - 应用程序更新方法及ecu - Google Patents
应用程序更新方法及ecu Download PDFInfo
- Publication number
- CN114579161A CN114579161A CN202210334681.XA CN202210334681A CN114579161A CN 114579161 A CN114579161 A CN 114579161A CN 202210334681 A CN202210334681 A CN 202210334681A CN 114579161 A CN114579161 A CN 114579161A
- Authority
- CN
- China
- Prior art keywords
- reset
- mcu
- backup area
- identifier
- current
- 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 59
- 238000005192 partition Methods 0.000 claims abstract description 117
- 230000008569 process Effects 0.000 claims abstract description 14
- 230000002159 abnormal effect Effects 0.000 claims description 22
- 238000012795 verification Methods 0.000 claims description 4
- 230000009471 action Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000000750 progressive effect Effects 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
-
- 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/1441—Resetting or repowering
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开一种应用程序更新方法及ECU。ECU包括通过总线连接的MPU和MCU,MPU向MCU发送与当前的备份区匹配的应用数据,MCU利用接收到的应用数据对备份区进行更新,将更新状态标识设置为第一标识,在完成更新后,MCU将当前的备份区设置为工作区,将另一分区设置为备份区,进行***复位操作;每次复位启动后,若复位原因为上电复位或***复位,更新状态标识为第一标识,且本次复位启动前的备份区完成更新,那么MCU启动当前的工作区,向MPU发送正常启动升级成功消息。本申请公开的方案,对应用程序升级的过程不需要占用ECU外部的CAN总线,也不需要静默车辆的CAN总线上的其他节点,不会影响车辆的其他功能。
Description
技术领域
本申请属于汽车通信技术领域,尤其涉及一种应用程序更新方法及ECU。
背景技术
随着技术的不断进步,各大OEM(Original Equipment Manufacturer,整车厂)在电动化、网联化、智能化、共享化等方面对汽车进行改进。其中,“软件定义汽车”是当前汽车的发展趋势,汽车软件的复杂度也随之大增,与之相应的是,ECU(Electronic ControlUnit,电子控制单元)中应用程序的更新也就必不可少。
目前,更新ECU中应用程序的方案为:将诊断仪或其他设备与车辆的CAN(Controller Area Network,控制器局域网络)总线连接,通过CAN总线向ECU传输待更新应用程序的应用数据,从而对ECU中的应用程序进行更新。
但是,该方案存在缺陷:需要占用车辆的CAN总线向ECU传输应用数据,在该过程中,需要静默车辆的CAN总线上的其他节点,影响车辆除应用程序升级之外的其他功能。
发明内容
有鉴于此,本申请的目的在于提供一种应用程序更新方法及ECU,能够在不影响车辆的其他功能的前提下,对ECU中的应用程序进行更新。
为实现上述目的,本申请提供如下技术方案:
本申请提供一种应用程序更新方法,ECU包括通过总线连接的MPU和MCU,所述MCU的存储空间至少划分为第一分区和第二分区,在同一时刻,所述第一分区和第二分区中的一个分区被设置为工作区、另一个分区被设置为备份区,所述方法包括:
所述MPU从外部设备获取目标应用程序的应用数据;
所述MPU确定所述MCU当前的备份区,向所述MCU发送所述目标应用程序的第一应用数据,其中,所述第一应用数据为与当前的备份区匹配的应用数据;
所述MCU执行当前的工作区中的引导加载程序,利用所述第一应用数据对当前的备份区中的所述目标应用程序进行更新,并将更新状态标识设置为第一标识,标记当前的备份区;
在完成更新后,所述MCU将当前的备份区设置为工作区,将另一分区设置为备份区,进行***复位操作;
每次复位启动后,所述MCU在确定复位原因为上电复位或***复位,所述更新状态标识为所述第一标识,且本次复位启动前的备份区完成更新的情况下,将所述更新状态标识设置为第二标识,启动当前的工作区,向所述MPU发送正常启动升级成功消息。
可选的,在上述方法的基础上,还包括:
所述MPU响应所述正常启动升级成功消息,向所述MCU发送所述目标应用程序的第二应用数据,其中,所述第二应用数据为与当前的备份区匹配的应用数据;
所述MCU执行当前的工作区中的引导加载程序,利用所述第二应用数据对当前的备份区中的所述目标应用程序进行更新,并将所述更新状态标识设置为所述第一标识,标记当前的备份区;
在完成更新后,所述MCU将当前的备份区设置为工作区,将另一分区设置为备份区,进行***复位操作;
每次复位启动后,所述MCU在确定复位原因为上电复位或***复位,所述更新状态标识为所述第一标识,且本次复位启动前的备份区完成更新的情况下,将所述更新状态标识设置为第二标识,启动当前的工作区,向所述MPU发送正常启动升级成功消息。
可选的,在上述方法中,所述MCU执行当前的工作区中的引导加载程序,利用所述第一应用数据对当前的备份区中的所述目标应用程序进行更新,包括:所述MCU执行当前的工作区中所述目标应用程序中的引导加载程序,利用所述第一应用数据对当前的备份区中的所述目标应用程序进行更新;
所述MCU执行当前的工作区中的引导加载程序,利用所述第二应用数据对当前的备份区中的所述目标应用程序进行更新,包括:所述MCU执行当前的工作区中所述目标应用程序中的引导加载程序,利用所述第二应用数据对当前的备份区中的所述目标应用程序进行更新。
可选的,在上述方法的基础上,还包括:
每次复位启动后,所述MCU在确定复位原因为上电复位或***复位,所述更新状态标识为所述第一标识,且本次复位启动前的备份区未完成更新的情况下,启动当前的工作区,向所述MPU发送正常启动升级失败消息。
可选的,在上述方法的基础上,还包括:
每次复位启动后,所述MCU在确定复位原因为异常复位,所述更新状态标识为所述第二标识的情况下,确定当前的工作区存在异常,向所述MPU发送软件版本回滚消息,所述软件版本回滚信息包括待回滚的应用程序的标识;
所述MPU响应所述软件版本回滚信息,获得所述待回滚的应用程序的历史版本应用数据,向所述MCU发送所述历史版本应用数据;
所述MCU利用所述历史版本应用数据对当前的工作区中的应用程序进行更新。
可选的,在上述方法的基础上,还包括:
每次复位启动后,所述MCU在确定复位原因为异常复位,所述更新状态标识为所述第一标识的情况下,确定本次复位启动前的备份区中的应用程序存在异常,将所述更新状态标识设置为第三标识,向所述MPU发送升级导致分区故障消息。
可选的,在上述方法的基础上,还包括:
每次复位启动后,所述MCU在确定复位原因为上电复位或***复位,所述更新状态标识为所述第二标识的情况下,启动当前的工作区,向所述MPU发送正常启动未升级消息。
可选的,在所述MPU从外部设备获取目标应用程序的应用数据后,还包括:所述MPU对获取到的应用数据进行安全校验。
本申请还提供一种ECU,所述ECU包括通过总线连接的MPU和MCU,所述MCU的存储空间至少划分为第一分区和第二分区,在同一时刻,所述第一分区和第二分区中的一个分区被设置为工作区、另一个分区被设置为备份区;
所述MPU用于:从外部设备获取目标应用程序的应用数据;确定所述MCU当前的备份区,向所述MCU发送所述目标应用程序的第一应用数据,其中,所述第一应用数据为与当前的备份区匹配的应用数据;
所述MCU用于:执行当前的工作区中的引导加载程序,利用所述第一应用数据对当前的备份区中的所述目标应用程序进行更新,并将更新状态标识设置为第一标识,标记当前的备份区;在完成更新后,将当前的备份区设置为工作区,将另一分区设置为备份区,进行***复位操作;每次复位启动后,在确定复位原因为上电复位或***复位,所述更新状态标识为所述第一标识,且本次复位启动前的备份区完成更新的情况下,将所述更新状态标识设置为第二标识,启动当前的工作区,向所述MPU发送正常启动升级成功消息。
可选的,所述MPU还用于:响应所述MCU发送的正常启动升级成功消息,向所述MCU发送所述目标应用程序的第二应用数据,其中,所述第二应用数据为与当前的备份区匹配的应用数据;
所述MCU还用于:执行当前的工作区中的引导加载程序,利用所述第二应用数据对当前的备份区中的所述目标应用程序进行更新,并将所述更新状态标识设置为所述第一标识,标记当前的备份区;完成更新后,将当前的备份区设置为工作区,将另一分区设置为备份区,进行***复位操作;每次复位启动后,在确定复位原因为上电复位或***复位,所述更新状态标识为所述第一标识,且本次复位启动前的备份区完成更新的情况下,将所述更新状态标识设置为第二标识,启动当前的工作区,向所述MPU发送正常启动升级成功消息。
由此可见,本申请的有益效果为:
本申请公开的应用程序更新方法,ECU包括通过总线连接的MPU和MCU,MPU从外部设备获取目标应用程序的应用数据;MPU确定MCU当前的备份区,向MCU发送目标应用程序与当前的备份区匹配的应用数据,MCU执行当前的工作区中的引导加载程序,利用接收到的应用数据对备份区中的目标应用程序进行更新,并将更新状态标识设置为第一标识,标记当前的备份区,并且,在备份区完成更新后,MCU将当前的备份区设置为工作区,将另一分区设置为备份区,进行***复位操作;每次复位启动后,如果复位原因为上电复位或***复位,更新状态标识为第一标识,且本次复位启动前的备份区完成更新,那么这表明当前的工作区中的目标应用程序已经完成更新,MCU启动当前的工作区,并向MPU发送正常启动升级成功消息。可以看到,在上述过程中,不需要占用ECU外部的CAN总线,也不需要静默车辆的CAN总线上的其他节点,不会影响车辆的其他功能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请公开的一种应用程序更新方法的流程图;
图2为本申请公开的另一种应用程序更新方法的流程图;
图3为本申请公开的ECU中MCU的软件架构示意图;
图4为本申请公开的一种ECU的结构图。
具体实施方式
首先对本申请中出现的术语及英文缩写进行介绍。
OEM:Original Equipment Manufacturer,整车厂;
CAN:Controller Area Network,控制器局域网络;
ECU:Electronic Control Unit,电子控制单元;
MPU:Microprocessor Unit,微处理器;
MCU:Microcontroller Unit,微控制单元。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请公开一种应用程序更新方法及ECU,能够在不影响车辆的其他功能的前提下,对ECU中的应用程序进行更新。
本申请中的ECU包括MPU和MCU,MPU和MCU之间通过总线连接。另外,MPU可以通过车载以太网与外部设备进行数据交互,而不使用车辆的CAN总线。外部设备可以是车辆诊断仪,也可以是车载网关。MCU的存储空间至少划分为第一分区和第二分区,在同一时刻,第一分区和第二分区中的一个分区被设置为工作区,另一个分区被设置为备份区。也就是说,在同一时刻,第一分区和第二分区中的一个分区处于Active状态,另一个分区处于Inactive状态。
参见图1,图1为本申请公开的一种应用程序更新方法的流程图。该方法包括:
S11:MPU从外部设备获取目标应用程序的应用数据。
其中,目标应用程序是指MCU中需要更新的应用程序。
可选的,MPU通过车载以太网从车辆诊断仪获取目标应用程序的应用数据。可选的,MPU通过车载以太网从车载网关获取目标应用程序的应用数据,其中,目标应用程序的应用数据已预先传输至车载网关。MPU通过车载以太网从车辆诊断仪和车载网关获取目标应用程序的应用数据的过程,无需使用车辆的CAN总线。
需要说明的是,在MCU的第一分区和第二分区存储、运行的同一个应用程序,其应用数据会存在一些差异。例如,指令中的地址不同。这是由于第一分区和第二分区所占用的存储空间不同导致的。技术人员在对应用程序进行开发和升级的过程中,需要分别生成与MCU中的第一分区和第二分区匹配的应用数据。
实施中,MPU从外部设备获取的目标应用程序的应用数据包含:与MCU的第一分区匹配的应用数据、以及与MCU的第二分区匹配的应用数据。
S12:MPU确定MCU当前的备份区,向MCU发送目标应用程序的第一应用数据。其中,第一应用数据为与当前的备份区匹配的应用数据。
实施中,MPU读取MCU寄存器,以确定MCU当前的工作区和备份区具体为第一分区和第二分区中的哪个分区。
S13:MCU执行当前的工作区中的引导加载程序,利用第一应用数据对当前的备份区中的目标应用程序进行更新,并将更新状态标识设置为第一标识(ON),标记当前的备份区。
其中,更新状态标识用于标记MCU的更新状态,第一标识用于表征启动了针对MCU中应用程序的更新。
需要说明的是,更新状态标识存储于MCU中除第一分区和第二分区之外的数据存储区。
S14:在完成更新后,MCU将当前的备份区设置为工作区,将另一分区设置为备份区,进行***复位操作。
MCU判断备份区是否完成更新,是指MCU判断是否将目标应用程序的应用数据完整写入备份区。实施中,可以采用如下方案:目标应用程序的应用数据的指定位置为校验标识位,MCU如果能够在当前的备份区读取到相应的校验标识位,则确定当前的备份区完成更新,如果未在当前的备份区读取到相应的校验标识位,则确定当前的备份区未完成更新。
S15:每次复位启动后,MCU在确定复位原因为上电复位或***复位,更新状态标识为第一标识(ON),且本次复位启动前的备份区完成更新的情况下,将更新状态标识设置为第二标识(IDLE),启动当前的工作区,向MPU发送正常启动升级成功消息(Run_UpdateSucces)。
第二标识用于表征未对MCU中的应用程序进行更新。正常启动升级成功消息用于表征在本次复位启动前完成对当时的备份区的更新,且正常启动更新后的备份区(即当前的工作区)。
需要说明的是,在上述步骤S13中针对当时的备份区添加了标记。相应的,每次复位启动后,MCU在确定复位原因为上电复位或***复位,且更新状态标识为第一标识(ON)的情况下,就可以获知在本次复位启动前的备份区具体为第一分区和第二分区中的哪个分区,也就是获知在本次复位启动前对第一分区和第二分区中的哪个分区进行了更新,进而判断在本次复位启动前的备份区是否完成更新。
可以理解的是:备份区和工作区是可更新的,当前的备份是指最新设置确定的备份区,当前的工作区是指最新设置确定的工作区。
下面结合实例对本申请上述公开的方案进行说明。
MCU的存储空间至少划分为A分区和B分区。
MPU从外部设备获取目标应用程序的应用数据,包括:该目标应用程序与A分区匹配的应用数据;该目标应用程序与B分区匹配的应用数据。
MPU确定MCU当前的备份区。假设MCU当前的工作区为A分区、备份区为B分区。那么MPU通过总线向MCU发送目标应用程序与B分区匹配的应用数据。
MCU执行A分区中的引导加载程序,利用与B分区匹配的应用数据对B分区中的目标应用程序进行更新,并将更新状态标识设置为第一标识(ON),标记当前的备份区(即标记B分区)。
在完成更新后,MCU将B分区设置为工作区,将A分区设置为备份区,进行***复位操作。
复位启动后,MCU在确定复位原因为上电复位或***复位,更新状态标识为第一标识(ON),且本次复位启动前的备份区(即B分区)完成更新的情况下,将更新状态标识设置为第二标识(IDLE),启动B分区,向MPU发送正常启动升级成功消息(Run_UpdateSucces)。
可选的,MPU从外部设备获取目标应用程序的应用数据后,还包括:MPU对获取到的应用数据进行安全校验。也就是说,MPU从外部设备获取目标应用程序的应用数据后,对获取到的应用数据进行安全验证,以确定应用数据的安全性和有效性,在通过安全验证后,才会向MCU发送与当前的备份区匹配的应用数据。
本申请公开的应用程序更新方法,ECU包括通过总线连接的MPU和MCU,MPU从外部设备获取目标应用程序的应用数据;MPU确定MCU当前的备份区,向MCU发送目标应用程序与当前的备份区匹配的应用数据,MCU执行当前的工作区中的引导加载程序,利用接收到的应用数据对备份区中的目标应用程序进行更新,并将更新状态标识设置为第一标识,标记当前的备份区,并且,在备份区完成更新后,MCU将当前的备份区设置为工作区,将另一分区设置为备份区,进行***复位操作;在每次复位启动后,如果复位原因为上电复位或***复位,更新状态标识为第一标识,且本次复位启动前的备份区完成更新,那么这表明当前的工作区中的目标应用程序已经完成更新,MCU启动当前的工作区,并向MPU发送正常启动升级成功消息。可以看到,在上述过程中,不需要占用ECU外部的CAN总线,也不需要静默车辆的CAN总线上的其他节点,不会影响车辆的其他功能。
在另一个实施例中,MCU向MPU发送正常启动升级成功消息(Run_UpdateSucces)之后,还包括:
S16:MPU响应正常启动升级成功消息(Run_UpdateSucces),向MCU发送目标应用程序的第二应用数据。其中,第二应用数据为与当前的备份区匹配的应用数据。
S17:MCU执行当前的工作区中的引导加载程序,利用第二应用数据对当前的备份区中的目标应用程序进行更新,并将更新状态标识设置为第一标识(ON),标记当前的备份区。
S18:在完成更新后,MCU将当前的备份区设置为工作区,将另一分区设置为备份区,进行***复位操作。
S19:在每次复位启动后,MCU在确定复位原因为上电复位或***复位,更新状态标识为第一标识(ON),且本次复位启动前的备份区完成更新的情况下,将更新状态标识设置为第二标识(IDLE),启动当前的工作区,向MPU发送正常启动升级成功消息(Run_UpdateSucces)。
这里继续结合上文中的举例进行说明。
复位启动后,MCU在确定复位原因为上电复位或***复位,更新状态标识为第一标识(ON),且本次复位启动前的备份区(即B分区)完成更新的情况下,将更新状态标识设置为第二标识(IDLE),启动B分区,向MPU发送正常启动升级成功消息(Run_UpdateSucces)。
MPU响应MCU发送的正常启动升级成功消息(Run_UpdateSucces),向MCU发送目标应用程序与当前的备份区(即A分区)匹配的应用数据。
MCU执行B分区中的引导加载程序,利用与A分区匹配的应用数据对A分区中的目标应用程序进行更新,并将更新状态标识设置为第一标识(ON),标记当前的备份区(即标记A分区)。
在完成更新后,MCU将A分区设置为工作区,将B分区设置为备份区,进行***复位操作。
复位启动后,MCU在确定复位原因为上电复位或***复位,更新状态标识为第一标识(ON),且本次复位启动前的备份区(即A分区)完成更新的情况下,将更新状态标识设置为第二标识(IDLE),启动A分区,向MPU发送正常启动升级成功消息(Run_UpdateSucces)。
作为一种可选的实施方式,MCU执行步骤S15之后,立即执行后续的步骤S16至步骤S19,也就是说,在对第一分区和第二分区中的一个分区中的目标应用程序进行更新后,立即对第一分区和第二分区中的另一个分区中的目标应用程序进行更新。
作为另一种可选的实施方式,MCU执行步骤S15之后,当满足预设条件时,执行后续的步骤S16至步骤S19。
可选的,该预设条件为:接收到对另一分区的应用程序进行更新的指示。也就是说,由用户决定何时对另一分区中的目标应用程序进行更新。
可选的,该预设条件为:接收到车辆下电指示。也就是说,在车辆下电之前,对另一分区中的目标应用程序的更新。
在本申请的另一个实施例中,MCU执行当前的工作区中的引导加载程序,利用第一应用数据对当前的备份区中的目标应用程序进行更新,包括:MCU执行当前的工作区中目标应用程序中的引导加载程序,利用第一应用数据对当前的备份区中的目标应用程序进行更新。
在本申请的另一个实施例中,MCU执行当前的工作区中的引导加载程序,利用第二应用数据对当前的备份区中的目标应用程序进行更新,包括:MCU执行当前的工作区中目标应用程序中的引导加载程序,利用第二应用数据对当前的备份区中的目标应用程序进行更新。
在上述实施例中,技术人员对目标应用程序进行开发和升级的过程中,针对目标应用程序生成的应用数据集成有引导加载程序。MCU在对当前的备份区中的目标应用程序进行更新的过程中,优先采用:执行当前的工作区中的目标应用程序中的引导加载程序,对当前的备份区中的目标应用程序进行更新。这样能够保证对备份区中的目标应用程序进行更新的过程中,当前的工作区中的其他应用程序能够正常使用。
需要说明的是,采用上述方案的前提是,MCU具有多个内核,由一个内核执行当前的工作区中的目标应用程序中的引导加载程序,对当前的备份区中的目标应用程序进行更新。
这里结合图3对MCU的软件架构进行说明。
MCU的存储空间至少划分为第一分区和第二分区,如图3中的A分区和B分区。A分区存储有引导加载程序BT_A和应用程序APP_A,B分区存储有引导加载程序BT_B和应用程序APP_B,并且,应用程序APP_A集成有引导加载程序BT_CDD,应用程序APP_B集成有引导加载程序BT_CDD。
在对ECU中的应用程序进行更新过程中,可能出现诸如升级失败、软件异常等异常事件,为了保证ECU的稳定运行,在上述应用程序更新方法的基础上,进一步设置如下方案。
1)、每次复位启动后,MCU在确定复位原因为上电复位(POR_Reset)或***复位(SysReset),更新状态标识为第二标识(IDLE)的情况下,启动当前的工作区,向MPU发送正常启动未升级消息(Run_Normal)。正常启动未升级消息用于表征本次复位启动前未对备份区进行更新,正常启动当前的工作区。
如果导致本次复位的原因为上电复位或***复位,且更新状态标识为第二标识(IDLE),这表明在本次复位启动前,MCU未对第一分区和第二分区中的应用程序进行更新,在这种情况下,MCU启动当前的工作区,向MPU发送正常启动未升级消息(Run_Normal)。
2)、每次复位启动后,MCU在确定复位原因为上电复位或***复位,更新状态标识为第一标识(ON),且本次复位启动前的备份区未完成更新的情况下,启动当前的工作区,向MPU发送正常启动升级失败消息(Run_UpdateError)。正常启动升级失败消息用于表征本次复位启动前对当时的备份区的更新失败,正常启动当前的工作区。
如果导致复位的原因为上电复位或***复位,且更新状态标识为第一标识(ON),这表明在本次复位启动前,MCU对当时的备份区中的应用程序进行了更新,需要进一步确定该次更新是否完成。如果本次复位启动前的备份区未完成更新,那么MCU启动当前的工作区,向MPU发送正常启动升级失败消息(Run_UpdateError)。
3)、每次复位启动后,MCU在确定复位原因为异常复位,更新状态标识为第二标识(IDLE)的情况下,确定当前的工作区存在异常,向MPU发送软件版本回滚消息,其中,软件版本回滚信息包括待回滚的应用程序的标识;MPU响应软件版本回滚信息,获得待回滚的应用程序的历史版本应用数据,向MCU发送历史版本应用数据;MCU利用历史版本应用数据对当前的工作区中的应用程序进行更新。
针对MCU中的各个应用程序,MPU存储有每个应用程序的至少一个历史版本应用数据。
如果导致复位的原因为异常复位,且更新状态标识为第二标识(IDLE),这表明在本次复位启动前,MCU未对第一分区和第二分区中的应用程序进行更新,本次的异常复位是由MCU中应用程序本身的缺陷导致的。在这种情况下,MCU向MPU发送软件版本回滚消息,该软件版本回滚消息包括待回滚的应用程序的标识,MPU获得待回滚的应用程序的历史版本应用数据,向MCU发送历史版本应用数据;MCU利用历史版本应用数据对当前的工作区中的应用程序进行更新,实现软件回滚,保证该应用程序可以正常使用。
4)、每次复位启动后,MCU在确定复位原因为异常复位,更新状态标识为第一标识(ON)的情况下,确定本次复位启动前的备份区中的应用程序存在异常,将更新状态标识设置为第三标识(OFF),向MPU发送升级导致分区故障消息(Run_BankError)。第三标识用于表征应用程序升级后出现异常。升级导致分区故障消息用于表征在本次启动前对当时的备份区的更新出现异常,导致该分区存在故障。
如果导致复位的原因为异常复位,且更新状态标识为第一标识(ON),这表明在本次复位启动前,MCU对当时的备份区中的应用程序进行了更新,本次的异常复位极有可能是这次更新导致的,因此,确定本次复位启动前的备份区中的应用程序存在异常,将更新状态标识设置为第三标识(OFF),向MPU发送升级导致分区故障消息(Run_BankError)。
下面结合表1对更新状态标识(Update_State)进行说明。
表1
本申请还公开一种ECU,其结构如图4所示。
该ECU包括通过总线连接的MPU100和MCU200。
MCU200的存储空间至少划分为第一分区和第二分区,在同一时刻,第一分区和第二分区中的一个分区被设置为工作区、另一个分区被设置为备份区。
MPU100用于:从外部设备获取目标应用程序的应用数据;确定MCU200当前的备份区,向MCU200发送目标应用程序的第一应用数据。其中,第一应用数据为与当前的备份区匹配的应用数据。
MCU200用于:执行当前的工作区中的引导加载程序,利用第一应用数据对当前的备份区中的目标应用程序进行更新,并将更新状态标识设置为第一标识,标记当前的备份区;在完成更新后,将当前的备份区设置为工作区,将另一分区设置为备份区,进行***复位操作;每次复位启动后,在确定复位原因为上电复位或***复位,更新状态标识为第一标识,且本次复位启动前的备份区完成更新的情况下,将更新状态标识设置为第二标识,启动当前的工作区,向MPU100发送正常启动升级成功消息。
可选的,MPU100从外部设备获取目标应用程序的应用数据后,对获取到的应用数据进行安全校验,以确定应用数据的安全性和有效性,在通过安全验证后,向MCU200发送与当前的备份区匹配的应用数据。
本申请公开的ECU,在对MCU内部的应用程序进行更新的过程中,不需要占用ECU外部的CAN总线,也不需要静默车辆的CAN总线上的其他节点,不会影响车辆的其他功能。
在本申请的另一个实施例中,MPU100还用于:响应MCU200发送的正常启动升级成功消息,向MCU200发送目标应用程序的第二应用数据。其中,第二应用数据为与当前的备份区匹配的应用数据。
MCU200还用于:执行当前的工作区中的引导加载程序,利用第二应用数据对当前的备份区中的目标应用程序进行更新,并将更新状态标识设置为第一标识,标记当前的备份区;完成更新后,将当前的备份区设置为工作区,将另一分区设置为备份区,进行***复位操作;每次复位启动后,在确定复位原因为上电复位或***复位,更新状态标识为第一标识,且本次复位启动前的备份区完成更新的情况下,将更新状态标识设置为第二标识,启动当前的工作区,向MPU100发送正常启动升级成功消息。
在本申请的另一个实施例中,MCU200执行当前的工作区中的引导加载程序,利用第一应用数据对当前的备份区中的目标应用程序进行更新,具体为:MCU200执行当前的工作区中目标应用程序中的引导加载程序,利用第一应用数据对当前的备份区中的目标应用程序进行更新。
在本申请的另一个实施例中,MCU200执行当前的工作区中的引导加载程序,利用第二应用数据对当前的备份区中的目标应用程序进行更新,具体为:MCU200执行当前的工作区中目标应用程序中的引导加载程序,利用第二应用数据对当前的备份区中的目标应用程序进行更新。
在本申请的另一个实施例中,MCU200还用于:每次复位启动后,MCU200在确定复位原因为上电复位或***复位,更新状态标识为第一标识,且本次复位启动前的备份区未完成更新的情况下,启动当前的工作区,向MPU100发送正常启动升级失败消息。
在本申请的另一个实施例中,MCU200还用于:每次复位启动后,MCU200在确定复位原因为异常复位,更新状态标识为第二标识的情况下,确定当前的工作区存在异常,向MPU100发送软件版本回滚消息,其中,该软件版本回滚信息包括待回滚的应用程序的标识。MPU100还用于:响应软件版本回滚信息,获得待回滚的应用程序的历史版本应用数据,向MCU200发送历史版本应用数据。MCU200还用于:利用历史版本应用数据对当前的工作区中的应用程序进行更新。
在本申请的另一个实施例中,MCU200还用于:每次复位启动后,MCU200在确定复位原因为异常复位,更新状态标识为第一标识的情况下,确定本次复位启动前的备份区中的应用程序存在异常,将更新状态标识设置为第三标识,向MPU100发送升级导致分区故障消息。
在本申请的另一个实施例中,MCU200还用于:每次复位启动后,MCU200在确定复位原因为上电复位或***复位,更新状态标识为第二标识的情况下,启动当前的工作区,向MPU100发送正常启动未升级消息。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的ECU而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种应用程序更新方法,其特征在于,ECU包括通过总线连接的MPU和MCU,所述MCU的存储空间至少划分为第一分区和第二分区,在同一时刻,所述第一分区和第二分区中的一个分区被设置为工作区、另一个分区被设置为备份区,所述方法包括:
所述MPU从外部设备获取目标应用程序的应用数据;
所述MPU确定所述MCU当前的备份区,向所述MCU发送所述目标应用程序的第一应用数据,其中,所述第一应用数据为与当前的备份区匹配的应用数据;
所述MCU执行当前的工作区中的引导加载程序,利用所述第一应用数据对当前的备份区中的所述目标应用程序进行更新,并将更新状态标识设置为第一标识,标记当前的备份区;
在完成更新后,所述MCU将当前的备份区设置为工作区,将另一分区设置为备份区,进行***复位操作;
每次复位启动后,所述MCU在确定复位原因为上电复位或***复位,所述更新状态标识为所述第一标识,且本次复位启动前的备份区完成更新的情况下,将所述更新状态标识设置为第二标识,启动当前的工作区,向所述MPU发送正常启动升级成功消息。
2.根据权利要求1所述的方法,其特征在于,还包括:
所述MPU响应所述正常启动升级成功消息,向所述MCU发送所述目标应用程序的第二应用数据,其中,所述第二应用数据为与当前的备份区匹配的应用数据;
所述MCU执行当前的工作区中的引导加载程序,利用所述第二应用数据对当前的备份区中的所述目标应用程序进行更新,并将所述更新状态标识设置为所述第一标识,标记当前的备份区;
在完成更新后,所述MCU将当前的备份区设置为工作区,将另一分区设置为备份区,进行***复位操作;
每次复位启动后,所述MCU在确定复位原因为上电复位或***复位,所述更新状态标识为所述第一标识,且本次复位启动前的备份区完成更新的情况下,将所述更新状态标识设置为第二标识,启动当前的工作区,向所述MPU发送正常启动升级成功消息。
3.根据权利要求2所述的方法,其特征在于,
所述MCU执行当前的工作区中的引导加载程序,利用所述第一应用数据对当前的备份区中的所述目标应用程序进行更新,包括:所述MCU执行当前的工作区中所述目标应用程序中的引导加载程序,利用所述第一应用数据对当前的备份区中的所述目标应用程序进行更新;
所述MCU执行当前的工作区中的引导加载程序,利用所述第二应用数据对当前的备份区中的所述目标应用程序进行更新,包括:所述MCU执行当前的工作区中所述目标应用程序中的引导加载程序,利用所述第二应用数据对当前的备份区中的所述目标应用程序进行更新。
4.根据权利要求1、2或3所述的方法,其特征在于,还包括:
每次复位启动后,所述MCU在确定复位原因为上电复位或***复位,所述更新状态标识为所述第一标识,且本次复位启动前的备份区未完成更新的情况下,启动当前的工作区,向所述MPU发送正常启动升级失败消息。
5.根据权利要求1、2或3所述的方法,其特征在于,还包括:
每次复位启动后,所述MCU在确定复位原因为异常复位,所述更新状态标识为所述第二标识的情况下,确定当前的工作区存在异常,向所述MPU发送软件版本回滚消息,所述软件版本回滚信息包括待回滚的应用程序的标识;
所述MPU响应所述软件版本回滚信息,获得所述待回滚的应用程序的历史版本应用数据,向所述MCU发送所述历史版本应用数据;
所述MCU利用所述历史版本应用数据对当前的工作区中的应用程序进行更新。
6.根据权利要求1、2或3所述的方法,其特征在于,还包括:
每次复位启动后,所述MCU在确定复位原因为异常复位,所述更新状态标识为所述第一标识的情况下,确定本次复位启动前的备份区中的应用程序存在异常,将所述更新状态标识设置为第三标识,向所述MPU发送升级导致分区故障消息。
7.根据权利要求1、2或3所述的方法,其特征在于,还包括:
每次复位启动后,所述MCU在确定复位原因为上电复位或***复位,所述更新状态标识为所述第二标识的情况下,启动当前的工作区,向所述MPU发送正常启动未升级消息。
8.根据权利要求1所述的方法,其特征在于,所述MPU从外部设备获取目标应用程序的应用数据后,还包括:
所述MPU对获取到的应用数据进行安全校验。
9.一种ECU,其特征在于,所述ECU包括通过总线连接的MPU和MCU,所述MCU的存储空间至少划分为第一分区和第二分区,在同一时刻,所述第一分区和第二分区中的一个分区被设置为工作区、另一个分区被设置为备份区;
所述MPU用于:从外部设备获取目标应用程序的应用数据;确定所述MCU当前的备份区,向所述MCU发送所述目标应用程序的第一应用数据,其中,所述第一应用数据为与当前的备份区匹配的应用数据;
所述MCU用于:执行当前的工作区中的引导加载程序,利用所述第一应用数据对当前的备份区中的所述目标应用程序进行更新,并将更新状态标识设置为第一标识,标记当前的备份区;在完成更新后,将当前的备份区设置为工作区,将另一分区设置为备份区,进行***复位操作;每次复位启动后,在确定复位原因为上电复位或***复位,所述更新状态标识为所述第一标识,且本次复位启动前的备份区完成更新的情况下,将所述更新状态标识设置为第二标识,启动当前的工作区,向所述MPU发送正常启动升级成功消息。
10.根据权利要求9所述的ECU,其特征在于,
所述MPU还用于:响应所述MCU发送的正常启动升级成功消息,向所述MCU发送所述目标应用程序的第二应用数据,其中,所述第二应用数据为与当前的备份区匹配的应用数据;
所述MCU还用于:执行当前的工作区中的引导加载程序,利用所述第二应用数据对当前的备份区中的所述目标应用程序进行更新,并将所述更新状态标识设置为所述第一标识,标记当前的备份区;完成更新后,将当前的备份区设置为工作区,将另一分区设置为备份区,进行***复位操作;每次复位启动后,在确定复位原因为上电复位或***复位,所述更新状态标识为所述第一标识,且本次复位启动前的备份区完成更新的情况下,将所述更新状态标识设置为第二标识,启动当前的工作区,向所述MPU发送正常启动升级成功消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210334681.XA CN114579161A (zh) | 2022-03-31 | 2022-03-31 | 应用程序更新方法及ecu |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210334681.XA CN114579161A (zh) | 2022-03-31 | 2022-03-31 | 应用程序更新方法及ecu |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114579161A true CN114579161A (zh) | 2022-06-03 |
Family
ID=81784211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210334681.XA Pending CN114579161A (zh) | 2022-03-31 | 2022-03-31 | 应用程序更新方法及ecu |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114579161A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117149478A (zh) * | 2023-06-14 | 2023-12-01 | 杭州迪为科技有限公司 | 汽车电子控制器的复位管理方法、装置和汽车电子控制器 |
-
2022
- 2022-03-31 CN CN202210334681.XA patent/CN114579161A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117149478A (zh) * | 2023-06-14 | 2023-12-01 | 杭州迪为科技有限公司 | 汽车电子控制器的复位管理方法、装置和汽车电子控制器 |
CN117149478B (zh) * | 2023-06-14 | 2024-06-04 | 杭州迪为科技有限公司 | 汽车电子控制器的复位管理方法、装置和汽车电子控制器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2023041817A (ja) | 代替装置、代替制御プログラム及び代替方法 | |
CN112667265B (zh) | 一种引导程序更新方法及装置 | |
US20240069906A1 (en) | Server, software update system, distribution method, and non-transitory storage medium | |
CN114579161A (zh) | 应用程序更新方法及ecu | |
CN113448643B (zh) | 配置数据管理***及方法 | |
CN114531431A (zh) | 一种基于蓝牙的多设备ota升级方法、电子设备、存储介质和程序产品 | |
CN110688136B (zh) | 一种应用程序更新方法及装置 | |
CN110704076A (zh) | 数据处理方法和装置、车载控制器及计算机可读存储介质 | |
CN113050960A (zh) | Ota升级方法、装置、车载终端及存储介质 | |
CN116755737A (zh) | 汽车软件ota升级方法、装置、设备、存储介质及程序 | |
CN115988503A (zh) | 一种基于车辆的应用功能的处理方法、设备及介质 | |
CN114237722B (zh) | 一种***的启动方法、装置、设备及工程车辆 | |
US20220391192A1 (en) | Ota master, center, system, method, non-transitory storage medium, and vehicle | |
WO2019010769A1 (zh) | 一种车载通信设备的升级方法、装置和车载通信设备 | |
US11995429B2 (en) | Software update device, update control method, non-transitory storage medium, and server | |
US20220245085A1 (en) | Method of dialogue with a computer on an on-board bus of a vehicle | |
CN115437670B (zh) | 基于tftp的汽车控制器程序升级*** | |
CN113297011B (zh) | 一种主从mcu升级失败的自恢复方法及*** | |
CN115842689B (zh) | 一种唤醒方法、电子控制单元及终端设备 | |
RU2816885C2 (ru) | Способ взаимодействия с вычислительным устройством на бортовой шине транспортного средства | |
US20220405083A1 (en) | Ota master, system, method, non-transitory storage medium, and vehicle | |
CN113407217B (zh) | 芯片程序升级方法、通信设备及计算机可读存储介质 | |
CN116909609B (zh) | 车载智能设备的软件升级方法、装置及车载智能设备 | |
US20220391193A1 (en) | Ota master, system, method, non-transitory storage medium, and vehicle | |
JP2004054421A (ja) | メモリ、情報処理装置、記憶方法および情報処理方法 |
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 |