APP下载

基于DoIP协议的诊断刷新系统研究

2024-08-15巴怡然

时代汽车 2024年14期

摘 要:随着软件在汽车领域的占比越来越高,车载软件的通信及刷新速率低的问题逐渐突出。文章介绍了ISO 13400 DoIP协议和ISO 14229诊断协议,分析DoIP帧格式和通信原理,设计刷新过程和诊断通信流程,实现了基于DoIP协议的诊断刷新功能,极大提高了ECU刷新的时间性能和效率。

关键词:以太网 DoIP ECU刷新 诊断协议

随着车联网技术的发展和车载软件日益复杂化,传统的车载CAN总线通信速率无法满足新技术对车辆数据传输带宽的需求,而车载以太网以带宽高、开放性好、兼容性强、可靠性高、同时又满足车载严格法规要求的优势,成为下一代车载网络技术中最有前景的应用[1]。基于以太网的DoIP刷新技术充分利用了以太网高带宽的优点,使设备与ECU之间及ECU内部芯片之间,建立起高通信速率的传输通道,实现基于以太网和UDS协议的通信。本文将重点介绍DoIP诊断刷新系统的研究和实现。

1 DoIP诊断通信原理

1.1 DoIP协议介绍

DoIP(Diagnostic communication over Internet Protocol)是一种基于互联网协议的诊断。基于该诊断协议,主机厂和售后工程可以对车辆进行诊断、刷新等操作[2]。

DoIP协议形成了ISO 13400标准《道路车辆—基于互联网协议的诊断通信(DoIP)》。该标准分成3个部分:

(1)通用信息和用例定义;

(2)传输协议和网络层服务;

(3)基于IEEE802.3的车用有线接口。

即ISO 13400标准介绍了其物理层、数据链路层、传输层、网络层等内容。OSI模型将数据通信分为七层,DoIP是位于OSI模型中的应用层,通过TCP/UDP协议传输。应用层和会话层部分采用ISO 14229实现,物理层与数据链路层遵循ISO 13400标准。具体参考表1所示[3]。

1.2 DoIP报文格式

DoIP协议支持IPv4与IPv6协议,以及对应的地址解析ARP协议、NDP协议以及控制报文协议ICMP。所有统一网段的DoIP都必须使用相同的IP协议版本。由于DoIP在OSI模型中位于应用层,故DoIP报文前要封装ETH首部、IP首部及TCP/UDP首部。DoIP报文包括协议版本号、版本号取反、负载类型、负载长度及DoIP数据。以太网报文封装格式如图1所示。

版本号占1个字节,标识 DoIP 协议版本编号,取值范围为0x00 至 0xFF,通常取 0x02(DoIP 2012)。

版本号取反占1个字节,是版本号与 0xFF 逻辑运算异或的值。如版本号为 0x02,则版本号取反则为 0xFD。版本号取反值与版本号值配合起到协议验证的作用,以确保接收DoIP报文的准确性。

负载类型占2个字节,用于判断数据用途,常用诊断数据类型有0x8001、0x8002和0x8003分别表示诊断消息、诊断消息正响应、诊断消息负响应。

负载长度占4个字节,标识后面的实际诊断数据长度。

负载,占用最大字节数为4Gbytes,实际诊断数据可以少于最大字节数,诊断数据又包括源地址、目标地址和诊断命令,其中诊断命令是指UDS或OBD中规定的具体的诊断请求或响应。

1.3 DoIP诊断通信流程建立

DoIP通信的两端即客户端和服务端,采用套接字(Socket)通信方式,服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接[4]。此时如果客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。TCP Socket交互状态如图2所示。

2 基于DoIP协议的刷新功能设计

2.1 主从刷新流程实现

本文设计的刷新功能,以整车上TBOX为上层主节点,承担刷新发起的任务控制器中的SOC为主节点,MCU为从节点,刷新过程是通过以太网通道和DoIP协议实现,配备专门的VLAN进行通信,不响应其他MAC和IP的DoIP指令。以升级MCU软件为例,整个交互流程如图3所示。

SOC控制MCU升级的流程并监控其升级状态,SOC可以根据版本判断是否需要升级MCU,如果不需要升级则直接返回升级成功。SOC根据当前状态计算升级进度,并将进度反馈给上层主节点。

2.2 DoIP诊断报文设计

如2.2章节所述,DoIP发送的诊断报文有三类,分别为诊断消息(0x8001),诊断肯定应答(0x8002)和诊断否定响应(0x8003)。其中SOC作为客户端,需要支持0x8001的发送以及0x8002和0x8003的解析处理,MCU作为服务端,需要支持0x8001的解析和发送,以及0x8002和0x8003的发送。

DoIP诊断通信流程和CAN不一样,CAN是一条诊断请求对应一条诊断响应,但DoIP遵循如下流程:

SOC发送一条诊断请求(0x8001),该请求中搭载了UDS诊断数据,MCU收到后对DoIP报头、诊断数据长度等做判断,先返回一个DoIP层的响应,如果各个条件都满足,则返回肯定响应(0x8002),否则返回否定响应(0x8003)。

当MCU返回肯定响应后,再将诊断请求报文中搭载的UDS诊断信息上报给UDS应用程序进行处理,处理完成后,不论是UDS肯定响应还是UDS否定响应,都用诊断报文(0x8001)将UDS诊断响应数据发送给SOC,至此一次诊断数据交互才完成。

2.3 刷新服务实现

软件刷新过程,在主节点SOC和从节点MCU之间交互,各自解析报文,再根据诊断服务流程做出响应[5]。图4为详细刷新流程。

在只有一个刷新包时,按照图4的流程图完成。如果有多个刷新包,将循环执行“刷新及校验过程”直至完成。如果在刷新准备阶段失败,SOC会重试当前步骤的请求,重试仍然失败,上报上级保障码,结束本次刷新。若在刷新及校验过程出现失败,MCU将回复否定响应,自身进行回滚,SOC需要在MCU回滚完成后再从本阶段最开始进行重试操作。

3 DoIP主从刷新技术应用效果

软件开发完成后使用Wireshark工具,监控刷新MCU软件过程,分析每帧报文内容和通信时间,如图5抓取数据截图所示。通过测试验证软件设计符合需求,整个刷新过程相比CAN总线时间上缩短一半,实现高效刷新的量产目标。

4 结论

本文对ECU内部芯片间的DoIP诊断通信应用进行了研究和实现,详细阐释了DoIP技术及其相关通信原理、协议和流程。DoIP技术充分利用了以太网高带宽和高可靠性的优点,在车载软件刷新技术中具有重要意义。随着软件刷新中DoIP技术在控制器间和控制器之内的应用及普及,将大力推进车载软件智能化,也很大程度地提高用户体验。

参考文献:

[1]呼布钦,秦贵和,等.下一代汽车网略:车载以太网技术现状与发展[J].计算机工程与应用,2016(24).

[2]周洋,姚西峰,王天军,等.基于DoIP的终检线模拟测试系统[J].汽车实用技术,2020(3):130-133.

[3]Road vehicles-Diagnostic communication over Internet Protocol(DoIP)-Part 1: General information and use case definition: ISO 13400-1:2011[S].2011.

[4]Road vehicles-Diagnostic communication over Internet Protocol(DoIP)-Part 2: Transport protocol and network layer services: ISO 13400-2:2012[S].2012.

[5]Road vehicles-Unified diagnostic services(UDS)-Part 1: Specification and requirements: ISO 14229-1:2013[S].2013.