掌桥专利:专业的专利平台
掌桥专利
首页

一种基于UDS协议的双分区升级方法及系统

文献发布时间:2024-04-18 19:58:21


一种基于UDS协议的双分区升级方法及系统

技术领域

本发明涉及汽车技术领域,尤其涉及一种基于UDS协议的双分区升级方法及系统。

背景技术

随着汽车软件功能的日益复杂,软件功能在进行不断的迭代,同时会导致车端更新软件的频率在逐步增高,传统的软件更新方法需先擦除当前应用程序才能更新新的应用程序,导致用户体验存在安全隐患以及舒适性不足的问题。

现有的技术主要存在在软件升级的过程中,因刷写失败导致软件出现不可控的风险的问题,主要有以下2个方面:

1.软件更新需先擦除当前应用程序才能更新新的应用程序,此种方法下刷写中断或失败会使应用软件被擦除,给用户带来不可预估的安全隐患。

2.刷写过程需要用户等待软件更新,耗费时间,降低用户体验舒适性。

因此,亟需一种双分区升级方法和设备,提高汽车软件更新时用户体验的安全性和舒适性。

发明内容

为了解决上述技术问题,本发明提供了一种基于UDS协议的双分区升级方法及系统,能够提高汽车软件更新时用户体验的安全性和舒适性。

本发明提供了一种基于UDS协议的双分区升级方法,双分区升级方法用于车辆中应用程序的升级,车辆包括上位机、电子控制器单元,方法包括如下步骤:

上位机根据车辆信息判断应用程序是否满足升级条件;

若应用程序满足升级条件,则上位机查询电子控制器单元中的应用程序有效区的物理地址,以及应用程序备份区的物理地址;

上位机根据查询到的应用程序备份区的物理地址,基于UDS协议将升级后的应用程序下载至应用程序备份区;

待升级后的应用程序下载完成后,上位机基于UDS协议控制电子控制器单元将下载至应用程序备份区内的升级后的应用程序移动至应用程序有效区,以完成应用程序有效区的应用程序升级。

进一步的,上位机基于UDS协议控制电子控制器单元将下载至应用程序备份区内的升级后的应用程序移动至应用程序有效区,以完成应用程序有效区的应用程序升级包括:

若电子控制器单元支持闪存重映射,则上位机通过UDS协议的31服务例程进行分区切换,通过更新电子控制器单元的应用程序备份区的有效性,使应用程序备份区变成应用程序有效区,应用程序有效区变成应用程序备份区;

若电子控制器单元不支持闪存重映射,则上位机通过UDS协议的31服务例程向电子控制器单元发送拷贝信号,控制电子控制器单元将应用程序备份区内的升级后的应用程序拷贝至应用程序有效区。

进一步的,若电子控制器单元支持闪存重映射,在应用程序升级完成后,通过上位机运行UDS协议的31服务例程函数进行分区切换,更新电子控制器单元的当前应用程序备份区的有效性,使当前应用程序备份区变回原应用程序有效区,使当前应用程序有效区变回原应用程序备份区,以实现应用程序版本回滚功能。

进一步的,上位机根据车辆信息判断应用程序是否满足升级条件包括:

车辆信息包括车速和电压;

当车速为0且电压在预设范围内时,上位机判断应用程序满足升级条件;

当车速不为0或电压不在预设范围内时,上位机判断应用程序不满足升级条件。

进一步的,在上位机根据查询到的应用程序备份区的物理地址,基于UDS协议将升级后的应用程序下载至应用程序备份区之前,还包括:

上位机通过引导程序进入编程会话模式;

上位机判断电子控制器单元的安全算法校验是否通过;

若电子控制器单元的安全算法校验未通过,则退出应用程序升级流程;

若电子控制器单元的安全算法校验通过,则执行后续步骤。

进一步的,基于UDS协议将升级后的应用程序下载至应用程序备份区包括:

基于UDS协议控制电子控制器单元通过闪存驱动擦除应用程序备份区内的待升级应用程序;

当应用程序备份区内的待升级应用程序擦除完成后,基于UDS协议控制电子控制器单元通过闪存驱动将升级后的应用程序写入应用程序备份区。

进一步的,在上位机基于UDS协议控制电子控制器单元将应用程序备份区内的升级后的应用程序移动至应用程序有效区以完成应用程序有效区的应用程序升级之前,还包括:

上位机判断电子控制器单元的安全算法校验是否通过;

若电子控制器单元的安全算法校验未通过,则退出应用程序升级流程;

若电子控制器单元的安全算法校验通过,则执行后续步骤。

进一步的,在上位机判断电子控制器单元的安全算法校验是否通过之前,还包括:

