万字长文——图解车载系统DoIP协议(可做查询手册)!

Tip📌:鼠标悬停双虚线关键词/句,可获得更详细的描述

----------------往期精品文章专栏回顾,点赞收藏不迷路----------------

学习ISO-14229 UDS协议 >>>>>>>>> 《UDS协议从入门到精通(UDS速查手册)》<<<<<<<<<

嵌入式开发知识硬核文章集锦 >>>>>>>>> 《嵌入式工程师自我修养/C语言》<<<<<<<<<

一、引言

  当前应用较多的车辆通信网络总线主要有CANLINFlexRayMOST LVDS 等,随着车载电子系统的愈加复杂,不断增加的控制器及接口数量对网络带宽的需求增大,车内控制单元和域之间彼此通信需求也增强。这意味着传统总线将渐渐难以满足信息高速传输的需求,因此引入车载以太网技术:车内电子控制单元通过以太网技术实现相互通信并形成局域网(使用单对双绞线即可实现稳定的双全工通信,且传输速率最高可达到1000Mb/s)。

二、DoIP概述

2.1 DoIP简介

  所谓的DoIP其实就是基于以太网的通讯协议对UDS协议的数据进行传输,即Diagnostic communication over Internet Protocol。其本身也是一种协议,规范于ISO13400标准。由于DoIP可以传输大量数据,以及响应速度快,且可以通过以太网进行远程诊断,因此DoIP逐步成为代替传统的CAN等总线方式,成为车载网络诊断的必然趋势。

  DoIP在车载领域的应用首先汽车系统的整体框架要能够支持DoIP,正因为车载以太网的快速发展,相较于传统的车载系统,目前的车载系统的整体框架都会加入一层DoIP协议层,在TCP/IP之上。并且为了更好的配合OBD诊断,远程诊断,FOTA等等技术,对整体的车载架构进行了调整,利用swich将MPU,MCU,其它以太网ECU统统通过以太网进行连接,并对外网与内网进行隔离。

  简单的说,DoIP能够进行车辆发现,状态查询,路由激活(含安全认证),诊断数据收发,这些内容将在后续进行详细的展开。

  DoIP(Diagnostic Communication over Internet Protocol,基于IP的诊断协议)主要用于建立外部测试设备与车载网络之间的诊断连接。常见的应用场景有

  • 车辆检查和维修
  • 车辆/ECU软件重编程(模块刷新)
  • 车辆/ECU的下线检查和维修

  在诊断服务中,DoIP相对于传统的CAN诊断具有以下显著优势

优势描述
高速的数据传输速率以太网总数据速率可以达到 100 Mbit/s,与高速 CAN 相比, DoIP 诊断总体速率是 CAN 诊断的100倍以上;
从而在复杂的诊断任务和刷新应用的情况下极大地节约了时间。
低成本使用标准硬件组件,如以太网控制器, Cat5 线缆和 RJ 45 连接器。
不需要再使用硬件 VCI,
兼容 CAN/CAN FD 通讯
个人电脑仅仅只需要一个以太网接口即可,但是除此之外还有一根激活线。
应用范围广配合 OBD 诊断、远程诊断、FOTA 等技术,固定诊断和远程诊断都能应用。

  基于DoIP和DoCAN的网络通信在 OSI 网络模型中的大致架构如下所示,单就协议内容来讲,可以把DoIP协议看作传输层的协议:

在这里插入图片描述
  对应的ISO标准为ISO-13400,分以下四部分:

  • Part1: General information and use case definition(相关术语+协议的使用场景)
  • Part2: Transport protocol and network layer services(协议内容的具体定义)
  • Part3: Wired vehicle interface based on IEEE 802.3(相关硬件设计选型)
  • Part4: Ethernet-based high-speed data link connector(对应车辆接插件的选型)

Tip📌:原版高清协议全集(带标签)已经上传到我的资源中:ISO-13400 DoIP协议 - 点击下载

  ISO13400 定义的 DoIP 各部分内容在 OSI 网络模型中的架构如下所示:

在这里插入图片描述

2.2 相关术语和缩写

术语描述
DoIP Entity实现DoIP协议的节点(DoIP Gateway 或者 DoIP node)
DoIP Edge Node连接以太网激活线的DoIP节点
Network Node连接在IP网络上,但不能实现DoIP的节点
Logical Addressing (Pyh/Fun)逻辑寻址
SASource Address 源逻辑地址
TATarget Address 目的逻辑地址
EIDEntity Identification 实体标识符,唯一标识DoIP节点,一般是MAC地址
GIDGroup Identification 组标识符,当VIN码未配置的时候替代VIN使用,车内节点同步边缘节点的GID
VINVehicle Identification Number 车辆识别码,Length:17bytes

三、DoIP通信场景

3.1 直接点对点连接

  单台车辆与外部设备使用双绞线点对点通信,诊断仪与车辆直连后,可以诊断单车所有DoIP节点,一般用于单车故障诊断或者ECU升级刷写等功能。这种方式意味着在进行诊断通信时,系统不会受到来自其他车辆或设备的干扰
在这里插入图片描述

3.2 通过网络的点对点连接(通过网络连接单台车辆与单一外部测试设备)

  多个车辆和多个外部测试设备被连接到同一个网络,这意味着外部测试设备应有可能识别网络中的车辆,并选择与之建立通信的特定车辆。当然,设备与车辆本身都应具备自动接入到已存在的IP网络的能力。从车辆的角度来看,这意味着车辆应该实现识别机制,并且应该能够处理或拒绝多个连接尝试,因为其他外部测试设备可能会干扰当前建立的通信。

  这种通信场景通常发生在车辆连接到现有网络或无线基础设施时,其他车辆和外部测试设备(例如维修车间网络)也使用这些网络或无线基础设施(例如多台车同时在维修店进行检车、维修)。
在这里插入图片描述

3.3 单个外部测试设备与多个车辆的网络连接

  单诊断仪连接多台车辆的形式一般用于产线上生产监控及ECU刷写等。从车辆的角度来看,这个通信场景与3.2中描述的场景相同。只有外部测试设备能够支持多个连接, 这种通信场景可能发生在:例如,有一个专用的flash重编程服务器,它可以同时更新多辆汽车(例如,在经销商或制造区域)。

Tip📌:只有外部测试设备需要有点对多连接的能力(sockets)
在这里插入图片描述

3.4 多个外部测试设备与单个车辆的网络连接

  多台诊断仪通过交换机级联,诊断同一台汽车,各诊断信道互不干扰,可实现多团队同时作业,提高整体工作效率(例如某台设备需要对车辆进行刷写,而另一台设备需要对该车辆进行诊断)。在这种情况下,车辆应能够清楚地分离负责每个逻辑链路的每个外部测试设备的诊断请求和响应。而对于外部设备,则需要有判断当前车辆是否有在与其他设备进行通讯的能力。

在这里插入图片描述

四、DoIP相关机制

4.1 基于DoIP的网络诊断架构

在这里插入图片描述

  图中分为车内网(Vehicle network)和车外网(External network:此部分为外部测试设备,通常为OBD诊断仪或者其他诊断客户端),车内网和车外网之间,有两组重要的线束,其中一组是用于数据传输的以太网线,另一组是用于诊断功能激活的激活线(Activation line)。以太网线就是我们常见的四线制TX标准网线。而激活线的设计,是用于车内诊断功能的激活。

4.1.1 为什么需要激活线?

  为了降低能耗和减少电磁干扰。非诊断通信期间,将与诊断相关的功能处于关闭状态,这样一方面可以降低能耗,另一方面减少对网络带宽的消耗,从而降低电磁干扰。

