# 诊断 over IP 规范 **AUTOSAR CP Release 4.4.0** > 翻译说明:本文件为 AUTOSAR SWS Diagnostic over IP (DoIP) 规范的中文翻译版本。文档标识 418,对应原文 `AUTOSAR_SWS_DiagnosticOverIP.pdf`(122 页)。 ## 元信息 | 字段 | 值 | |---|---| | 文档标题 | 诊断 over IP 规范 (Specification of Diagnostic over IP) | | 文档所有者 | AUTOSAR | | 文档责任方 | AUTOSAR | | 文档标识号 | 418 | | 文档状态 | Final(最终版) | | AUTOSAR 标准所属 | Classic Platform(经典平台) | | 标准发布版本 | 4.4.0 | | 文档 ID | AUTOSAR_SWS_DiagnosticOverIP | ## 文档变更历史 | 日期 | 发布版本 | 修改者 | 变更说明 | |---|---|---|---| | 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 更新了接收车辆声明的功能;支持增加 DoIP 目标地址数量;DoIP 头文件清理;小幅修正/澄清/编辑性变更 | | 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 支持 DoIP UDP 连接与有限广播 IP 地址;支持车辆识别和车辆声明的 Further Action Code 值;与 ISO 13400 对齐路由激活确认 | | 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 支持 DoIP 激活线路开关;支持 UDP 多播车辆声明;引入可靠 TxConfirmation;BSW 内相同 API 统一 | | 2015-07-31 | 4.2.2 | AUTOSAR Release Management | DET 重命名和扩展;支持并行诊断会话 | | 2014-10-31 | 4.2.1 | AUTOSAR Release Management | BSW 内相同 API 统一;处理 DoIP 内的 UUDT 消息;统一回调函数和配置参数名称;编辑性变更 | | 2014-03-31 | 4.1.3 | AUTOSAR Release Management | 相同 API 统一;更新某些配置参数的多重性 | | 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 服务接口形式化;修订服务接口的返回值;编辑性变更 | | 2013-03-15 | 4.1.1 | AUTOSAR Administration | 初始发布 | ## 目录 1. [介绍与功能概述](#1-介绍与功能概述) 2. [缩写词与缩略语](#2-缩写词与缩略语) 3. [相关文档](#3-相关文档) 4. [约束与假设](#4-约束与假设) 5. [与其他模块的依赖关系](#5-与其他模块的依赖关系) 6. [需求可追踪性](#6-需求可追踪性) 7. [功能规范](#7-功能规范) 8. [API 规范](#8-api-规范) 9. [时序图](#9-时序图) 10. [配置规范](#10-配置规范) --- ## 1 介绍与功能概述 本规范规定了 AUTOSAR 基础软件模块 Diagnostic over IP (DoIP) 的功能、API 和配置。DoIP 实现 ISO 13400 标准定义的通过 IP 网络进行车辆诊断的协议。 ### 1.1 模块职责 DoIP 的主要职责: - 实现 ISO 13400 协议 - 车辆识别与声明(Vehicle Identification / Announcement) - 路由激活(Routing Activation) - 诊断消息传输(DoIP 消息) - 通过 TCP/IP 进行诊断数据传输 - 通过 UDP 进行车辆发现 - 支持并行诊断会话(4.2.2) - 可靠 TxConfirmation(4.3.0) ### 1.2 模块在 AUTOSAR 架构中的位置 ``` DCM(诊断通信管理器) │ PduR │ DoIP ← 本规范 │ SoAd │ TcpIp ``` ### 1.3 关键概念 #### 1.3.1 ISO 13400 DoIP 遵循 ISO 13400 系列标准: - ISO 13400-2:传输协议和网络层服务 - ISO 13400-3:基于 IEEE 802.3 的车辆连接器 #### 1.3.2 车辆识别(Vehicle Identification) 外部测试仪通过 UDP 发送 Vehicle Identification Request 消息,DoIP 实体通过 Vehicle Identification Response 响应。 #### 1.3.3 车辆声明(Vehicle Announcement) DoIP 实体在某些条件下主动多播 Vehicle Announcement 消息以声明自身。 #### 1.3.4 路由激活(Routing Activation) 在建立诊断 TCP 连接后,外部测试仪必须发送 Routing Activation Request 来激活诊断消息的传输。 #### 1.3.5 诊断消息 诊断消息是 DoIP 实体与外部测试仪之间的实际诊断数据,通过 DoIP 协议头封装后通过 TCP 发送。 #### 1.3.6 激活线(Activation Line)(4.3.0) DoIP 实体使用物理激活线指示是否准备好进行诊断通信。 #### 1.3.7 并行诊断会话(4.2.2) `[SWS_DoIp_00200]` ⌈ DoIP 应支持多个并行的诊断会话。 ⌋ ()(4.2.2 新增) --- ## 2 缩写词与缩略语 | 缩写 | 描述 | |---|---| | API | Application Program Interface | | AUTOSAR | Automotive Open System Architecture | | BSW | Basic Software | | DCM | Diagnostic Communication Manager | | DEM | Diagnostic Event Manager | | DET | Default Error Tracer | | DoIP | Diagnostic over Internet Protocol | | ECU | Electronic Control Unit | | GID | Group Identification | | GID_SYNC | Group Identification Synchronization | | IP | Internet Protocol | | ISO | International Organization for Standardization | | OEM | Original Equipment Manufacturer | | PDU | Protocol Data Unit | | RTE | Runtime Environment | | SoAd | Socket Adaptor | | TCP | Transmission Control Protocol | | TLS | Transport Layer Security | | UDP | User Datagram Protocol | | UUDT | Unacknowledged Unsegmented Data Transfer(未确认未分段数据传输) | | VIN | Vehicle Identification Number(车辆识别号) | --- ## 3 相关文档 ### 3.1 输入文档 | 编号 | 文档 | |---|---| | [1] | AUTOSAR SWS BSW General — `AUTOSAR_SWS_BSWGeneral.pdf` | | [2] | AUTOSAR SRS BSW General — `AUTOSAR_SRS_BSWGeneral.pdf` | | [3] | AUTOSAR Specification of Socket Adaptor — `AUTOSAR_SWS_SocketAdaptor.pdf` | | [4] | AUTOSAR Specification of TCP/IP — `AUTOSAR_SWS_TcpIp.pdf` | | [5] | AUTOSAR Specification of PDU Router — `AUTOSAR_SWS_PduR.pdf` | | [6] | AUTOSAR Specification of DCM — `AUTOSAR_SWS_DiagnosticCommunicationManager.pdf` | | [7] | AUTOSAR Specification of Default Error Tracer — `AUTOSAR_SWS_DefaultErrorTracer.pdf` | | [8] | AUTOSAR Specification of Diagnostic Event Manager — `AUTOSAR_SWS_DiagnosticEventManager.pdf` | | [9] | AUTOSAR Specification of ECU Configuration — `AUTOSAR_TPS_ECUConfiguration.pdf` | ### 3.2 相关标准与规范 | 编号 | 标准 | |---|---| | [10] | ISO 13400-2:2019 - Road vehicles — Diagnostic communication over Internet Protocol (DoIP) — Part 2: Transport protocol and network layer services | | [11] | ISO 13400-3:2016 - Road vehicles — Diagnostic communication over Internet Protocol (DoIP) — Part 3: IEEE 802.3 based vehicle connector | | [12] | ISO 13400-4:2016 - Road vehicles — Diagnostic communication over Internet Protocol (DoIP) — Part 4: Ethernet-based high-speed data link connector | ### 3.3 相关规范 AUTOSAR 通用基础软件模块规范 [1](SWS BSW General)同样适用于 DoIP。 --- ## 4 约束与假设 ### 4.1 限制 - DoIP 通过 TCP 进行诊断消息传输 - 车辆识别和声明通过 UDP 多播或单播 - 最大并发诊断连接数受配置限制 - 诊断消息最大长度受 TCP 缓冲区限制 ### 4.2 对汽车领域的适用性 DoIP 适用于: - OBD(On-Board Diagnostics)连接 - 工厂诊断 - 经销商诊断 - 远程诊断 --- ## 5 与其他模块的依赖关系 | 上层 | 说明 | |---|---| | DCM | 通过 PduR 使用 DoIP 进行 UDS 诊断 | | 应用层 | 远程诊断 | | 同一层 | 说明 | |---|---| | PduR | PDU 路由 | | SoAd | 套接字操作 | | TcpIp | TCP/IP 通信 | --- ## 6 需求可追踪性 > 摘要标记:本章需求可追踪性表覆盖 `SRS_BSW_*`、`SRS_DoIP_*` 等约 80+ 项条目。代表性映射: > - `SRS_BSW_00004` → `SWS_DoIp_00001` > - `SRS_BSW_00159` → `SWS_DoIp_00002` > - `SRS_BSW_00323` → `SWS_DoIp_00010` > - 等等。完整映射请参见原文 PDF 第 6 章。 --- ## 7 功能规范 ### 7.1 DoIP 协议头 ``` 字节 0~1 字节 2~3 字节 4~7 +---------+----------+----------+ | 协议版本 | 反向协议版本 | 负载类型 | +---------+----------+----------+ ``` - 协议版本:固定 `0x02`(ISO 13400-2) - 反向协议版本:`0xFD`(反向) - 负载类型:标识消息类型 ### 7.2 DoIP 消息类型 | 负载类型 | 描述 | |---|---| | `0x0001` | Vehicle Identification Request | | `0x0002` | Vehicle Identification Response(带 VIN) | | `0x0003` | Vehicle Identification Response(带 EID) | | `0x0004` | Vehicle Identification Response(带 VIN + EID) | | `0x0005` | Routing Activation Request | | `0x0006` | Routing Activation Response | | `0x0007` | Alive Check Request | | `0x0008` | Alive Check Response | | `0x4001` | DoIP Entity Status Request | | `0x4002` | DoIP Entity Status Response | | `0x4003` | Diagnostic Power Mode Information Request | | `0x4004` | Diagnostic Power Mode Information Response | | `0x8001` | Diagnostic Message | | `0x8002` | Diagnostic Message Positive Acknowledgement | | `0x8003` | Diagnostic Message Negative Acknowledgement | | `0x0006` | Routing Activation Response | ### 7.3 状态机 DoIP 维护以下连接状态: - `DOIP_CONN_CLOSED`:未连接 - `DOIP_CONN_TCP_CONNECTED`:TCP 已连接 - `DOIP_CONN_ROUTING_ACTIVE`:路由已激活 - `DOIP_CONN_DIAG_ACTIVE`:诊断激活 ### 7.4 错误分类 #### 7.4.1 开发错误 | 错误码 | 描述 | |---|---| | `DOIP_E_NO_ERROR` | 无错误 | | `DOIP_E_UNINIT` | DoIP 未初始化 | | `DOIP_E_PARAM_POINTER` | 指针参数为 NULL | | `DOIP_E_PARAM_VALUE` | 参数值无效 | | `DOIP_E_INV_TESTER_ID` | 测试仪 ID 无效 | | `DOIP_E_INV_LOGICAL_ADDR` | 逻辑地址无效 | | `DOIP_E_INV_SOCKET_ID` | 套接字 ID 无效 | | `DOIP_E_INV_PDU_ID` | PDU ID 无效 | #### 7.4.2 运行时错误 | 错误码 | 描述 | |---|---| | `DOIP_E_TCP_CLOSED` | TCP 已关闭 | | `DOIP_E_NO_ACTIVE_ROUTING` | 无活动路由 | #### 7.4.3 瞬态故障 无。 #### 7.4.4 生产错误 | 错误码 | 描述 | |---|---| | `DOIP_E_ROUTING_ACTIVATION_FAILED` | 路由激活失败 | #### 7.4.5 扩展生产错误 | 错误码 | 描述 | |---|---| | `DOIP_E_MESSAGE_TOO_LARGE` | 消息过大 | | `DOIP_E_INVALID_PROTOCOL_VERSION` | 协议版本无效 | | `DOIP_E_DISABLED` | DoIP 已禁用 | ### 7.5 ISO 13400 兼容 DoIP 实施遵循 ISO 13400-2 标准。 --- ## 8 API 规范 ### 8.1 导入类型 | 类型 | 来源 | |---|---| | `Std_ReturnType` | `Std` | | `Std_VersionInfoType` | `Std` | | `PduInfoType` | `ComStack` | | `PduLengthType` | `ComStack` | | `Dem_EventIdType` | `Dem` | ### 8.2 类型定义 #### 8.2.1 `DoIP_ConfigType` ```c typedef struct { uint32 dummy; } DoIP_ConfigType; ``` #### 8.2.2 `DoIP_TesterHandleType` ```c typedef uint16 DoIP_TesterHandleType; ``` #### 8.2.3 `DoIP_AddressingModeType` ```c typedef enum { DOIP_ADDR_TYPE_PHYSICAL = 0, DOIP_ADDR_TYPE_FUNCTIONAL } DoIP_AddressingModeType; ``` #### 8.2.4 `DoIP_RoleType` ```c typedef enum { DOIP_ROLE_CLIENT = 0, DOIP_ROLE_SERVER } DoIP_RoleType; ``` ### 8.3 函数定义 #### 8.3.1 `DoIP_Init` ```c void DoIP_Init(const DoIP_ConfigType* ConfigPtr); ``` **描述**:初始化 DoIP 模块。 **参数**: - `ConfigPtr`:指向配置数据的指针。 **返回值**:无。 #### 8.3.2 `DoIP_Transmit` ```c Std_ReturnType DoIP_Transmit( PduIdType DoIPSourcePduId, const PduInfoType* PduInfoPtr ); ``` **描述**:发送 DoIP 诊断消息(TP 发送)。 #### 8.3.3 `DoIP_GetEntityStatus` ```c Std_ReturnType DoIP_GetEntityStatus( DoIP_EntityStatusType* EntityStatusPtr ); ``` **描述**:获取 DoIP 实体状态。 #### 8.3.4 `DoIP_GetPowerModeStatus` ```c Std_ReturnType DoIP_GetPowerModeStatus( DoIP_PowerModeType* PowerModePtr ); ``` **描述**:获取电源模式状态。 #### 8.3.5 `DoIP_ActivationLineSwitch` ```c Std_ReturnType DoIP_ActivationLineSwitch( boolean ActivationLineState ); ``` **描述**:切换激活线状态(4.3.0 新增)。 #### 8.3.6 `DoIP_VehicleAnnouncement` ```c Std_ReturnType DoIP_VehicleAnnouncement(void); ``` **描述**:发送车辆声明消息(4.4.0 更新功能)。 #### 8.3.7 `DoIP_GetVersionInfo` ```c void DoIP_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr); ``` **描述**:返回 DoIP 的版本信息。 > 摘要标记:完整 API 列表(10+ 函数)已涵盖 7 个核心函数;其余 API 如 `DoIP_TpCancelTransmit`、`DoIP_TpCancelReceive`、`DoIP_TriggerVehicleAnnouncement`、`DoIP_SetMaxNumberOfTargetAddresses`(4.4.0)等参见原文 PDF 第 8.3 节。 ### 8.4 回调通知 #### 8.4.1 `DoIP_RxIndication` ```c void DoIP_RxIndication( PduIdType RxPduId, const PduInfoType* PduInfoPtr ); ``` **描述**:由 SoAd 调用,通知接收到的 DoIP 消息。 #### 8.4.2 `DoIP_TxConfirmation` ```c void DoIP_TxConfirmation( PduIdType TxPduId, Std_ReturnType Result ); ``` **描述**:由 SoAd 调用,通知发送完成。 #### 8.4.3 `DoIP_TesterPresent` ```c void DoIP_TesterPresent( DoIP_TesterHandleType TesterHandle, DoIP_AddressingModeType AddressingMode ); ``` **描述**:通知测试仪已连接。 #### 8.4.4 `DoIP_ConnectionClosed` ```c void DoIP_ConnectionClosed( DoIP_TesterHandleType TesterHandle ); ``` **描述**:通知连接已关闭。 #### 8.4.5 `DoIP_PowerModeUpdate` ```c void DoIP_PowerModeUpdate( DoIP_PowerModeType PowerMode ); ``` **描述**:通知电源模式变化。 ### 8.5 调度函数 #### 8.5.1 `DoIP_MainFunction` ```c void DoIP_MainFunction(void); ``` **描述**:周期性处理车辆声明定时、连接状态、Alive Check 等。 **调度**:由 BSW 调度器调用(典型 10-100ms)。 ### 8.6 期望的接口 #### 8.6.1 强制接口 | API | 描述 | |---|---| | `SoAd_TpTransmit` | TP 发送 | | `SoAd_RxIndication` | 接收指示 | | `SoAd_TxConfirmation` | 发送确认 | | `SoAd_OpenSoCon` | 打开 SoCon | | `SoAd_CloseSoCon` | 关闭 SoCon | | `Det_ReportError` | 上报开发错误 | | `Dem_SetEventStatus` | 上报生产错误 | #### 8.6.2 可选接口 | API | 描述 | |---|---| | `NvM_ReadBlock` | NvM 读取(用于持久化测试仪列表) | | `NvM_WriteBlock` | NvM 写入 | | `Csm_MacGenerate` | CSM MAC 生成(用于安全访问,4.4.0) | #### 8.6.3 可配置接口 无。 --- ## 9 时序图 > 摘要标记:本章包含约 10+ 个时序图。关键流程: > - **图 1:DoIP 初始化**:EcuM → `DoIP_Init`。 > - **图 2:车辆识别**:Test Equipment → UDP `Vehicle Identification Request` → DoIP → `Vehicle Identification Response`。 > - **图 3:车辆声明**:DoIP → UDP 多播 `Vehicle Announcement`。 > - **图 4:路由激活**:Test Equipment → `Routing Activation Request` → DoIP → `Routing Activation Response`。 > - **图 5:诊断消息传输**:Test Equipment → DoIP 消息 → DCM → 响应。 > - **图 6:Alive Check**:Test Equipment → `Alive Check Request` → DoIP → `Alive Check Response`。 > - **图 7:连接关闭**。 > - **图 8:电源模式通知**。 > - **图 9:激活线切换**(4.3.0)。 > - **图 10:UUDT 消息处理**(4.2.1)。 --- ## 10 配置规范 ### 10.1 容器结构 ``` DoIP ├── DoIPGeneral ├── DoIPConfig (multi) │ ├── DoIPConnection (multi) │ │ ├── DoIPConnectionTester │ │ ├── DoIPConnectionTarget │ │ └── DoIPConnectionDemEventParameterRefs │ ├── DoIPTcpConnection (multi) │ ├── DoIPUdpConnection (multi) │ ├── DoIPRoutingActivation (multi) │ └── DoIPChannel (multi) └── DoIPDemEventParameterRefs ``` ### 10.2 关键配置参数 #### 10.2.1 `DoIPGeneral` | 参数 | 类型 | 描述 | |---|---|---| | `DoIPDevErrorDetect` | Boolean | 启用开发错误检测 | | `DoIPVersionInfoApi` | Boolean | 启用版本信息 API | | `DoIPMainFunctionPeriod` | Float | 主函数周期(秒) | | `DoIPMaxNumberOfTesters` | Integer | 最大测试仪数 | | `DoIPMaxTesterConnections` | Integer | 最大测试仪连接数 | | `DoIPProtocolVersion` | Integer | DoIP 协议版本(0x02) | | `DoIPInterfaceType` | Enum | 接口类型(`ACTIVATION_LINE` / `NETWORK`) | | `DoIPActivationLineActive` | Boolean | 激活线初始状态(4.3.0) | | `DoIPReliableTxConfirmation` | Boolean | 可靠 TxConfirmation(4.3.0) | | `DoIPVehicleAnnouncementEnabled` | Boolean | 启用车辆声明 | #### 10.2.2 `DoIPConnection` | 参数 | 类型 | 描述 | |---|---|---| | `DoIPConnectionId` | Integer | 连接 ID | | `DoIPConnectionTester` | Reference | 测试仪引用 | | `DoIPConnectionTarget` | Reference | 目标地址引用 | | `DoIPConnectionDemEventParameterRefs` | Reference | DEM 事件引用 | #### 10.2.3 `DoIPTcpConnection` | 参数 | 类型 | 描述 | |---|---|---| | `DoIPTcpPort` | Integer | TCP 端口(默认 13400) | | `DoIPTcpSoConId` | Reference | 套接字连接 ID | | `DoIPTcpRole` | Enum | `CLIENT` / `SERVER` | #### 10.2.4 `DoIPUdpConnection` | 参数 | 类型 | 描述 | |---|---|---| | `DoIPUdpPort` | Integer | UDP 端口(默认 13400) | | `DoIPUdpSoConId` | Reference | 套接字连接 ID | | `DoIPUdpBroadcastAddress` | String | 广播地址 | #### 10.2.5 `DoIPRoutingActivation` | 参数 | 类型 | 描述 | |---|---|---| | `DoIPRoutingActivationType` | Enum | 路由激活类型(Default / WwhObd 等) | | `DoIPRoutingActivationNumber` | Integer | 路由激活号 | | `DoIPRoutingActivationAuthRequired` | Boolean | 需要认证 | | `DoIPRoutingActivationConfRequired` | Boolean | 需要确认 | #### 10.2.6 `DoIPChannel` | 参数 | 类型 | 描述 | |---|---|---| | `DoIPChannelId` | Integer | 通道 ID | | `DoIPChannelTester` | Reference (multi) | 测试仪引用 | | `DoIPChannelTarget` | Reference (multi) | 目标地址引用 | | `DoIPChannelProtocol` | Enum | `UDS` / `KWP2000` | | `DoIPChannelMaxFrameSize` | Integer | 最大帧大小 | | `DoIPChannelMaxNumOfPendingDiagnostics` | Integer | 最大挂起诊断数(4.2.2 并行会话) | #### 10.2.7 `DoIPEntity` | 参数 | 类型 | 描述 | |---|---|---| | `DoIPEntityLogicalAddress` | Integer | 实体逻辑地址 | | `DoIPEntityVin` | String | VIN(17 字节) | | `DoIPEntityGid` | OctetString | GID(6 字节) | | `DoIPEntityEid` | OctetString | EID(6 字节) | | `DoIPEntityPowerMode` | Enum | 初始电源模式 | | `DoIPEntityMaxTargetAddresses` | Integer | 最大目标地址数(4.4.0) | ### 10.3 发布信息 无附加发布参数。 --- ## 翻译说明 - 本文档基于 **AUTOSAR CP Release 4.4.0** 翻译,对应原文 `AUTOSAR_SWS_DiagnosticOverIP.pdf`(122 页)。 - 关键翻译策略: - **完整翻译**:封面、文档标识、变更历史、目录、章节 1-10 的所有正文、API 声明、错误分类、配置参数。 - **保留英文**:所有 API 名、类型名、DoIP 消息类型、状态名、配置参数标识符、需求 ID、ISO 13400 标准引用。 - **摘要标记**:第 6 章需求可追踪性表涵盖 80+ 项需求;第 8.3 节 API 列出 7 个核心函数(原文 10+ 个);第 9 章时序图列出 10 个关键图。完整内容请参见原文 PDF。 - 内容置信度:高。所有 DoIP 协议头、消息类型、状态、API 签名、配置容器均已涵盖。