一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

主ECU和子ECU的程序升级方法、主ECU和系统与流程

2022-02-20 05:35:17 来源:中国专利 TAG:

主ecu和子ecu的程序升级方法、主ecu和系统
技术领域
1.本发明涉及软件升级领域,尤其涉及一种主ecu和子ecu的程序升级方法和系统。


背景技术:

2.随着汽车整车功能的更新升级或某些特殊原因,单个ecu(electronic control unit,电子控制单元)已经不足以支持整车某些功能的需求。例如,商用车由于车身过大,如果直接通过硬线采集转速、压力等信息,信号精度损失过大,通常需要通过主ecu与桥控ecu(即子ecu)共同控制,保证信号采集与控制命令执行的准确性。
3.由于子ecu并不需要与整车其他ecu进行通讯,通常子ecu仅以私有can(controller area network,控制器局域网络)网络与主ecu进行通讯,这就导致了子ecu只能通过另引can线或拆除外壳后用调试器的方式进行程序升级,此种方式可能会损坏can线接口或者控制器的外壳外观,给售后工作带来了不便。
4.有鉴于此,特提出本发明。


技术实现要素:

5.为了解决上述技术问题,本发明提供了一种主ecu和子ecu的程序升级方法、主ecu和系统,以共用一对诊断id实现主ecu和子ecu的程序升级。
6.本发明实施例提供了一种主ecu和子ecu的程序升级方法,适用于主ecu,该方法包括:主ecu接收上位机传输的诊断报文,所述诊断报文至少包括第一诊断id;所述主ecu判断预先设置的透传标识所对应的模式;如果所述透传标识对应主ecu模式,所述主ecu通过与所述上位机之间的公有can网络返回包括第二诊断id的响应报文,并进行程序升级;如果所述透传标识对应子ecu模式,所述主ecu通过与子ecu之间的私有can网络将所述诊断报文转发至所述子ecu,以供所述子ecu通过所述私有can网络以及所述公有can网络返回包括第二诊断id的响应报文,并进行程序升级。
7.本发明实施例提供了一种主ecu和子ecu的程序升级系统,所述系统包括:所述上位机用于向主ecu传输诊断报文,所述诊断报文至少包括第一诊断id;所述主ecu用于根据所述第一诊断id接收所述诊断报文,并判断预先设置的透传标识所对应的模式;如果所述透传标识对应主ecu模式,所述主ecu通过与所述上位机之间的公有can网络向上位机发送包括第二诊断id的响应报文,并进行程序升级。如果所述透传标识对应子ecu模式,所述主ecu通过与子ecu之间的私有can网络将所述诊断报文转发至所述子ecu;所述子ecu用于通过所述私有can网络以及所述公有can网络向所述上位机发送包括第二诊断id的响应报文,并进行程序升级。
8.本发明实施例提供了一种主ecu,包括:
处理器和存储器;所述处理器通过调用所述存储器存储的程序或指令,用于执行任一实施例所述的主ecu和子ecu的程序升级方法的步骤。
9.本发明实施例具有以下技术效果:通过设置透传标识以及对应的主ecu模式和子ecu模式,从而在主ecu接收到诊断报文时,能够根据预先设置的模式选择自己升级还是转发给子ecu。对于子ecu来说,通过与主ecu之间的私有can网络以及公有can网络与上位机进行交互,进行程序升级,克服了子ecu必须通过另引can线或拆除外壳后通过调试器升级的问题,进而达到了上位机通过主can可选性升级主/子ecu的效果。而且,通过识别透传标志选择上位机需通讯的ecu对象,主/子ecu可以共用一对诊断id,达到了在后装市场中,不需要考虑诊断id冲突的问题,仅用原有的一对诊断id即可完成主/子ecu程序升级的效果。
附图说明
10.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
11.图1是本发明实施例提供的一种主ecu和子ecu的程序升级系统的结构示意图;图2是本发明实施例提供的一种主ecu和子ecu的程序升级方法的流程图;图3是本发明实施例提供的主ecu和子ecu的架构图;图4是本发明实施例提供的设置透传标识的流程示意图;图5是本发明实施例提供的主ecu的结构示意图。
具体实施方式
12.为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行清楚、完整的描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。
13.本发明实施例提供的主ecu和子ecu的程序升级方法,主要适用于对车辆内的主ecu和子ecu进行升级的情况。本发明实施例提供的主ecu和子ecu的程序升级方法可以由主ecu执行。为了便于描述本发明实施例提供的方法,首先描述其适用的主ecu和子ecu的程序升级系统,参见图1,该系统包括上位机、主ecu和子ecu。上位机又称为诊断仪,与主ecu通过公有can网络通信连接,子ecu与主ecu通过私有can网络通信连接。
14.结合图1,图2是本发明实施例提供的一种主ecu和子ecu的程序升级方法的流程图,具体包括:s110、主ecu接收上位机传输的诊断报文,所述诊断报文至少包括第一诊断id(identity document,身份标识)。
15.上位机通过公有can网络向主ecu传输诊断报文。整车环境中,上位机与各ecu分别约定固定的诊断id对(包括请求时的第一诊断id和响应时的第二诊断id),以与各ecu进行物理寻址(即一对一的通讯方式)通讯。主ecu通过第一诊断id识别是否为上位机发给自己
的报文。上位机通过第二诊断id识别是否为主ecu返回的响应报文。本实施例中的诊断报文满足uds(unified diagnostic services,统一诊断服务)的规范要求,具体参见iso14229协议,此处不在赘述。
16.第一/第二诊断id为can帧id。
17.s120、主ecu判断预先设置的透传标识所对应的模式。如果透传标识对应主ecu模式,跳转到s130;如果透传标识对应子ecu模式,跳转到s150。
18.主ecu解析第一诊断id与自身的物理地址对应,则接收诊断报文,否则舍弃诊断报文。
19.主ecu中预先设置有透传标识,例如透传标识可以是0或者1,0对应主ecu模式,1对应子ecu模式。主ecu接收到诊断报文后,根据所述透传标识与模式的对应关系,判断当前是主ecu模式或者子ecu模式。如果判定透传标识对应主ecu模式,表示上位机需要升级主ecu;如果判定透传标识对应子ecu模式,表示上位机需要升级子ecu。
20.s130、主ecu通过与所述上位机之间的公有can网络向所述上位机发送包括第二诊断id的响应报文,并进行程序升级。结束本次操作。
21.上位机收到响应报文后,相当于得到了主ecu的肯定响应,进而通过公有can网络与主ecu交互,进行程序升级。
22.s150、主ecu通过与子ecu之间的私有can网络将所述诊断报文转发至所述子ecu,以供子ecu通过所述私有can网络以及所述公有can网络向上位机发送包括第二诊断id的响应报文,并进行程序升级。
23.子ecu接收到诊断报文后,首先通过私有can网络向主ecu向所述上位机发送包括第二诊断id的响应报文。主ecu通过公有can网络将该响应报文转发至上位机。上位机收到响应报文后,相当于得到了子ecu的肯定响应,进而通过公有can网络和私有can网络与子ecu交互,进行程序升级。
24.本实施例通过设置透传标识以及对应的主ecu模式和子ecu模式,从而在主ecu接收到诊断报文时,能够根据预先设置的模式选择自己升级还是转发给子ecu。对于子ecu来说,通过与主ecu之间的私有can网络以及公有can网络与上位机进行交互,进行程序升级,克服了子ecu必须通过另引can线或拆除外壳后通过调试器升级的问题,进而达到了上位机通过主can可选性升级主/子ecu的效果。而且,主ecu与子ecu不会同时与上位机建立连接,通过识别透传标志选择上位机需通讯的ecu对象,主/子ecu可以共用一对诊断id,达到了在后装市场中,不需要考虑诊断id冲突的问题,仅用原有的一对诊断id即可完成主/子ecu程序升级的效果。
25.在上述实施例和下述实施例中,图3是本发明实施例提供的主ecu和子ecu的架构图。主ecu和子ecu都是基于autosar(汽车开放系统)结构的工程,通过mcal(微处理器驱动层)、canif(can接口)、cantp(can传输协议层)、pdur(路由)、dcm(诊断通讯)、com(通讯管理)、rte(运行环境)及swc(软件组件)模块分层处理来自上位机的诊断报文,完成程序升级的操作。其中,由主ecu中的canif模块判断透传标识对应的模式,如果对应子ecu模式,主ecu中的canif模块将所述诊断报文传递给主ecu的mcal模块,主ecu的mcal模块通过所述私有can网络将所述诊断报文转发至所述子ecu。子ecu中的canif模块将所述响应报文传递给子ecu的mcal模块,子ecu的mcal模块通过所述私有can网络以及所述公有can网络向所述上
位机发送包括第二诊断id的响应报文,并进行程序升级。
26.本实施例基于autosar软件架构实现功能,mcal模块配置各外设的驱动,通过配置好的can驱动可实现can报文的接收与发送。canif模块从mcal模块提取报文(即满足需求can帧id的报文)的接收以及将需要发送的报文传递给mcal模块。cantp模块负责实现iso15765-2规范对诊断报文的传输层要求。pdur模块根据设置将报文传递给dcm(或com)模块以及接收来自dcm(或com)模块的报文。dcm模块负责对接收到的诊断命令进行判断,并作出响应,在需要的时候,可以通过rte(运行环境)调用swc中的runable(即函数),完成数据的读取(例如读取版本号)和写入(例如写入刷写日期)等。com模块负责其他非诊断报文的接收与发送处理。swc模块可根据需求创建需要的runnable(即函数),在本实施例中创建了数据读取、写入以及判断是否需要退出子ecu模式的runnable。
27.本实施例基于autosar软件架构的canif模块作为中转节点,配合透传标志,实现上位机与子ecu的诊断通信连接。总而言之,dcm模块负责透传标识的设置,主ecu的canif模块用于判断透传标识。主ecu模式下,主ecu的canif模块将诊断报文传输给主ecu自身的cantp模块,经cantp