上位机判断应用程序备份区内的升级后的应用程序刷写是否完整;

若升级后的应用程序刷写不完整,则退出应用程序升级流程;

若升级后的应用程序刷写完整,则执行上位机判断电子控制器单元的安全算法校验是否通过步骤。

本发明还提供了一种基于UDS协议的双分区升级系统,所述双分区升级系统用于实现上述任一项所述的升级方法,所述双分区升级系统包括上位机和电子控制器单元,其特征在于:

所述上位机用于根据车辆信息判断应用程序是否是否满足升级条件,查询电子控制器单元中的应用程序有效区的物理地址,以及应用程序备份区的物理地址,根据查询到的所述应用程序备份区的物理地址,基于UDS协议将升级后的应用程序下载至所述应用程序备份区,以及向所述电子控制器单元发送指令以执行应用程序升级流程;

所述电子控制器单元用于根据上位机发送的指令将下载至所述应用程序备份区内的所述升级后的应用程序移动至所述应用程序有效区,以完成所述应用程序有效区的应用程序升级。

本发明实施例具有以下技术效果:

1.通过采用双分区设计,更新应用程序时,主要更新应用程序备份区内的应用程序,解决在对应用程序升级的过程中,因刷写失败导致应用程序处于不可控的风险,不因升级过程中断而使应用程序有效区内的应用程序被擦除。

2.通过设置升级条件,车载终端可根据车辆信息判断应用程序是否满足升级条件,以限制应用程序在用户不使用车辆期间,更新车辆应用程序,节省更新应用程序时用户的等待时间,提高用户体验舒适度。此外,在电子控制器单元支持闪存重映射的情况下,因某些特殊原因需要切换至上一个版本软件时,通过切换分区流程也可以实现软件版本回滚功能。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1是本发明实施例提供的一种基于UDS协议的双分区升级方法的流程图;

图2是本发明实施例提供的一种基于UDS协议的双分区升级方法的逻辑图;

图3是本发明实施例提供的一种Flash驱动刷写步骤的逻辑图;

图4是本发明实施例提供的一种切换分区的方法的流程图;

图5是本发明实施例提供的一种基于UDS协议的双分区升级系统的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行清楚、完整的描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。

图1是本发明实施例提供的一种基于UDS协议的双分区升级方法的流程图,图2是本发明实施例提供的一种基于UDS协议的双分区升级方法的逻辑图。双分区升级方法用于车辆中应用程序的升级,车辆包括上位机、电子控制器单元,参见图1和图2,该方法具体包括:

上位机根据车辆信息判断应用程序是否满足升级条件。若应用程序满足升级条件,则执行后续步骤;若应用程序不满足升级条件,则退出应用程序升级流程。

具体的,车辆信息包括车速、电压等。应用程序的升级条件可以根据需要进行设置,示例性地,若想在用户不使用车辆期间进行应用程序的升级,可以将应用程序的升级条件设置为车速为0且电压在预设范围内。当车辆的车速为0且电压在预设范围内时,上位机判断应用程序满足升级条件,可以进行应用程序升级。当车速不为0或电压不在预设范围内时,上位机判断应用程序不满足升级条件,退出应用程序升级流程。

进一步的,若应用程序满足升级条件,上位机查询电子控制器单元中的应用程序有效区的物理地址,以及应用程序备份区的物理地址。

具体的,上位机向电子控制器单元(Electronic Control Unit,简称ECU)发送查询地址指令,ECU向上位机上报应用程序有效区的物理地址,以及应用程序备份区的物理地址,便于后续编程时在相应区域擦除和写入应用程序。

进一步的,上位机根据查询到的应用程序备份区的物理地址,基于UDS协议将升级后的应用程序下载至应用程序备份区。

具体的,UDS(Unified Diagnostic Services,统一的诊断服务)协议用于实现数据交互,上位机和ECU通过UDS协议实现应用程序的升级流程。基于UDS协议,上位机根据查询到的应用程序备份区的物理地址,控制ECU通过闪存(Flash)驱动擦除应用程序备份区内的待升级应用程序的;当应用程序备份区内的待升级应用程序擦除完成后,上位机再根据查询到的应用程序备份区的物理地址,控制ECU通过Flash驱动将升级后的应用程序的写入应用程序备份区。在上位机将待升级应用程序下载至应用程序备份区的过程中,并不影响应用程序有效区内的应用程序的正常运行。

进一步的,待升级后的应用程序下载完成后,上位机基于UDS协议控制电子控制器单元将下载至应用程序备份区内的升级后的应用程序移动至应用程序有效区,以完成应用程序有效区的应用程序升级。

