发明内容
鉴于上述,本发明旨在提供一种整车OTA并行刷写升级方法、装置、设备及存储介质,以解决前述提及的技术问题。
本发明采用的技术方案如下:
第一方面,本发明提供了一种整车OTA并行刷写升级方法,其中包括:
T-box从平台获取需刷写升级的各ECU的升级包版本;
对所述升级包版本进行解封,从中提取刷写升级所需信息;
基于所述刷写升级所需信息,将所属同一个域或跨域的多个ECU封装成一个报文;
将所述报文发至网关进行第一解析,提取出全域I D或域间I D;
网关根据全域I D或域间I D将所述报文传输到目标域的总线中,并输送至对应的各ECU;
各ECU在确定所述报文完整后,对所述报文进行第二解析,并从中提取出ECU的I D信息;
在判定所述I D信息与自身的I D相符后,ECU利用所述报文执行刷写升级操作。
在其中至少一种可能的实现方式中,所述将所属同一个域或跨域的多个ECU封装成一个报文包括:
在将原文件格式转换为预设文件格式后,将所属同一个域或跨域的预设数量的多个ECU封装成一个报文,其中所述预设数量基于所述报文类型确定。
在其中至少一种可能的实现方式中,所述在判定所述I D信息与自身的I D相符后,ECU利用所述报文执行刷写升级操作包括:
ECU检验所述I D信息是否与自身I D匹配;
若否,则丢弃所述报文;
若是,则从所述报文中提取出当前ECU的数据偏移地址以及数据长度信息,基于所述数据偏移地址和所述数据长度信息执行刷写升级操作。
在其中至少一种可能的实现方式中,确定所述报文是否完整的方式包括:判断所述报文当前帧的所有数据的累加和是否等于所述报文最后一个字节设置的校验值。
在其中至少一种可能的实现方式中,所述提取刷写升级所需信息包括:在解压缩的升级包的原文件格式基础上,提取需刷写的各ECU地址和刷写数据的长度信息。
在其中至少一种可能的实现方式中,所述报文为CANFD报文,且所述CANFD报文的结构包括如下字段:
CAN I D字段,用于标识全域I D或域间I D的信息;
数据长度代码字段,用于表征数据字段的总字节数;
数据字段,分为ECU数量、ECU地址域、ECU数据。
在其中至少一种可能的实现方式中,每个ECU地址域具有三个字节,分别用于表征当前ECU的I D信息、数据偏移地址以及数据长度。
第二方面,本发明提供了一种整车OTA并行刷写升级装置,其中包括:
升级包获取模块,用于T-box从平台获取需刷写升级的各ECU的升级包版本;
升级信息提取模块,用于对所述升级包版本进行解封,从中提取刷写升级所需信息;
报文封装模块,用于基于所述刷写升级所需信息,将所属同一个域或跨域的多个ECU封装成一个报文;
第一解析模块,用于将所述报文发至网关进行第一解析,提取出全域I D或域间ID;
报文发送模块,用于网关根据全域I D或域间I D将所述报文传输到目标域的总线中,并输送至对应的各ECU;
第二解析模块,用于各ECU在确定所述报文完整后,对所述报文进行第二解析,并从中提取出ECU的I D信息;
刷写升级模块,用于在判定所述I D信息与自身的I D相符后,ECU利用所述报文执行刷写升级操作。
第三方面,本发明提供了一种电子设备,其中包括:
一个或多个处理器、存储器以及一个或多个计算机程序,所述存储器可以采用非易失性存储介质,其中所述一个或多个计算机程序被存储在所述存储器中,所述一个或多个计算机程序包括指令,当所述指令被所述设备执行时,使得所述设备执行如第一方面或者第一方面的任一可能实现方式中的所述方法。
第四方面,本发明提供了一种计算机数据存储介质,其中,所述计算机数据存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得计算机执行如第一方面或者第一方面的任一可能实现方式中的所述方法。
本发明的主要设计构思在于,T-box中的OTA升级主控模块按照广播域(对应全域)或不同的若干个域(对应域间),将需刷写升级的一个或多个域的多个ECU封装成一个报文并向网关进行传输,处于网关的OTA升级代理模块解析报文中由I D标识的广播域或各域的地址,并分发到对应的广播域或各域的ECU;承载在各ECU中的升级从控模块将收到的报文进行解析,若其中ECU的I D信息与自身I D相同,则升级刷写。本发明通过一个报文即能够实现预设数量的多个ECU的并行刷写,相比串行刷写既大大缩短了刷写升级时间,又减少了报文在总线中的传输量,避免了总线负载过重的问题,从而实现域间、域内各ECU部件同步进行升级刷写,升级速度得到显著提升,极大改善了整车OTA升级刷写的效率。
具体实施方式
下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本发明提出了一种整车OTA并行刷写升级方法的实施例,具体来说,如图1所示,其中包括:
步骤S1、T-box从平台获取需刷写升级的各ECU的升级包版本;
具体地,可以通过OTA升级主控模块,以有线(如以太网)或无线通信方式从TSP云平台接收需刷写升级的各ECU的升级包版本。
步骤S2、对所述升级包版本进行解封,从中提取刷写升级所需信息;
在实际操作中,可以由OTA升级主控模块解封并解压各ECU的升级包版本,在升级包的原文件S19/HEX格式基础上提取需刷写的各ECU地址和刷写数据的长度信息。
步骤S3、基于所述刷写升级所需信息,将所属同一个域或跨域的预设数量的多个ECU封装成一个报文;
具体地,OTA升级主控模块可以先将原文件格式转换为预设文件格式(B I N)后,再将所属同一个域或跨域的五个ECU封装成一个CANFD报文。
步骤S4、将所述报文发至网关进行第一解析,提取出全域I D或域间I D;
如前所述,在封装为一个报文后(可以理解地,当需要对更多的ECU进行刷写升级时,可以封装为多个报文,每个报文包含预设数量的多个ECU),OTA升级主控模块通过总线将报文发送至网关的OTA升级代理模块,OTA升级代理模块进行报文解析,提取报文中的全域I D或域间I D,锁定需分发的目标。
步骤S5、网关根据全域I D或域间I D将所述报文传输到目标域的总线中,并输送至对应的各ECU;
步骤S6、各ECU在确定所述报文完整后,对所述报文进行第二解析,并从中提取出ECU的I D信息;
在实际操作中,各ECU的OTA升级从控模块从总线中获取报文并判断该报文帧是否完整(例如,CANFD最后一个字节为CRC校验值,如果将该帧所有数据进行累加和,等于该CRC值则表征为该帧完整),在确定报文完整无误后,将该报文进行本地解析,并提取该报文中的ECU I D。
步骤S7、在判定所述I D信息与自身的I D相符后,ECU利用所述报文执行刷写升级操作。
具体而言,ECU检验所述I D信息是否与自身I D匹配,若否,则丢弃所述报文;若是,则进一步从所述报文中提取出当前ECU的数据偏移地址以及数据长度信息,基于所述数据偏移地址和所述数据长度信息执行刷写升级操作。
为了便于理解前述各个实施例,下述结合实例以及图2进行具体说明。本发明主要涉及由TBOX承载的OTA升级主控模块(UMC)、由网关(Gateway,GW)承载的OTA升级代理模块(UA)和ECU承载的OAT升级从控模块(USC)。其中,UMC可以用于控制OTA从云端(TSP)获取升级包,并下载升级包、检测升级条件、刷写升级ECU部件、显示下载结果及进度、升级结果及进度等;UA可以用于将升级数据包的数据进行解析并进行通信转发,即将升级数据包分发给对应的ECU;USC可以使各ECU将收到的升级数据包进行解析,判断是否为本ECU所需的升级程序,若是则接收并刷写本ECU,否则将之丢弃。
前述TBOX、网关之间通过CAN总线连接、且网关也通过CAN总线与各域连接,而各域同样通过CAN总线连接各ECU部件。这里提及的整车系统的域一般可分为:动力域、底盘域、车身域、自动驾驶域、信息娱乐域等,各域可以挂接多个ECU部件,各个ECU部件的I D在全域中为唯一标识。
OTA升级主控模块通过以太网或无线通信方式从TSP云平台接收需刷写升级的各ECU的升级包版本,通过解封单元解封解压各ECU的升级包版本,在升级包原文件S19/HEX格式基础上提取需刷写ECU部件的地址和刷写的长度信息,并转换为B I N文件格式后转发至封装单元。封装单元将所属同一个域或跨域的多个ECU(同一CANFD帧不超过五个ECU)封装成一个CANFD报文,并传输至发送单元,发送单元通过CAN总线将CANFD报文发送至网关的升级代理模块。
OTA升级代理模块的接收单元将接收到的CANFD报文送至解析单元进行报文解析,提取报文中将要发送至该域的全域I D或域间I D,并送至分发单元处理,分发单元按照全域I D或域间I D对应的接口进行报文转发,传输到对应的CAN总线中。
OTA升级从控模块从CAN总线中获取报文并传输至接收单元,接收单元判断该报文帧是否完整(CANFD最后一个字节为CRC校验值,如果将该帧所有数据进行累加和,等于该CRC值则表征为该帧完整),将该报文帧送至解析单元处理,解析单元提取该报文的ECU I D并检验是否与自身ECU I D相匹配,如果不匹配则丢弃该报文,如果匹配,则进一步从CANFD报文中提取该ECU部件所在数据的地址偏移和数据长度,根据数据偏移地址和长度提取数据进行ECU部件的刷写升级操作。
如前所述的,采用CAN总线进行升级程序的传输,也即是采用CANFD报文作为整车系统OTA刷写升级的数据结构,在实际操作中,OTA UMC通过CANFD帧定义全域I D和域间ID,将需刷写升级的一个或多个域的预设数个ECU,封装成一个CANFD报文进行向后传输,这里提及的CANFD报文结构的字段可参考如下:
CAN I D字段,用于标识I D信息——0x7df:全域I D;0x7da:车身域I D;0x7db:信息域I D;0x7dc:底盘域I D;0x7dd:动力域I D;0x7de:自动驾驶域I D。
数据长度代码(DLC)固定为64,表示数据字段为64字节。
CANFD报文数据字段(data)可划分为ECU数量、ECU地址域(I D域)、ECU数据自定义字段(共64字节)。
具体来说,ECU数量占用一个字节,表示当前ECU并行升级个数。当前可并行升级的数量是由所下发的CANFD报文所决定,以64字节而言,ECU个数不超过五个,超过五个则超出了CANFD报文的帧长,即设定CANFD数据区长度为64字节,若ECU数量为六个其报文数据字段会超过64个字节。
ECU地址域根据不同的ECU数量而占用不同字节数量,如只有一个ECU,则占用3个字节,5个ECU占用15个字节,公式为:m个ECU×3字节=3m字节,对应地,各ECU部件索引为在ECU I D域中的位置:0~m-1,即第1个ECU索引为0,依次类推。
以下表为例:
其中,每个ECU地址域占用3个字节,共24比特:例如[23..12]的12个比特表示ECUI D;[11..6]的6比特表示该ECU数据在数据域的起始地址(数据偏移地址),最大偏移地址范围为64字节;[5..0]的6个比特表示该ECU数据长度,最大64个字节。根据标准CAN帧结构,每个ECU I D对应的数据应不小于8字节(如下式:CANFD数据字段64字节-ECU数量字段1个字节-五个ECU×3字节-五个ECU×8字节=剩余8个字节,满足要求)。
所述数据偏移地址表征该ECU的升级程序在CANFD报文的位置,ECU对应的数据偏移地址为=(ECU数量×3)+1+(ECU数据长度×ECU索引),这里的“+1”是指ECU数量字段占一个字段。
例一:如果只有一个ECU,ECU数量为1,数据长度为8~60,该ECU在报文中的偏移地址:1×3+1+(1-1)×8=4。
例二:如果有两个ECU,ECU数量为2,每个ECU的数据长度为24,第1个ECU在报文中的偏移地址:(2×3)+1+(24×0)=7;第2个ECU在报文中的偏移地址:(2×3)+1+(24×1)=7+24=31。
例三:如果有五个ECU,ECU数量为5,每个ECU的数据长度为8,第1个ECU在报文中的偏移地址:(5x 3)+1+(8x 0)=16;第2个ECU在报文中的偏移地址:(5x 3)+1+(8x 1)=16+8=24;第3个ECU在报文中的偏移地址:(5x 3)+1+(8x 2)=16+16=32……以此类推。
综合上述说明,就可以得到全域I D或域间I D、各ECU的I D以及各ECU的数据偏移地址和数据长度的完整信息,即获得向网关传输的CANFD报文。
由前所述,本发明的主要设计构思在于,T-box中的OTA升级主控模块按照广播域(对应全域)或不同的若干个域(对应域间),将需刷写升级的一个或多个域的多个ECU封装成一个报文并向网关进行传输,处于网关的OTA升级代理模块解析报文中由I D标识的广播域或各域的地址,并分发到对应的广播域或各域的ECU;承载在各ECU中的升级从控模块将收到的报文进行解析,若其中ECU的I D信息与自身I D相同,则升级刷写。本发明通过一个报文即能够实现预设数量的多个ECU的并行刷写,相比串行刷写既大大缩短了刷写升级时间,又减少了报文在总线中的传输量,避免了总线负载过重的问题,从而实现域间、域内各ECU部件同步进行升级刷写,升级速度得到显著提升,极大改善了整车OTA升级刷写的效率。
相应于上述各实施例及优选方案,本发明还提供了一种整车OTA并行刷写升级装置的实施例,如图3所示,具体可以包括如下部件:
升级包获取模块1,用于T-box从平台获取需刷写升级的各ECU的升级包版本;
升级信息提取模块2,用于对所述升级包版本进行解封,从中提取刷写升级所需信息;
报文封装模块3,用于基于所述刷写升级所需信息,将所属同一个域或跨域的多个ECU封装成一个报文;
第一解析模块4,用于将所述报文发至网关进行第一解析,提取出全域I D或域间ID;
报文发送模块5,用于网关根据全域I D或域间I D将所述报文传输到目标域的总线中,并输送至对应的各ECU;
第二解析模块6,用于各ECU在确定所述报文完整后,对所述报文进行第二解析,并从中提取出ECU的I D信息;
刷写升级模块7,用于在判定所述I D信息与自身的I D相符后,ECU利用所述报文执行刷写升级操作。
应理解以上图3所示的整车OTA并行刷写升级装置中各个部件的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些部件可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分部件以软件通过处理元件调用的形式实现,部分部件通过硬件的形式实现。例如,某个上述模块可以为单独设立的处理元件,也可以集成在电子设备的某一个芯片中实现。其它部件的实现与之类似。此外这些部件全部或部分可以集成在一起,也可以独立实现。在实现过程中,上述方法的各步骤或以上各个部件可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些部件可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(App l i cat i on Spec i f i c I ntegrated C i rcu i t;以下简称:AS I C),或,一个或多个微处理器(D i gi ta l S i ngna lProcessor;以下简称:DSP),或,一个或者多个现场可编程门阵列(F i e l dProgrammab l e Gate Array;以下简称:FPGA)等。再如,这些部件可以集成在一起,以片上系统(System-On-a-Ch i p;以下简称:SOC)的形式实现。
综合上述各实施例及其优选方案,本领域技术人员可以理解的是,在实际操作中,本发明所涉及的技术构思可适用于多种实施方式,本发明以下述载体作为示意性说明:
(1)一种电子设备。该设备具体可以包括:一个或多个处理器、存储器以及一个或多个计算机程序,其中所述一个或多个计算机程序被存储在所述存储器中,所述一个或多个计算机程序包括指令,当所述指令被所述设备执行时,使得所述设备执行前述实施例或者等效实施方式的步骤/功能。
该电子设备可以理解为一套系统,具体可以拆分为车载终端、网关、ECU控制部件等汽车智能网联相关的子设备。
(2)一种计算机数据存储介质,在该存储介质上存储有计算机程序或上述装置,当计算机程序或上述装置被执行时,使得计算机执行前述实施例或等效实施方式的步骤/功能。
在本发明所提供的几个实施例中,任一功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机数据取存储介质中。基于这样的理解,本发明的某些技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以如下所述软件产品的形式体现出来。
尤其需指出的是,该存储介质可以是指服务器或相类似的计算机设备,具体地,也即是服务器或类似的计算机设备中的存储器件中存储有前述计算机程序或上述装置。
(3)一种计算机程序产品(该产品可以包括上述装置),该计算机程序产品在终端设备上运行时,使终端设备执行前述实施例或等效实施方式的整车OTA并行刷写升级方法。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施方法中的全部或部分步骤可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,上述计算机程序产品可以包括但不限于是指APP。
本发明实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示单独存在A、同时存在A和B、单独存在B的情况。其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项”及其类似表达,是指的这些项中的任意组合,包括单项或复数项的任意组合。例如,a,b和c中的至少一项可以表示:a,b,c,a和b,a和c,b和c或a和b和c,其中a,b,c可以是单个,也可以是多个。
以上依据图式所示的实施例详细说明了本发明的构造、特征及作用效果,但以上仅为本发明的较佳实施例,需要言明的是,上述实施例及其优选方式所涉及的技术特征,本领域技术人员可以在不脱离、不改变本发明的设计思路以及技术效果的前提下,合理地组合搭配成多种等效方案;因此,本发明不以图面所示限定实施范围,凡是依照本发明的构想所作的改变,或修改为等同变化的等效实施例,仍未超出说明书与图示所涵盖的精神时,均应在本发明的保护范围内。