4.1.2 车内网络中节点类型有哪些?

  1. DoIP网关节点(DoIP gateway)
      车内DoIP网关节点的作用,是实现以太网到其他网络总线(如CAN、LIN)的报文路由,这样便实现了DoIP诊断与传统网络总线的兼容。多种网络总线汇聚到DoIP网关,这大大的降低了布线的复杂性,并且提高了各总线网络中ECU的诊断效率。

  2. 边缘节点(DoIP edge node)
      它是直接与外部诊断仪进行物理连接的节点。边缘节点可作为一个网络交换机,将车内网与车外网组成同一子网;也可以作为一个网关,将车内网与车外网进行安全隔离,屏蔽非法的网络访问和网络攻击。实际上它同样是个网关,其次他用于连接外部测试设备,在外部设备和车内子网之间路由转发消息;相较于 DoIP 网关多了以太网激活线的硬线。

  3. 一般的DoIP节点
      这些节点只支持对自身的诊断,而不具备路由功能。

  4. 其他网络节点(Network node)
      不具备DoIP诊断功能。

Tip📌:在车内网络中,各DoIP网关和DoIP节点可以全部级联于DoIP边缘节点,也可以分布于多个交换机网络,但最终都可以被边缘节点直接访问到。

4.2 一些物理连接要求

4.2.1 基本物理连接要求

在这里插入图片描述
——支持100Mbit/s为啥还要10Mbit/s的?
  如果瞬间达不到100Mbit/s速率,可以降速处理。

4.2.2 车辆激活线的要求

  下图是车辆和测试设备之间的物理连接示意图,其中要求通信连接线为Cat-5以上,且诊断仪到汽车OBD接口的长度不超过50m。13400-3中提供了该部分车内接口电路的两种设计方案并且所用电路元器件参数都有选型参考。
在这里插入图片描述
  激活线的一些电压门限值以及激活时间的约定如下所示:
在这里插入图片描述

4.2.3 OBD接口要求

  OBD接口线如下所示:
在这里插入图片描述
  13400-4提供了OBD接口的两种布局方案供参考:
在这里插入图片描述

五、DoIP协议通信原理

5.1 网际协议( IP)

  网际协议(IP)是用于在网络中传输数据的基本协议,是一种用于在各种传输介质上进行封包交换的端到端的数据通信协议,网际协议基于数据报,是不可靠的协议。它定义了数据如何封装、寻址、传输、路由和接收。在DoIP协议中,IP作为核心传输机制,允许诊断信息在车辆网络和诊断设备之间流动。

在这里插入图片描述
Tips📌:

  • 车内所有 DoIP 实体均应使用相同的网际协议版本,即IPv4或IPv6
  • 如果使用 IPv4 ,则每个DoIP实体均应实现ARP和ICMP
  • 如果使用 IPv6 ,则每个DoIP实体均应实现NDP和ICMP v6

5.2 IP地址分配

  在DoIP通信中,每个设备都需要一个唯一的IP地址以便识别和通信。IP地址可以通过手动配置(静态)或通过动态主机配置协议(DHCP)自动分配。静态IP地址适用于网络结构不经常变化的环境,而DHCP适用于设备经常变动的情况,如车间诊断。

  • 在激活线激活边缘节点网关后,每个DoIP实体应同时执行基于Auto IP和DHCP分配的 IP 地址分配程序;
  • 分配结果为 IP地址(IPv4)+ 子网掩码(仅 IPv4);
  • 如果 DoIP 实体集成在网络架构中,则还需默认网关地址(即默认路由器的 IP 地址)。

5.3 DoIP中TCP原理及通信的建立

  TCP是一种可靠的传输层协议,它确保数据包正确无误地从源传输到目的地。在DoIP中,TCP用于需要高可靠性的诊断通信,如ECU编程。TCP通过三次握手过程建立连接,确保两端的通信是同步的,并且通过序列号和确认应答机制保证数据的顺序和完整性。

  • 车内所有DoIP实体均应实现TCP;
  • TCP使用一对端口号来标识连接,TCP连接时目的端口应当是TCP_DATA;
  • DoIP实体应在创建socket之后监听TCP_DATA,用于与试图连接DoIP实体的外部测试设备建立通信;
  • 外部测试设备应支持多个TCP_DATA socket,本地端口将在创建socket时自动选择,远程端口应为TCP_DATA。

