肖玉 殷方雷 于兴林 杨贵林
吉利汽车研究院(宁波)有限公司 浙江省宁波市 315336
随着时代的进步,汽车ECU的软件层级越来越丰富,软件功能越来约完善,软件定义汽车时代已经来临,随着大容量,高频次的车辆软件刷写的需求越来越频繁,在试制/工厂端,区别于售后,整车OTA功能尚未启用,需要一种比OTA,更加便捷的、更加高效的远程刷写方式[4][5]。
第五代移动通信技术(简称5G),其数据传输速率远远高于以前的蜂窝网络,最高可达10Gbit/s,比当前的有线互联网要快,比先前的4GLTE蜂窝网络快100倍。现阶段的车辆软件远程刷写多为直连式或者是4G网络,软件刷写的传输速率和远程距离均受到一定的限制。将5G网络技术应用在汽车领域,无疑是一种必然的发展趋势,也能够在汽车领域应用非常广泛。
本文通过对汽车总线DoIP协议原理论述,并结合当今最先进的5G网络通信技术、VXLAN技术打通无线诊断数据传输通道,实现多车辆,多ECU的软件群刷,并重点阐述如何实现5G终端之间“一对多”的车辆有序刷写,并对远程诊断数据传输过程中安全问题做了简单的论述。
本文基于的车辆诊断通信协议为DoIP,DoIP全称为基于IP网络的诊断通信Diagnostic communication over Internet Protocol,由ISO 13400标准定义,是基于TCP/IP的汽车诊断协议。
DoIP诊断经由通用的统一诊断服务UDS协议引入诊断服务,通过传输控制协议TCP、用户数据报协议UDP和以太网协议IP,完成外部测试设备与ECU间的诊断通信。
在OSI 7层模型中,ISO 13400规定了DoIP的传输层、网络层、数据链路层和物理层。应用层和会话层部分和基于CAN总线诊断一样采用ISO 14229实现,见表1。
表1 DoIP对应OSI七层模型
无论是本地刷写还是远程刷写,车辆与刷写设备都需要连接到DoIP网络中,都会涉及到以下四个环节:
1)物理连接
物理层的连接,指DoIP网关与测试设备(Tester)的硬线连接,目的是建立DoIP通信通道,Tester 和DoIP 网关之间要建立正确的物理连接(按照OBD接口定义正确连接),然后通过以太网激活DoIP网关的诊断功能,并根据需要分配 Tester 及 DoIP 网关的 IP 地址。本方案中的物理层连接指的是DoIP网关与5G车载终端之间的硬线连接,5G终端可直插车辆OBD口,连接车辆DoIP网关。
2)以太网激活
以太网激活线处于激活状态,外部设备连接、断开车辆时,DoIP边缘节点可以通过以太网激活线,打开或闭以太网控制器。激活线电压高于5V并持续200ms后,即进入激活状态。当激活电压低于2V并持续200ms后,退出激活状态。
3)车辆声明
满足上述的物理连接和以太网激活线的条件后,车辆DoIP网关、车载终端、远程主机便处于同一个网络中,可以建立TCP/IP通信了。此时,已到OSI七层模型中的第三层,传输层,这一层中涉及到的网络协议为TCP、UDP。
TCP和UDP的Socket定义如下:
标准规定,当一个DoIP节点成功获取到IP地址后,应在500ms内发送3条车辆声明报文,向网络中的所有DoIP节点广播自己的车辆信息,车辆声明消息(vehicle announcement message),附带有VIN,EID,GID和逻辑地址信息,可根据车辆声明信息做相应的解析,来更新车辆列表。声明内容如表2[1]:
表2 车辆声明内容
报文作为车辆声明报文使用时,该报文的目 的 端 口 为 UDP_DISCOVERY(13400)。UDP可以通过网线或者是网络来传输,同理TCP,本文论述的DoIP是TCP协议的一种,因此这就是为什么可以远程刷写车辆的原因[2]。
4)路由激活
远程主机接受到上述多个5G车载终端传输过来的车辆声明信息(VIN码,IP地址)之后,将这些车辆信息更新程序中的车辆列表,同步显示到上位机显示界面上,供操作人员确认车辆,远程上位机根据车辆列表里每辆车的远程IP地址,自动发送路由激活指令,即PL type:0x0005,上位机收到每辆车的路由激活响应,PL type:0x0006 回复以后,表示远程主机与目标车辆已经建立起一对多的DoIP诊断连接[3]。
以上过程完成后,便可以进行诊断通信-软件刷写流程(SWDL)了。
DoIP处 于OSI的L3-L4层, 而5G VXLAN服务是一种基于大二层的协议,在刷写之前,需要配置远程主机5G终端与多个车载终端之间的VXLAN转发配置,建立一对多的TCP连接,对于终端而言,VXLAN转发配置,如下图1所示。
图1 终端VXLAN设置
整个系统由若干车载终端(视车辆数量而定)、主机终端、远程群刷主机、服务器。
由于软件刷写过程中涉及到车辆重启的过程,需要DHCP服务维持,因此需要本终端附加充电功能,不能直接通过OBD去点。本终端利用OBD针脚16、8有12V供电回路,改造后的终端可直连OBD进行供电,并自带电池,使得整个刷写过程本终端一直处于供电的状态,而保证车辆端的DoIP实体DHCP服务一直处于维持状态,保证通信过程的稳定性[6]。
本终端VXLAN配置上,需要跟下述的远程服务器主机终端完成数据双向透传,如2.4小节论述。
一对多的刷写机制,服务器主机搭配的5G终端,需要配置一对多的VXLAN转发机制,成功配置后,该远程主机可以通过VXLAN服务获取这一批车辆中所有经UDP协议广播出来的车辆声明信息,实现主机-特定车辆的一对一,稳定的TCP链接,进行后续的刷写。
负责处理接收到的车辆声明报文,更新车辆列表,启动群刷程序,进行实际的远程群刷流程。
负责实时的下发本业务所需的车辆配置文件、ECU刷写文件等至远程群刷主机,以及收集车辆刷写结果文件等数据
总体方案部署如下图2所示:
图2 远程群刷方案整体部署
根据5G终端传递过来的VIN码,对应到远程主机中的配置文件(Broadcast文件,一车一档),根据Broadcast文件的生成规则,做相应的解析,获取车辆需刷写的ECU列表、各ECU软件层级、软件包排序等,从而对应该车辆的整车SWDL执行序列。
由于所有车辆的刷写服务均在远程主机中完成,如何做到DoIP报文传输不会出错?根据上一步骤中的车辆列表,TCP传递中,根据车辆的IP地址建立稳定的唯一的传输通道,上位机需要同时启动多个Socket服务,根据车辆的数量,本方案中由于用到了5G VXLAN技术,车辆列表理论上并不是无限多,需要考虑下行带宽,不超过1G。
路由激活步骤执行完毕后,就可以进行诊断通信了,即整车刷写流程启动(SWDL)。将刷写包(VBF/HEX/S19等类型)有序的刷写进ECU,完成车辆软件升级的过程。
每辆车的SWDL过程由上位机软件自动的执行或者操作人员手动确认执行,这一环节可由软件进行灵活的配置,适配多种场景,并且每辆车的SWDL过程均是同步进行的。此步功能逻辑如下图3所示:
图3 车辆列表更新与路由激活
对车辆ECU而言的SWDL过程,为传统的ISO14229系列中的34、36、37服务,
1)34服务——请求下载
2)36服务——传输数据
3)37服务——请求退出传输
在这里不多加赘述了。对于主机厂而言,还会附加一些独有加密、认证过程,接下来论述安全访问,0x27、0x29服务。
由于本文所述的软件刷写场景属于无线诊断,而0x27的安全访问控制手段缺乏灵活性,UDS 2020版本中增加了0x29服务,用于ECU对诊断仪(本文所述的应用场景指5G车载终端、远程主机这条通路)的身份认证。0x29引入了PKI和证书认证体系,可以灵活地给诊断的参与者分配权限[7]。
0x29服务一般在如下场景中使用:
1)需要读取特定内存地址的数据;
2)上传或下载控制器数据;
3)关于车身安全或者会影响车身控制器属性。
传统的0x27服务不能满足这些需求,因此新版本UDS协议新增0x29服务,来实现基于以太网的身份认证。
该服务有两种模式实现其功能:
1)基于PKI证书交换的非对称解密;
2)基于不带PKI证书的质询-响应过程,其使用带有软件身份验证令牌的非对
称解密或对称解密;
注:PKI(公钥基础设施Public Key Infrastructure)是一种遵循标准的利用公钥加密技术为电子商务提供一套安全基础平台的技术和规范。它能够为所有网络应用提供加密和数字签名等密码服务及所必需的密钥和证书管理体系,简单来说,PKI 是利用公钥理论和技术建立的提供安全服务的基础设施。
本方案单条DoIP通信链路的车辆软件刷写机制如下图4所示:
图4 远程主机软件刷写流程图
多车同时启动上述流程,完成群刷。
远程主机中的执行软件按照上述逻辑,有序的将各个ECU的刷写包按照Broadcast文件中配置好的刷写序列刷写进ECU,完成整车的软件升级,上一章节路由激活中已经论述了刷写之前,所有车辆与远程主机之间的DoIP会话连接,所有车辆按照上图所示的流程一起完成软件下载,对这一批车辆而言,完成了群刷。
车辆功能的启用离不开车辆软件实时的升级机制,随着汽车网络互联的迅速发展,车内ECU种类、软件层级越来越多,刷写包越来越大,传统的网络架构、刷写机制越来越不能满足需求,刷写节拍在下线检测中的要求越来越高,5G作为工业4.0时代的催化通信技术,通过完美转型成为车辆软件升级的有效手段,相信在随后的几年中将会在远程诊断、远程刷写、OTA、车联网等领域快速普及应用[8]。