pdur

dcm处理命令,响应即是经由dcm

pdur

cantp

canif

mcal,最终将响应报文传递给公有can网络的上位机。子ecu模式下,主ecu的canif模块将诊断报文通过私有can传输给子ecu,子ecu通过mcal

canif

cantp

pdur

dcm处理命令,响应即是经由dcm

pdur

cantp

canif

mcal模块。子ecu通过mcal模块向主ecu发送响应报文。主ecu接收到子ecu的响应报文后,再传输给公有can网络的上位机。
28.上述实施例中提到,主ecu中预先设置有透传标识。在实际应用中,默认为主ecu模式,即主ecu中初始(例如上电或者重启时)的透传标识对应主ecu模式。这样可保障整车优先满足对主ecu的诊断服务及程序升级的功能需求。如果所述上位机需要对子ecu进行程序升级,需要根据uds例程服务将所述主ecu中初始的透传标识切换为对应子ecu模式的透传标识。
29.如上autosar各功能模块描述,上位机将第一诊断id的诊断报文(或称为诊断请求报文)发到can网络中,mcal模块接收can网络中的诊断报文,历经canif、cantp、pdur模块,最终传递至dcm模块,由dcm模块对该诊断报文做出判断并发出响应命令,再历经pdur、cantp、canif,最终由mcal模块发出第二诊断id的响应报文,传递给can网络中的上位机。
30.在一具体实施方式中,为了保证切换过程的安全性。上位机在切换透传标识之前,请求所述主ecu进入扩展会话,对主ecu进行安全算法校验。校验通过后才会切换透传标识。这样可以防止部分误操作进入子ecu模式。
31.结合图4,在默认的主ecu模式中,上位机发送进入扩展会话的请求报文,如上所述,dcm模块接收到请求报文后,判断是否满足条件,若满足则进入扩展会话并发出肯定响应命令,若不满足则发出否定响应命令,最终由mcal模块发出第二诊断id的响应报文;进入扩展会话后,上位机以第一诊断id发送请求校验算法的请求报文,如上所述,dcm模块接收到请求报文后,会计算出一个“算法种子”传递给mcal模块,mcal模块会以第二诊断id发出包含“算法种子”的响应报文,上位机接收到包含“算法种子”的响应报文,并根据“算法种子”按照约定的算法计算出“算法密钥”,并以第一诊断id发出包含“算法密钥”的请求报文,再由dcm模块判断“算法密钥”是否满足约定算法,若满足,则安全算法校验通过,否则不通过。安全算法校验通过后,上位机以第一诊断id发出例程服务的请求报文,如上所述,dcm模
块接收到请求报文后,根据报文格式及内容判断是否满足约定要求,若满足则根据内容将透传标识设置为目标模式(即子ecu模式),并发出响应命令,再由mcal模块以第二诊断id发出响应报文。
32.在一些情况下,需要从子ecu模式切换到主ecu模式,这步切换由子ecu控制。具体而言,在所述子ecu通过所述私有can网络以及所述公有can网络向所述上位机发送包括第二诊断id的响应报文,并进行程序升级之后,子ecu判断是否满足子ecu模式的退出条件,或者诊断会话是否超时。子ecu完成程序升级后判定满足子ecu模式的退出条件。若子ecu诊断会话超时(即超过规定时间未接收到来自上位机的诊断请求报文,通常时间为5s),子ecu会恢复至默认会话,若当前子ecu处于编程会话,子ecu会进行复位,动作完成后,子ecu向主ecu发送退出指令。
33.在一些具体实施方式中,首先判断是否满足子ecu模式的退出条件,如果满足则向主ecu发送退出指令;如果不满足进一步判断诊断会话是否超时,如果超时子ecu则会恢复至默认会话,完成后向主ecu发送退出指令。主ecu响应于退出指令,将所述透传标识切换为对应主ecu模式的透传标识。值得说明的是,子ecu模式时,主ecu已经无法解析包括第一诊断id的诊断报文,子ecu通过第一诊断id之外的特殊id发送退出子ecu模式的指令(即退出指令)到主ecu,来退出子ecu模式。
34.在一些实施例中,在所述子ecu通过所述私有can网络以及所述公有can网络向所述上位机发送包括第二诊断id的响应报文,并进行程序升级之后,可知当前为子ecu模式,则子ecu重启(主ecu不需要重启)后,子ecu向所述主ecu发送退出指令;所述主ecu响应于所述退出指令将所述透传标识切换为对应主ecu模式的透传标识,从而保证初始时为主ecu模式。
35.在设置完透传标识之后,下面详细介绍主ecu和子ecu的响应和程序升级过程。具体包括以下两步。
36.第一步:主ecu模式下,主ecu通过与上位机之间通过公有can网络进行交互。在子ecu模式下,以主ecu为中转节点,子ecu与所述上位机通过所述私有can网络以及公有can网络进行交互。主ecu模式下,上位机通过公有can网络验证主ecu的零件号和安全访问算法;子ecu模式下,上位机通过所述私有can网络以及所述公有can网络验证所述子ecu的零件号和安全访问算法。上位机需要根据零件号判断是否为需要升级的目标ecu,如果是,才会进行后续操作,否则中断操作。子ecu和主ecu的零件号不同,可以增加主/子ecu模式切换升级的容错性。
37.可选的,零件号验证通过后,进入bootloader(引导程序)的编程会话,在编程会话下进行安全访问算法的校验。因为后续的操作是对flash(闪存)进行擦除和刷写,此步骤可防止误操作而导致的flash紊乱,同时主/子ecu的算法差异设置,当满足各自的算法校验后,才可进行后续的flash擦除和刷写操作,此步骤可增加主/子ecu切换升级的的容错性。
38.第二步:验证通过后,主ecu模式下,上位机通过公有can网络对主ecu进行程序升级。具体的,上位机通过公有can网络检测需要擦除的程序起始地址和需要刷写的程序区间是否被所述主ecu允许。如果被允许,所述上位机通过公有can网络,按照所述程序起始地址和程序区间向所述主ecu(的flash)写入程序。子ecu模式下,上位机通过私有can网络以及所述公有can网络对所述子ecu进行程序升级。具体的,上位机通过私有can网络和公有can
网络检测需要擦除的程序起始地址和需要刷写的程序区间是否被所述子ecu允许。如果被允许,所述上位机通过私有can网络和公有can网络,按照所述程序起始地址和程序区间向所述子ecu(的flash)写入程序。其中,所述子ecu和主ecu中允许被擦除的程序起始地址不同,所述子ecu和主ecu中允许被刷写的程序区间不同,这种设置可增加主/子ecu切换升级的的容错性。
39.上位机检测程序是否刷写完成,如果完成则请求退出刷写流程。
40.接着,上位机向本次升级的主/子ecu内写入上位机设备名、下载日期等信息,以便后续追溯。
41.本发明实施例还提供一种主ecu,图5为本发明实施例提供的一种电子设备的结构示意图。如图5所示,电子设备500包括一个或多个处理器501和存储器502。
42.处理器501可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备500中的其他组件以执行期望的功能。
43.存储器502可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器501可以运行所述程序指令,以实现上文所说明的本发明任意实施例的主ecu和子ecu的程序升级方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如初始外参、阈值等各种内容。
44.在一个示例中,电子设备500还可以包括:输入装置503和输出装置504,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。该输入装置503可以包括例如键盘、鼠标等等。该输出装置504可以向外部输出各种信息,包括预警提示信息、制动力度等。该输出装置504可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
45.当然,为了简化,图5中仅示出了该电子设备500中与本发明有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备500还可以包括任何其他适当的组件。
46.除了上述方法和设备以外,本发明的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本发明任意实施例所提供的主ecu和子ecu的程序升级方法的步骤。
47.所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本发明实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c 等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
48.此外,本发明的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本发明任意实施例所提供的主ecu和子ecu的程序升级方法的步骤。
49.所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
50.需要说明的是,本发明所用术语仅为了描述特定实施例,而非限制本技术范围。如本发明说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。
51.还需说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”等应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
52.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献