在这里插入图片描述
——三次握手过程建立连接

  1. 第一次握手
      外部测试设备发送连接请求报文段,将标志位SYN置为1,并随机产生一个序列号 seq=x;把这个值发送给DoIP实体,此时外部测试设备进入SYN_Sent的状态,等待确认

  2. 第二次握手
      DoIP实体收到外部测试设备的SYN报文段,由SYN=1 ACK=0知道外部测试设备正在请求建立连接。DoIP实体把ack=x+1;同时要发送SYN请求消息,因此把标志位SYN置成1,并随机生成序列号seq=y;DoIP实体把所有信息一并放入报文段(即 SYN+ack 报文段)发给外部测试设备用来确认连接请求,自此DoIP实体进入了SYN_Receive状态

  3. 第三次握手
      外部测试设备收到( SYN+ack )报文段检查ack是否等于x+1。如果正确,把ack=y+1,并把数据包发给DoIP实体。DoIP实体会检查ack是否等于y+1,且seq是否等于x+1,如果正确就连接成功,双方都进入Established状态,完成握手,可以开始接收数据

在这里插入图片描述

5.4 DoIP 中 UDP 原理及通信的建立

  与TCP不同,UDP是一种无连接的协议,它允许数据包在没有事先建立连接的情况下发送。这种方法减少了开销,使得通信更快,但也牺牲了可靠性。在DoIP中,UDP用于那些不需要确认的服务,如车辆发现或基本诊断请求。

  • 车内所有DoIP实体均应实现UDP;
  • 当需要外部设备对车辆IP节点进行广播或多播消息请求时,由于TCP的传输机制限制无法实现,因此须使用UDP。

——用于UDP的两个端口类型

  • UDP_DISCOVERY
    外部测试设备和DoIP 实体都需要监听此端口,是主动发送数据时的目的端口。

  • UDP_TEST_EQUIPMENT_REQUEST
    外部测试设备向DoIP 实体发送报文时给自己分配的端口。

在这里插入图片描述
——DoIP中的端口类型总结

  DoIP协议的实现基于TCP/IP,要想接收DoIP协议的报文,则需要监听一个专门分配给DoIP协议栈使用的端口号,UDP、TCP都要监听此接收端口,而发送端口是一个动态分配的随机值,代码中协议栈要对对端的发送端口进行缓存,用于回送数据。

  指定了端口号,客户端和服务端可以在此端口上进行收发数据,并对该端口收到的数据是否真的是DoIP报文进行判断解析(有可能是网络攻击,或是其它应用恰好使用了该端口号)。

  总之,不管是TCP还是UDP,都包含源端口号和目的端口号,在DoIP报文中用到了以下三种端口:

在这里插入图片描述

——通信建立过程

  DoIP 实体主动广播时,以 UDP_DISCOVERY 或 UDP_TEST_EQUIPMENT_REQUEST 作为源端口,目的端口 UDP_DISCOVERY ,而外部测试设备则监听 UDP_DISCOVERY 获得消息。

  当外部测试设备向 DoIP 实体发送 UDP 时,设置源端口 UDP_TEST_EQUIPMENT_REQUEST ,目的端口 UDP_DISCOVERY 。当请求发送给 DoIP 实体后,外部测试设备保持对 UDP_TEST_EQUIPMENT_REQUEST 的监听。DoIP实体接收到请求后,将源端口设置为 UDP_DISCOVERY 或 UDP_TEST_EQUIPMENT_REQUEST ,目标端口设置为 DP_TEST_EQUIPMENT_REQUEST ,回复响应。

在这里插入图片描述