具体的,由于上位机将升级后的应用程序下载至应用程序备份区中,而应用程序有效区的应用程序仍为旧版本,升级后的应用程序无法生效,因此需要执行切换分区流程。上位机根据UDS协议的31服务例程向ECU发送切换分区指令,其中,31服务例程包括不同的数据标识符(Data Identifier,简称DID),具体的执行的服务不同,对应的31服务例程中的DID也不同,例如CRC校验和依赖性检查。ECU根据切换分区指令通过引导程序(Bootloader)将应用程序备份区内的应用程序移动至应用程序有效区以完成应用程序有效区的应用程序升级;其中,Bootloader用于切换分区和更新应用程序备份区的,Bootloader位于ECU的Flash内存中的引导程序区,Flash内存包括引导程序区、应用程序有效区和应用程序备份区。在ECU将应用程序备份区内的应用程序移动至应用程序有效区之前,应用程序有效区内的旧版本应用程序仍正常运行,在ECU将应用程序备份区内的应用程序移动至应用程序有效区之后,应用程序有效区的应用程序完成升级,开始运行升级后的应用程序。

进一步的,ECU包括支持Flash重映射,和不支持Flash重映射两种;Flash重映射即通过修改Flash的映射模式来实现切换分区。因此上位机基于UDS协议控制电子控制器单元将下载至应用程序备份区内的升级后的应用程序移动至应用程序有效区,以完成应用程序有效区的应用程序升级包括:

若ECU支持Flash重映射,则上位机通过UDS协议的31服务例程进行分区切换,通过更新ECU的应用程序备份区的有效性,使应用程序备份区变成应用程序有效区,应用程序有效区变成应用程序备份区来实现切换分区。该方法不需要通过Flash驱动进行数据拷贝、数据擦除和数据写入等步骤,不存在拷贝数据错误的情况,出错率较低,安全性更高。

若ECU不支持Flash重映射,则上位机通过UDS协议的31服务例程向ECU发送拷贝信号,ECU通过Flash驱动将应用程序备份区的拷贝至应用程序有效区来实现切换分区。具体的,通过Flash驱动将应用程序备份区的进行拷贝,再通过Flash驱动将拷贝的写入应用程序有效区。在数据写入的过程中即使发生中断或断电,也可以保证应用程序备份区的保存完好,只需上电重新执行切换分区流程,重新拷贝应用程序备份区的并写入应用程序有效区即可,无需上位机再次下载应用程序。

在一些实施例中,当ECU支持Flash重映射时,因某些特殊原因需要切换至上一个版本软件时,可通过切换分区流程实现软件版本回滚功能。当ECU支持Flash重映射时,更新有效性后的应用程序备份区变为新的应用程序有效区,应用程序有效区变为新的应用程序备份区。此时新的应用程序有效区内的应用程序为新版本的应用程序,而新的应用程序备份区内的应用程序为旧版本的应用程序。只需要再次通过上位机运行UDS协议的31服务例程函数进行分区切换,更新ECU的当前应用程序备份区的有效性,使当前应用程序备份区变回原应用程序有效区,使当前应用程序有效区变回原应用程序备份区,即可实现应用程序版本回滚功能。

本发明实施例中,采用双分区设计,更新应用程序时,通过使用UDS协议将升级后的应用程序下载至应用程序备份区,主要更新应用程序备份区内的应用程序,再通过切换分区流程使升级后的应用程序的移动至应用程序有效区,解决在对应用程序升级的过程中,因刷写失败导致应用程序处于不可控的风险,不因升级过程中断而使应用程序有效区内的应用程序被擦除。通过设置应用程序的升级条件,车载终端可根据车辆信息判断应用程序是否满足升级条件,以限制应用程序在用户不使用车辆期间,更新车辆应用程序,节省更新应用程序时用户的等待时间,提高用户体验舒适度。此外,在电子控制器单元支持闪存重映射的情况下,因某些特殊原因需要切换至上一个版本软件时,通过切换分区流程也可以实现软件版本回滚功能。

继续参见图2,进一步的,在上位机根据查询到的应用程序备份区的物理地址,基于UDS协议将升级后的应用程序下载至应用程序备份区之前,还包括:

上位机通过引导程序进入编程会话模式。

