电子控制单元程序更新方法和装置与流程

文档序号:14940719发布日期:2018-07-13 20:40阅读:214来源:国知局

本发明电子电气领域,尤其涉及一种电子控制单元程序更新方法和装置。



背景技术:

电子控制单元(electroniccontrolunit,ecu),作为汽车的微机控制器,通常可以由cpu、存储器、输入/输出接口、模数转换器以及整型电路、驱动电路等大规模集成电路组成。

在电池管理系统(batterymanagementsystem,bms)或者其它整车ecu出现问题时,通常需要对该批次的ecu进行程序更新。通过对ecu中软件程序的优化更新,可以使发送机在动力性能和友好等方面达到最佳平衡,从而改善动力性能、降低油耗以及达到运行平稳性。

传统的ecu程序更新方法,通常需要工程师到达现场,通过专业下载工具下载更新软件,将下载的更新软件更新至ecu系统。在一些应用场景中,更新ecu时,为了保障安全需要停车,并且需要在整车高压箱附近查找升级接口,对现场工程师的专业能力要求较高;在另一些一个应用场景中,由于车辆分散运营,寻找要进行ecu程序更新的车辆将花费大量时间,如果更新程序较大,需要花费更多的程序更新时间。

因此,传统的ecu程序更新方法,对ecu的更新维护的人工成本和时间成本较高,维护过程效率低下。



技术实现要素:

本发明实施例提供一种电子控制单元程序更新方法和装置,可以提高程序更新效率。

根据本发明实施例的一方面,提供一种电子控制单元程序更新方法,包括:接收下载指令,所述下载指令用于请求下载更新程序至指定的存储区域;获取所述存储区域的两个分区的编码信息,基于所述编码信息,确定所述两个分区作为程序下载区的分区;将所述更新程序下载至所述程序下载区,并更新所述程序下载区的编码信息。

根据本发明实施例的另一方面,提供一种电子控制单元程序更新装置,包括:

下载指令接收模块,用于接收下载指令,下载指令用于请求下载更新程序至指定的存储区域;程序下载区确定模块,用于获取存储区域的两个分区的编码信息,基于编码信息,确定两个分区作为程序下载区的分区;程序下载模块,用于将更新程序下载至程序下载区,并更新程序下载区的编码信息。

根据本发明实施例中的电子控制单元程序更新方法和装置,ecu的存储区域可以分为第一分区和第二分区,两个分区可以实现在一个分区运行程序的同时,另一个分区进行擦除和写操作,通过每个分区的编码可以确定程序的运行区域,并可以在汽车行车过程中,将更新的程序下载到程序下载区,整个过程的操作不需要工程师到车辆现场,并且不需要如现行方案那样要停车下载,极大的提高了程序更新效率。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例中ecu和车载终端的连接关系以及ecu中两个分区的示意图;

图2是示出根据本发明实施例的ecu程序更新方法的流程图;

图3是示出根据本发明示例性实施例更新程序下载时序图;

图4是示出根据本发明另一实施例的程序更新方法的流程图;

图5是示出根据本发明一实施例提供的程序更新装置的结构示意图。

具体实施方式

下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本发明实施例提供了一种ecu程序更新方法和装置,用于ecu程序的更新。例如,可以用于车辆中ecu中程序的更新。

图1为本发明实施例中ecu和车载终端的连接关系以及ecu中两个分区的示意图。如图1所示,ecu可以通过can总线与车载终端连接,程序通过无线通信技术远程传输到车载终端,再由车载终端通过与ecu的传输协议,将程序下载到ecu中。

继续参考图1,在本发明实施例中,ecu使用的单片机等设备中的存储区域可以被设置第一分区和第二分区,实现在一个分区运行程序的同时,另一个分区进行擦除和写操作。具体地,被配置为下载程序的分区为程序下载区,被配置为运行程序的区域为程序运行区。当车辆处于运行状态即行驶状态中,程序运行区中的程序也处于运行状态。

在本发明实施例中,程序下载区和程序运行区相互作用,可以实现写时读(read-while-writing,rww),在车辆行驶过程中,运行ecu中程序的同时,也能够实现更新程序的下载,从而加快电子控制单元的程序的整个更新过程,并且,整个过程的操作不需要工程师到车辆现场。

为了更好的理解本发明,下面将结合附图,详细描述根据本发明实施例的ecu程序更新方法,应注意,这些实施例并不是用来限制本发明公开的范围。

图2是示出根据本发明实施例的ecu程序更新方法的流程图。如图2所示,本发明实施例中的程序更新方法100包括以下步骤:

步骤s110,接收下载指令,下载指令用于请求下载更新程序至指定的存储区域。