5.5 逻辑地址(Logical Address)

  逻辑地址用于在DoIP网络中标识不同的设备和服务。它们是独立于物理硬件的,可以是源地址(SA)或目标地址(TA)。逻辑地址使得在网络中的数据传输不依赖于物理位置,提高了网络的灵活性和可扩展性。

  • 物理逻辑地址唯一表示一个诊断实体,包括任一 DoIP 实体或连接着 DoIP 网关的 ECU;
  • 功能逻辑地址用于将报文发送到车内一组或所有诊断实体。

在这里插入图片描述

六、通信协议详解

6.1 报文格式——首部格式

  DoIP协议支持IPv4与IPv6协议,以及对应的地址解析ARP协议、NDP协议以及控制报文协议ICMP,前面的章节均有描述了。目前车载以太网仍以IPv4协议为主,基于对网络发展的考虑,随着地址的增加,会逐渐过渡到IPv6协议。所有统一网段的DoIP都必须使用相同的IP协议版本。

  由于DoIP在OSI模型中位于传输层,故DoIP报文发送前要封装ETH首部、IP首部及TCP/UDP首部,DoIP数据作为SDU层层向下传递,直至构成完整的以太网帧,通过物理层的介质发送出去。封装格式如下所示:

在这里插入图片描述
以一条车辆识别请求报文为例:

在这里插入图片描述

  接下来就是对DoIP报文段的内容做详细的拆解说明,DoIP在其报文的Payload起始段添加了DoIP报头(首部),用来区分不同的DoIP报文类型,实现不同的功能,首部包括协议版本号、版本号取反、负载类型及负载长度。

Tips📌:每条DoIP报文都是有这个首部的!!!

  协议版本(1Byte):使用的DoIP协议的版本,取值及相应版本如下所示:

取值版本信息
0x00预留
0x01DoIP ISO/IDS 13400-2:2010
0x02DoIP ISO/IDS 13400-2:2012
0x03DoIP ISO/IDS 13400-2:2019
0x04 - 0xFE预留
0xFF车辆识别请求报文默认值,设这个值的作用是:当客户端和服务端的协议版本不匹配,
可以设置此值绕过因为协议头版本不匹配而拒绝请求的case。

  协议版本取反(1Byte):主要目的是对协议版本进行校验,确保正确的DoIP格式(如协议版本为0x03,则此值为0xFC)。

  负载类型(2Byte):有以下三大类负载类型。

负载类型取值
节点管理类0x0000 - 0x0008
诊断类0x8001 - 0x8003
节点状态类0x4001 - 0x4004
预留-------

  负载长度(4Byte):携带的实际数据的长度。

  从首部的负载类型可见,总共有三类报文:节点管理类、诊断类和节点状态类。下面将针对这三类报文展开详细的介绍。

6.2 节点管理类报文

  节点管理类报文有以下四类:
在这里插入图片描述

6.2.1 DoIP首部否定响应报文

——报文格式
在这里插入图片描述
  其中否定响应码取值情况如下所示:

NACK code描述下一步动作
0x00格式错误关闭socket
0x01未知的负载类型忽略报文
0x02报文过长忽略报文
0x03超出内存忽略报文
0x04无效的负载长度关闭socket

Tips📌:

  • 每个DoIP实体必须支持DoIP首部否定响应
  • 每个DoIP实体应该忽略收到的DoIP首部否定响应报文
  • 测试仪收到不符合规范的DoIP报文不应该发送首部否定应答

——DoIP首部通用处理流程DoIP实体收到任何类型的报文时都应先调用首部处理的流程

在这里插入图片描述
——举例如下
在这里插入图片描述

6.2.2 车辆声明及标识报文

——请求报文的格式

在这里插入图片描述

——响应报文的格式

在这里插入图片描述

  其中32字节的 Payload2的结构如下:

在这里插入图片描述
Tips📌:

  • DoIP实体接收到车辆信息请求之后会随机延时再回复响应报文,以防止UDP报文激增;
  • 车辆声明报文应连续发送三次,提高外部测试设备获取此报文的几率;
  • 当车辆声明报文或者车辆信息响应报文中的further action为0x10时,外部测试设备发送路由激活报文中的路由激活类型为0xE0;
  • 当车辆声明报文中当VIN等信息未知的时候使用无效值进行填充,如下表所示。
    在这里插入图片描述

——车辆识别请求报文处理流程:收到车辆识别请求报文的时候,DoIP实体中的处理逻辑应当按如下流程进行:

在这里插入图片描述

——举例如下

在这里插入图片描述

  从宏观流程上看,车辆识别过程的时序如下所示:

在这里插入图片描述

6.2.3 路由激活/响应报文

——请求报文的格式

在这里插入图片描述

  其中7或11字节的 Payload1的结构如下:

在这里插入图片描述

——响应报文的格式

在这里插入图片描述

  其中9或13字节的 Payload2的结构如下:

在这里插入图片描述

  其中路由激活响应码的取值如下所示:

在这里插入图片描述

6.2.4 在线检查请求/响应报文

——请求报文的格式

在这里插入图片描述

——响应报文的格式

在这里插入图片描述

——路由激活&在线检测报文处理流程

  基于以上内容,我们已经可以举一个完整的例子,关于如何实现路由激活的过程,假设在已存在两个socket连接的情况下外部测试设备触发第三个连接,发送路由激活请求,此时处理流程如下图所示:

在这里插入图片描述
  对于接收该路由激活请求的DoIP实体来说,其内部更细致的处理流程如下所示:
在这里插入图片描述

6.3 诊断类报文

  诊断类报文是DoIP通信中最常用的也是最重要的报文类型,它们用于执行各种诊断任务。其携带的负载数据通常是遵循ISO-14229的UDS诊断数据。诊断类报文的请求、肯定响应、否定响应的格式如下所示:

在这里插入图片描述

  其中Payload1对应的报文类型是诊断请求报文,其结构如下所示:

在这里插入图片描述
  Payload2对应的报文类型是诊断肯定响应报文,其结构如下所示,其中ACK code 正常取0x00(值0x01~0xFF为预留值,暂无实际意义),表示路由确认已接收到诊断请求,并将报文放入目标网络的传输缓冲区中:

在这里插入图片描述
  Payload3的结构与Payload2相同,不过响应码变为否定响应码,其取值类型如下:

在这里插入图片描述

——诊断类报文处理流程

  首先,来自诊断设备(客户端)的一条诊断报文经过网关节点到达待诊断ECU(server端)的路由过程如下所示:

在这里插入图片描述

  当诊断报文到达server端后,server端这个DoIP实体应当按照如下流程进行处理:

在这里插入图片描述
——举例如下

  Example1:诊断报文的肯定应答
在这里插入图片描述
  Example2:诊断报文的否定应答
在这里插入图片描述

6.4 节点状态类报文

  节点状态类报文共以下四种类型,分为两类:

在这里插入图片描述

6.4.1 DoIP实体状态请求/响应报文

在这里插入图片描述
在这里插入图片描述

6.4.2 诊断电源请求/响应报文

在这里插入图片描述

七、DoIP通信流程详解

7.1 建立连接过程

  建立连接过程是DoIP通信的起点,它涉及到路由激活和在线检查,确保诊断设备和目标节点之间的通信链路是可用的。DoIP实体内管理着一个DoIP connection table ,用来记录和维护诊断通信的逻辑连接。下图就是这个表中的一个元素,即一个逻辑连接的状态机。图中的方框就是连接所处的状态,[Step]是状态之间跳转时发生的事情。