具体的,在上位机根据查询到的应用程序备份区的物理地址,基于UDS协议将升级后的应用程序下载至应用程序备份区之前,需要先向ECU发送编程请求,才能将升级后的应用程序通过编程下载至应用程序备份区。因此上位机需要先进入ECU的编程会话模式,保存编程标志位至ECU的随机存取存储器(Random Access Memory,简称RAM)中,其中,编程标志位即编程请求。上位机将编程标志位保存至ECU的随机存取存储器后,控制ECU内部应用程序进行硬件复位,以使上位机与ECU的通讯驱动初始化,由上位机与ECU中的应用程序有效区和应用程序备份区进行数据交互改为由上位机与ECU中的引导程序区进行数据交互。上位机控制ECU内部应用程序重启进入引导程序区,引导程序区中的Bootloader在查询到编程标志位的存在后,进入编程会话模式,同时清除编程标志位;若Bootloader没有查询到编程标志位的存在,则Bootloader直接跳转至应用程序进行运行。其中,Bootloader进入编程会话模式后清除编程标志位的目的在于避免在应用程序升级完成后,重启时Bootloader再次检测到编程标志位的存在,进入编程会话模式。

进一步的,上位机通过引导程序进入编程会话模式后,上位机判断电子控制器单元的安全算法校验是否通过。若通过,则执行后续步骤;若未通过,则退出应用程序升级流程。

具体的,上位机对ECU进行安全算法校验,ECU向上位机上报校验结果。安全算法校验用于对数据和功能进行限制,安全算法校验通过后才可以执行相应的功能,如访问数据或进行编程等。若ECU上报安全算法校验未通过,则上位机无法对ECU进行编程,退出应用程序升级流程。若ECU上报安全算法校验通过,则可以继续执行后续应用程序升级流程。

进一步的,由于执行上位机根据查询到的应用程序备份区的物理地址,基于UDS协议将升级后的应用程序下载至应用程序备份区,需要用到Flash驱动的支持,因此在ECU内部软件完成硬件复位,且ECU安全算法校验通过后,还需要先进行Flash驱动刷写步骤,将Flash驱动刷写入ECU中。在执行上位机根据查询到的应用程序备份区的物理地址,基于UDS协议将升级后的应用程序下载至应用程序备份区的步骤时,每次执行擦除应用程序和写入应用程序的步骤前都需要执行Flash驱动刷写步骤。其中,若擦除和写入的过程之间无上下电过程,则Flash驱动刷写步骤只需要执行一次,若擦除和写入的过程之间有上下电过程,则在上电之后还需要重新执行Flash驱动刷写步骤。可选的,图3是本发明实施例提供的一种Flash驱动刷写步骤的逻辑图,参见图3,将Flash驱动下载至ECU中,检验是否完成下载。若未完成,则退出应用程序升级流程;若完成,则通过循环冗余校验码(Cyclic RedundancyCheck,简称CRC)校验判断Flsah驱动的完整性,若不完整,则无法继续执行后续操作,退出应用程序升级流程;若完整,则继续执行后续步骤。

在一些实施例中,可以将Flash驱动设计为外置驱动,将Flash驱动存放在ECU的RAM中执行,而不是直接存放在Flash内存中,在进行擦除和写入步骤从RAM中调用Flash驱动,以避免误擦除应用程序造成安全隐患。

图4是本发明实施例提供的一种切换分区的方法的流程图,参见图4,进一步的,在上位机基于UDS协议控制电子控制器单元将下载至应用程序备份区内的升级后的应用程序移动至应用程序有效区,以完成应用程序升级之前,还包括:

上位机判断应用程序备份区内的升级后的应用程序刷写的完整性。若升级后的应用程序刷写不完整,退出应用程序升级流程;若升级后的应用程序刷写完整,则上位机判断电子控制器单元的安全算法校验是否通过。若电子控制器单元的安全算法校验未通过,退出应用程序升级流程;若电子控制器单元的安全算法校验通过,则执行后续步骤。

具体的,通过CRC校验判断应用程序备份区内的升级后的应用程序刷写的完整性,若升级后的应用程序刷写不完整,则表明应用程序备份区内的应用程序升级失败,退出应用程序升级流程。若升级后的应用程序刷写完整,则表明应用程序备份区内的应用程序升级成功,可以执行后续的应用程序升级流程。在应用程序备份区内的应用程序升级成功后,上位机对ECU进行安全算法校验,ECU向上位机上报校验结果。若ECU上报安全算法校验未通过,则上位机无法对ECU进行编程,退出应用程序升级流程。若ECU上报安全算法校验通过,则可以继续执行后续应用程序升级流程。

继续参见图4,进一步的,在上位机基于UDS协议控制电子控制器单元将下载至应用程序备份区内的升级后的应用程序移动至应用程序有效区,以完成应用程序有效区的应用程序升级之后,还包括:

当ECU支持Flash重映射时,上位机查询切换分区的结果。若电子控制器单元上报切换分区的结果为正在切换,则上位机轮询切换分区的结果;若电子控制器单元上报切换分区的结果为切换成功,则结束切换分区流程;若电子控制器单元上报切换分区的结果为切换失败,则上位机重新根据车辆信息判断应用程序是否满足升级条件,并重新执行应用程序升级流程。

当ECU不支持Flash重映射时,上位机查询拷贝的结果。若电子控制器单元上报拷贝的结果为正在拷贝,则上位机轮询拷贝的结果;若电子控制器单元上报拷贝的结果为拷贝成功,则结束拷贝流程;若电子控制器单元上报拷贝的结果为拷贝失败,则上位机重新根据车辆信息判断应用程序是否满足升级条件,并重新执行应用程序升级流程。

具体的,上位机向ECU发送切换分区或拷贝的结果的查询指令,ECU将切换分区的结果或拷贝的结果上报至上位机。若ECU上报切换分区的结果为正在切换,或拷贝的结果为正在拷贝,则上位机轮询切换分区的结果或拷贝的结果。示例性地,可以通过设置定时器,使上位机每1s查询一次切换分区的结果,当10s后若切换分区的结果仍然为正在切换或切换分区失败,则ECU上报切换分区的结果为切换失败,上位机重新根据车辆信息判断应用程序是否满足升级条件,并重新执行应用程序升级流程。上位机轮询拷贝的结果的方式同理。若ECU上报切换分区的结果为切换成功,或拷贝的结果为拷贝成功,则结束切换分区流程或拷贝流程。若ECU上报查询切换分区的结果为切换失败,或拷贝的结果为拷贝失败,则上位机重新根据车辆信息判断应用程序是否满足升级条件,并重新执行应用程序升级流程。

进一步的,在上位机查询切换分区的结果或拷贝的结果之后,还包括:上位机查询软件版本号判断刷写是否成功。

具体的,上位机向ECU发送查询软件版本号指令,ECU上报当前的软件版本号,上位机判断当前软件版本号是否与所需软件版本号一致。若一致,则应用程序有效区的应用程序升级成功,结束应用程序升级流程;若不一致,则刷写失败,应用程序有效区的应用程序升级失败,上位机重新执行应用程序升级流程。

图5是本发明实施例提供的一种基于UDS协议的双分区升级系统的结构示意图。参见图5,基于UDS协议的双分区升级系统包括:上位机1和电子控制器单元2。

上位机1用于根据车辆信息判断程序是否满足升级条件,查询电子控制器单元2中的应用程序有效区的物理地址,以及应用程序备份区的物理地址,根据查询到的应用程序备份区的物理地址,基于UDS协议将升级后的应用程序下载至应用程序备份区,以及向电子控制器单元2发送指令以执行应用程序升级流程;

电子控制器单元2用于根据上位机1发送的指令将下载至应用程序备份区内的升级后的应用程序移动至应用程序有效区,以完成应用程序有效区的应用程序升级,以及上报查询结果。

进一步的,电子控制器单元2包括闪存内存和随机存取存储器;其中,闪存内存还包括:引导程序区、应用程序有效区和应用程序备份区。引导程序区包括引导程序,引导程序可以用于切换分区和更新应用程序备份区的;应用程序有效区用于使其内部的应用程序可以执行;应用程序备份区可以对应用程序有效区的应用程序进行备份,以及保存所需应用程序的。

具体的,上位机1使用UDS协议与电子控制器单元2进行数据交互,上位机1通过电子控制器单元2的引导程序将升级后的应用程序下载至应用程序备份区内,升级后的应用程序下载完成后,再通过电子控制器单元2的引导程序执行切换分区流程使应用程序备份区切换为应用程序有效区,使应用程序有效区切换为应用程序备份区;或将下载至应用程序备份区中的升级后的应用程序拷贝至应用程序有效区中,以完成应用程序有效区中的应用程序的升级。

本发明实施例中,通过将电子控制器单元的闪存内存分为应用程序有效区和应用程序备份区两个包含应用程序的分区,上位机使用UDS协议将更新后的应用程序下载至应用程序备份区,再通过切换分区流程使更新后的应用程序的存在于应用程序有效区,来实现应用程序有效区的应用程序的更新,避免了刷写中断导致应用程序有效区的应用程序被擦除,提高了汽车软件更新时用户体验的安全性和舒适性。

需要说明的是,本发明所用术语仅为了描述特定实施例,而非限制本申请范围。如本发明说明书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。

还需说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”等应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案。

相关技术
  • 一种基于UDS协议的ECU升级方法、装置、设备及存储介质
  • 一种基于SPI的UDS协议升级方法
技术分类

06120116482691