在该步骤中,该指定的存储区域可以是闪存(flashmemory),在下述实施例的描述中,也可以称为是flash数据区域存储,或简称为flash区域。

在该步骤中,ecu可以通过can通讯连接于车载终端,由于整车构造里,已经将车载终端和ecu系统连接,因此无需在ecu的程序升级时额外连线。

步骤s120,获取存储区域的两个分区的编码信息,基于编码信息,确定两个分区作为程序下载区的分区。

在本发明实施例中,存储区域例如flash区域包括第一分区和第二分区,该两个分区可以交替进行程序更新,并通过编码信息进行判断最新的程序运行区域。

在一个实施例中,第一分区的编码信息和第二分区的编码信息,可以保存在flash区域的固定区域中例如非易失性存储器(non-volatilememory,nvm)中。

在一个实施例中,步骤s120具体可以包括:

步骤s121,获取两个分区中第一个分区的编码信息,以及两个分区中第二个分区的编码信息,第一个分区的编码信息用于标识第一个分区的版本,第二个分区的编码信息用于标识第二分区的版本。

步骤s122,比较第一个分区的编码信息和两个分区中第二个分区的编码信息的编码信息大小。

步骤s123,将比较结果中编码信息较大的分区,作为程序运行区,以及将比较结果中编码信息较小的分区,作为程序下载区。

在该实施例中,通过比较flash中两个分区的编码大小,可以确定flash的两个分区中当前程序的较新版本。将具有较新版本区域的分区作为程序运行区,另一个区域作为程序下载区。

在另一个实施例中,如果在车辆行驶过程中对ecu程序进行更新,由于车辆行驶过程中,运行ecu中的程序,因此,可以flash区域的两个分区中程序运行区以外的另一个区域作为程序下载区。

步骤s130,将更新程序下载至程序下载区,并更新程序下载区的编码信息。

为了便于理解,下面结合图3描述根据本发明实施例的步骤s130中将更新程序下载至程序下载区的详细流程图。

图3示出了根据本发明示例性实施例更新程序下载时序图。如图3所示,ecu可以与can设备通过can通讯方式进行通讯,并可以通过can设备接收程序下载指令。一个实施例中,程序更新下载过程中向ecu发送下载和控制指令的设备也可以称为是上位机,作为一个示例,该上位机可以是车载终端或电脑终端。

继续参考图3,在本发明实施例中,ecu与can设备之间,采用xcp通讯协议,采用主从通讯模式,将can设备作为主节点,将待进行程序更新的ecu作为从节点,在can总线的基础上建立主节点和从节点之间的会话连接,并且,为完成主从节点的会话连接,从节点需要对主节点发出的每个指令进行应答。

在一个实施例中,上述步骤s130具体可以包括:

在步骤s131,接收更新程序的下载启动命令,确定用于接收更新程序的通讯连接是否正常。

作为一个示例,can设备向ecu发送下载启动program_start命令,ecu接收到program_start命令后,判断用于接收更新程序的通讯连接是否正常。

作为一个示例,当确定通讯连接正常时,ecu可以生成表示通讯连接正常的响应resp消息,将该resp消息发送给can设备。

作为一个示例,当确定通讯连接异常时,ecu可以生成wifi异常连接响应,并将该wifi异常连接响应发送给can设备。

作为一个示例,该通讯连接可以是无线局域网通信技术wifi等可以是远程通信技术。

在步骤s132,在通讯连接正常的情况下,通过指定的数据保护机制,确定执行更新程序的下载是否符合安全访问要求。

具体地,步骤s132具体可以包括:

步骤s132-01,接收请求种子getseed命令,生成getseed命令请求的种子,通过肯定响应报文反馈该种子。

在该步骤中,getseed即为请求种子命令,用来使can设备向ecu获取种子。

作为一个示例,getseed命令可以包含对ecu的功能请求,作为一个示例,getseed命令包含对刷写功能进行访问请求。

步骤s132-02,接收通过密钥解锁unlock命令发送的密钥,密钥是由种子接收端根据接收的种子利用安全访问算法生成的。

在该步骤中,unlock命令即为密钥解锁命令,用于使can设备根据请求的种子生成的密钥发送至ecu。

步骤s132-03,根据生成的种子计算安全验证密钥,当计算得到的安全验证密钥与所述接收的密钥一致时,确定执行下载是否符合安全访问要求。

在该步骤中,在ecu判定接收的密钥和利用自身的安全访问算法计算得到的密钥进行比较,并在两个密钥相同时认定安全访问通过,并在从而向can设备发送密钥正确肯定响应。