在这里插入图片描述

  • [Step1] 当一个新的套接字建立,逻辑连接的状态就从“listen”跳转到“socket initialized”,同时启动一个定时器, initial inactivity timer。
  • [Step2] 当DoIP实体接收到tester发来的一个routing activation信息后,逻辑连接的状态就从“socket initialized”跳转到“Registered [等待授权]” ,此时 initial inactivity timer被停止,启动一个名为general inactivity timer的定时器。
  • [Step3] 在完成Authentication之后,逻辑连接的状态就从“Registered [等待授权]”跳转到“Registered [等待确认]” 。
  • [Step4] 在完成Confrmation之后,逻辑连接状态就从“Registered [等待确认]”跳转到“Registered [路由激活] ” 。
  • [Step5] 如果 initial timer 或 general inactivity timer 过期后仍没收到后续请求,或者authentication 和 confrmation 被拒绝了,又或者外部测试设备对 alive check 消息没有响应,则逻辑连接进入“Finalize”状态。
  • [Step6] 进入Finalize后,此时TCP套接字将被关闭,并重新回到“Listen”状态。

7.2 车辆发现过程

  车辆发现过程允许诊断设备在网络中发现可用的车辆ECU。这通常通过广播诊断消息实现,所有在线的ECU都会响应这些消息。

  当DoIP实体和外部测试设备都连接到一个网络中时,它们会利用DHCP协议获得一个属于自己的IP地址。在网络中,路由器作为DHCP server,为新加入到该网络中的设备分配IP地址。在获取IP地址之后,由DoIP实体主动发出3次声明报文,广播其VIN、EID、GID和逻辑地址,根据ISO13400标准规定,3次报文间隔时间在0~500ms。此时外部测试设备如果没有收到或漏收了3次声明报文,则需要外部测试设备主动向车内DoIP实体发送请求,等待500ms的时间间隔后,收到DoIP实体响应。

7.3 会话建立过程

  在外部测试设备发现车辆之后,会把车辆添加到自己的车辆列表中。外部测试设备选择对应的车辆,请求DoIP实体打开TCP_DATAsocket。DoIP实体需确认当前申请socket是否未被占用,接收报文的源地址是否被其他TCP_DATAsocket占用。如当前申请的TCPsocket已被占用或SA已被其他TCP_DATAsocket占用,则发送激活否定响应报文,关闭当前报文的socket;如均未被占用,则继续进行初始化TCP_DATAsocket。

  之后外部测试设备向DoIP实体发送路由激活请求,DoIP实体进行通用DoIP首部处理和路由激活处理,注册TCP_DATAsocket,并对外部测试设备的激活请求进行响应,从而完成路由激活连接。

  外部测试设备发送诊断报文到DoIP实体,DoIP实体经过通用DoIP首部处理及DoIP诊断处理后,向外部测试设备发送确认接收的诊断响应。再由DoIP实体向车内节点发送诊断请求,等待车内节点反馈诊断响应后,由DoIP实体向外部测试设备发送诊断响应。此处,DoIP实体可以支持与车内非DoIP实体的ECU通信。

  如当前无诊断需求时,由外部测试设备向DoIP实体发送关闭TCP_DATAsocket命令,DoIP实体执行释放TCP_DATAsocket,以备下一次诊断服务中使用。整个过程如下图所示:

在这里插入图片描述

  下面这幅图里对车辆识别过程的描述更加详细一些:

在这里插入图片描述

八、总结

  DoIP作为一种高效的车辆诊断通信协议,通过其节点管理类、诊断类和节点状态类报文,提供了一种灵活且可靠的方式来执行车辆的诊断和编程任务。它的通信流程确保了数据的准确传输和网络的稳定性,是现代车辆通信不可或缺的一部分。随着技术的发展,DoIP协议将继续适应新的挑战,为车辆诊断提供支持。

----------------往期精品文章专栏回顾,点赞收藏不迷路----------------

学习ISO-14229 UDS协议 >>>>>>>>> 《UDS协议从入门到精通(UDS速查手册)》<<<<<<<<<

嵌入式开发知识硬核文章集锦 >>>>>>>>> 《嵌入式工程师自我修养/C语言》<<<<<<<<<

  • 38
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

车载系统攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值