继续参考图3,在该实施例中,can设备可以向ecu发送getseed命令,ecu接收到getseed命令后,将种子通过对getseed命令的肯定响应报文反馈给该can设备;can设备接收通过该肯定响应报文反馈的种子,利用安全访问算法生成该种子对应的密钥,将该密钥通过unlock命令发送至该ecu;ecu接收can设备通过unlock命令发送的密钥,并根据接收到的该密钥计算安全验证密钥,并比较接收到的密钥和自身侧产生的安全验证密钥是否一致。

具体地,当接收到的密钥和自身侧产生的安全验证密钥一致时,可以将ecu的刷写功能状态转变为解锁状态,即确定执行在ecu中下载更新程序符合安全访问要求,并且ecu可以生成表示下载符合或安全访问要求的响应发送给can设备。

具体地,当接收到的密钥和自身侧产生的密钥不一致时,ecu可以生成表示下载不符合安全访问要求的否定响应发送给can设备。

在步骤s133,确定执行下载符合安全访问要求时,获取更新程序的请求擦除地址。

在步骤s134,当请求擦除地址在指定的存储区域中代码段地址范围内,并且程序运行区的当前程序运行状态正常时,获取更新程序的请求下载地址。

在该步骤中,程序在程序运行区正常执行的时候,可以擦除程序下载区的当前程序,并且把更新的数据存储到这个程序下载区。

作为一个示例,can设备可以向ecu发送程序擦除program_clear命令,该命令用于请求擦除ecu中程序下载区的当前程序,ecu接收该program_clear命令后,需要确定请求擦除的地址是否在flash区域的代码段地址范围内。

具体地,如果请求擦除的地址是flash区域代码段地址,则ecu可以生成表示擦除区域正确的肯定响应报文发送给can设备;如果请求擦除的地址非flash区域代码段地址,则ecu可以生成表示擦除区域不正确的否定响应报文发送给can设备,以避免误擦除,保证数据安全性。

在步骤s135,基于请求下载地址,将更新程序下载至程序下载区。

具体地,步骤s135中,具体可以包括:

步骤s135-01,获取下载指令中的请求下载地址,请求下载地址用于指示两个分区中下载指令所请求的分区的地址。

步骤s135-02,请求下载地址与程序下载区的地址相同时,将更新程序写入程序下载区。

步骤s135-03,请求下载地址与程序下载区的地址不同时,对请求下载地址进行地址偏移计算,得到与程序下载区的地址相同的请求下载地址。

步骤s135-04,根据地址偏移计算后的请求下载地址,将更新程序写入程序下载区。

作为一个示例,继续参考图3,ecu接收程序写入program命令,并判定程序写入的区域地址是否与程序下载区域地址一致,如果不一致,通过对program命令中请求的程序写入的区域地址进行地址偏移计算。

在该步骤中,由于更新程序的请求下载地址是在对更新程序进行编译生成的文件中预先写入的,因此,执行更新程序下载时,需要确定预先写入的请求下载地址,与实际是程序下载区的地址是否相同,如果不同,需要进行上述地址偏移计算。

在一个示例中,该更新程序编译生成的文件可以是hex的文件格式。

在一些实施例中,根据要刷写的程序的数量,可以继续通过继续写入program_next命令,依次将多个更新程序写入到程序下载区。直到ecu根据接收到的下载结束program_reset命令,确定所有的更新程序都下载成功时,向can设备发送下载成功的报文。

图4示出了根据本发明另一实施例的程序更新方法的流程图。图4与图2相同或等同的步骤使用相同的编号。图4与图2基本相同,不同之处在于,如图4所示,在本发明实施例中,程序更新方法200还可以包括:

步骤s140,ecu重新上电时,运行软件引导加载程序bootloader,在bootloader中,基于两个分区的编码信息,确定两个分区作为程序运行区的第一分区和作为程序下载区的第二分区;

在该步骤中,bootloader可以用于在应用程序之前运行,用于启动和加载应用程序的一段代码,是系统开发的关键步骤。它一方面提供程序下载和更新功能,另一方面为程序调试和扩展提供方便。

并且,can总线通信方式,使得bootloader可以直接通过can总线进行通信,在具备较强抗干扰能力的同时,使用起来也更加灵活。

步骤s150,校验第一分区的程序是否正确,当校验结果为程序下载区的程序正确时,软件引导加载程序引导电子控制单元执行第一分区的当前程序。

在该步骤中,bootloader先读取第一个分区的编码信息和第二个分区的编码信息,根据编码大小判断具有最新版本程序的分区,从而将应用程序的跳转地址指向具有最新版本程序的分区,经将该具有最新版本程序的分区,作为当前的程序运行区。

步骤s160,当校验结果为第一分区的程序发生异常时,软件引导加载程序引导电子控制单元执行第二分区的当前程序,并且

更新第二分区的编码信息,更新的第二分区的编码信息大于第一分区的编码信息。

作为一个示例,程序下载结束后,当ecu重新上电,当第一分区编码较大,即程序更新较新,则bootloader跳转到第一分区,将第一分区作为程序运行区;继续判断第一分区的程序进行完整性校验,如果程序校验错误,则bootloader跳转到第二分区,将第二分区作为程序运行区,同时更新第二分区的编码至最大,而第一分区用于下一次程序更新时的下载区域。

根据本发明实施例的ecu程序更新方法,程序下载可以在行车过程进行,不需要停车下载,极大提高售后维护效率及客户体验。

下面以一具体示例来进行说明。假设更新程序占用的控件为1mb。在现有技术中,程序更新过程中处于停车状态(在停车状态下需要进行更新程序的下载、原程序的擦除和更新程序的写入)的时长约为5分钟至10分钟;在本发明实施例中,程序更新过程可以在行车过程中进行,并且,可以将最终的升级时间降低到秒级。本发明实施例与现有技术相比,处于停车状态的时长大幅度缩短,大幅度提高了ecu的程序更新效率。

下面结合附图,详细介绍根据本发明实施例的程序更新装置。

图5示出了根据本发明一实施例提供的程序更新装置的结构示意图。如图5所示,程序更新装置400包括:

下载指令接收模块410,用于接收下载指令,下载指令用于请求下载更新程序至指定的存储区域;

程序下载区确定模块420,用于获取存储区域的两个分区的编码信息,基于编码信息,确定两个分区作为程序下载区的分区;

程序下载模块430,用于将更新程序下载至程序下载区,并更新程序下载区的编码信息。

根据本发明实施例的程序更新装置,ecu的存储区域可以分为第一分区和第二分区,两个分区可以实现在一个分区运行程序的同时,另一个分区进行擦除和写操作。通过编码方式进行判断最新的程序运行区域,在汽车行车过程中,在当前的程序下载区进行程序的更新,整个过程的操作不需要工程师到车辆现场,并且不需要如现行方案那样要停车下载,极大的提高了程序更新效率。

在一个实施例中,程序下载区确定模块420可以包括:

编码获取单元,用于获取两个分区中第一个分区的编码信息,以及两个分区中第二个分区的编码信息,第一个分区的编码信息用于标识第一个分区的版本,第二个分区的编码信息用于标识第二分区的版本。

编码比较单元,用于比较第一个分区的编码信息和两个分区中第二个分区的编码信息的编码信息大小。

程序下载区确定模块还用于将比较结果中编码信息较大的分区,作为程序运行区,以及将比较结果中编码信息较小的分区,作为程序下载区。

在一个实施例中,程序下载模块430具体可以包括:

通讯连接状态确定单元431,用于接收更新程序的下载启动命令,确定用于接收更新程序的通讯连接是否正常;

安全访问确定单元432,用于在通讯连接正常的情况下,通过指定的数据保护机制,确定执行更新程序的下载是否符合安全访问要求;

请求擦除地址获取单元433,用于确定执行下载符合安全访问要求时,获取更新程序的请求擦除地址;

请求下载地址获取单元434,用于当请求擦除地址在指定的存储区域中代码段地址范围内,并且程序运行区的当前程序运行状态正常时,获取更新程序的请求下载地址;

程序下载模块430还用于基于请求下载地址,将更新程序下载至程序下载区。

在一个实施例中,安全访问确定单元432具体可以用于:

接收请求种子getseed命令,生成getseed命令所请求的种子,通过肯定响应报文反馈种子;接收通过密钥解锁unlock命令发送的密钥,密钥是由种子接收端根据接收的种子利用安全访问算法生成的;根据生成的种子计算安全验证密钥,当计算得到的安全验证密钥与接收的密钥一致时,确定执行下载是否符合安全访问要求。

在一个实施例中,程序下载模块430具体还用于:

请求下载地址与程序下载区的地址相同时,将更新程序写入程序下载区;请求下载地址与程序下载区的地址不同时,对请求下载地址进行地址偏移计算,得到与程序下载区的地址相同的请求下载地址;根据地址偏移计算后的请求下载地址,将更新程序写入程序下载区。

在该实施例中,当请求下载地址不同于程序下载区地址时,通过地址偏移可以找到准确的更新程序写入地址。

在一个实施例中,程序下载模块430具体还用于:

当确定通讯连接异常,或者,当执行下载不符合安全访问要求,或者,当下载地址为存储区域中代码段地址之外的地址时,或者,当程序运行区的程序运行状态出现异常时,生成异常报文,异常报文被用于拒绝下载指令。

根据本发明实施例的程序更新装置的其他细节与以上结合图1至图3描述的根据本发明实施例的程序更新方法类似,在此不再赘述。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品或计算机可读存储介质的形式实现。所述计算机程序产品或计算机可读存储介质包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。

以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1