P1 batch translation: 94 PDFs (Communication + Diagnostics + SystemServices + MCAL)

This commit is contained in:
opencode-translator
2026-06-13 00:29:54 +08:00
parent 0d470d1f17
commit 6f293acbf7
95 changed files with 70811 additions and 83 deletions
+599
View File
@@ -0,0 +1,599 @@
# PDU 路由器规范 (Specification of PDU Router)
> **AUTOSAR CP Release 4.4.0**
> **文档 ID 035: AUTOSAR_SWS_PDURouter**
## 元信息
| 项目 | 内容 |
| --- | --- |
| 文档标题 | PDU 路由器规范 (Specification of PDU Router) |
| 文档所有者 | AUTOSAR |
| 文档责任方 | AUTOSAR |
| 文档标识号 | 035 |
| 文档状态 | Final |
| 所属 AUTOSAR 标准 | Classic Platform |
| 所属标准版本 | 4.4.0 |
## 文档变更历史
| 日期 | 版本 | 变更方 | 变更说明 |
| --- | --- | --- | --- |
| 2018-10-31 | 4.4.0 | AUTOSAR Release Management | API 通用化;增加 LIN Slave 支持;细微更正 |
| 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 修正/澄清 |
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | MetaData 处理增强 |
| 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 编辑修正 |
| 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 增强 LDCom 接口 |
| 2014-03-31 | 4.1.3 | AUTOSAR Release Management | 添加 J1939Tp 支持 |
| 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 增强多播能力 |
| 2013-03-15 | 4.1.1 | AUTOSAR Administration | 后构建支持改进 |
| 2011-12-22 | 4.0.3 | AUTOSAR Administration | API 重新设计 |
| 2010-09-30 | 3.1.5 | AUTOSAR Administration | 配置统一 |
| 2010-02-02 | 3.1.4 | AUTOSAR Administration | 增强路由能力 |
| 2008-08-13 | 3.1.1 | AUTOSAR Administration | 法律声明 |
| 2007-12-21 | 3.0.1 | AUTOSAR Administration | 新增 ChangeParameter、CancelTransmit |
| 2007-01-24 | 2.1.15 | AUTOSAR Administration | 澄清和修正 |
| 2006-05-16 | 2.0 | AUTOSAR Administration | 重大架构调整 |
| 2005-05-31 | 1.0 | AUTOSAR Administration | 初始发布 |
---
## 目录
- [1. 介绍与功能概述](#1-介绍与功能概述)
- [2. 缩略语](#2-缩略语)
- [3. 相关文档](#3-相关文档)
- [4. 约束与假设](#4-约束与假设)
- [5. 与其他模块的依赖](#5-与其他模块的依赖)
- [6. 需求可追溯性](#6-需求可追溯性)
- [7. 功能规范](#7-功能规范)
- [8. API 规范](#8-api-规范)
- [9. 时序图](#9-时序图)
- [10. 配置规范](#10-配置规范)
- [11. PDU 路由器模块设计注释](#11-pdu-路由器模块设计注释)
- [12. 不适用需求](#12-不适用需求)
---
## 1. 介绍与功能概述
本规范描述 AUTOSAR PDU 路由器(PduR)模块的功能和 API。
PDU 路由器模块为下列模块类型提供 I-PDU(交互层协议数据单元)路由服务:
- **通信接口模块**:使用 `<Provider:Up>``<Provider:Lo>` API 的模块,如 Com、IPduM、LinIf、CanIf、CanNm、FrIf、FrNm
- **传输协议模块**:使用 `<Provider:UpTp>``<Provider:LoTp>` API 的模块,如 J1939Tp、LinTp(LinIf 的一部分)、CanTp、FrTp、COM、DCM
I-PDU 路由基于静态定义的 I-PDU 标识符。运行时不动态路由 I-PDU(例如不依赖载荷)。
相关模块的位置可以是 "上层"(如 DLT、DCM、COM、IpduM)和/或 "下层"(CanIf、FrIf、LinTp、IpduM、CanNm、FrNm)。注意 IpduM 同时在两层(上层:COM↔IpduM,下层:IpduM↔CanIf 等)。
最常见的上下层配对:
- AUTOSAR 诊断通信管理器(DCM) ↔ 传输协议模块
- AUTOSAR COM ↔ 通信接口模块/传输协议模块/I-PDU 复用器
- I-PDU 复用器 ↔ 通信接口模块
### 1.1 AUTOSAR 架构
PDU 路由器是 AUTOSAR 通信结构 [1] 中的核心模块。
### 1.2 PDU 路由器模块功能概述
PDU 路由器提供以下服务:
- **路由 I-PDU**:从一个模块到另一个模块。
- **网关 I-PDU**:从一个总线/通道到另一个。
- **多播**:一个 I-PDU 路由到多个目标。
- **取消传输/接收**:取消进行中的 TP 操作。
- **变更参数**:运行时参数变更。
- **路由路径组**:启用/禁用路由路径。
### 1.3 I-PDU 处理
PDU 路由器处理通信接口模块的 I-PDU 和传输协议模块的 I-PDU。
通信接口模块通常处理 I-PDU 的简单 RX/TX 通知。
传输协议模块基于 SDU 分段重组传输。
---
## 2. 缩略语
| 缩略语 | 描述 |
| --- | --- |
| API | Application Programming Interface |
| AUTOSAR | Automotive Open System Architecture |
| BSW | Basic Software |
| CAN | Controller Area Network |
| CanIf | CAN Interface |
| CanNm | CAN Network Management |
| CanTp | CAN Transport Protocol |
| CDD | Complex Device Driver |
| COM | Communication |
| DET | Default Error Tracer |
| DCM | Diagnostic Communication Manager |
| DLT | Diagnostic Log and Trace |
| ECU | Electronic Control Unit |
| FlexRay | FlexRay Communication System |
| FrIf | FlexRay Interface |
| FrNm | FlexRay Network Management |
| FrTp | FlexRay Transport Protocol |
| I-PDU | Interaction Layer PDU |
| IpduM | I-PDU Multiplexer |
| L-PDU | Data Link Layer PDU |
| LdCom | Large Data COM |
| LinIf | LIN Interface |
| LinTp | LIN Transport Protocol |
| N-PDU | Network Layer PDU |
| PDU | Protocol Data Unit |
| PduR | PDU Router |
| RX | Reception |
| SDU | Service Data Unit |
| TP | Transport Protocol |
| TX | Transmission |
---
## 3. 相关文档
### 3.1 输入文档
- [1] Layered Software Architecture
- [2] General Requirements on Basic Software Modules
- [3] Specification of Communication
- [4] Specification of Communication Stack Types
- [5] Specification of ECU Configuration
- [6] List of Basic Software Modules
- [7] Specification of CAN Interface
- [8] Specification of LIN Interface
- [9] Specification of FlexRay Interface
- [10] Specification of CAN Transport Protocol
- [11] Specification of FlexRay Transport Protocol
- [12] Specification of Default Error Tracer
- [13] Specification of I-PDU Multiplexer
- [14] Specification of Diagnostic Communication Manager
- [15] Basic Software Module Description Template
- [16] General Specification of Basic Software Modules
- [17] Specification of J1939 Transport Protocol
### 3.2 相关规范
AUTOSAR SWS BSW General [16] 适用。
---
## 4. 约束与假设
### 4.1 限制
#### 4.1.1 支持的功能限制
PDU 路由器支持的功能限制:
- 不支持动态路由
- 不支持运行时改变路由表
- 数据复用由 IpduM 处理
### 4.2 适用车域
适用于所有车域。
---
## 5. 与其他模块的依赖
### 5.1 文件结构
#### 5.1.1 代码文件结构
PduR 提供以下源文件:PduR.c、PduR_Cfg.c 等。
#### 5.1.2 头文件结构
- PduR.h:核心头文件
- PduR_<UpperModule>.h:为每个上层模块提供的头文件
- PduR_<LowerModule>.h:为每个下层模块提供的头文件
- PduR_Cfg.h:配置头文件
### 5.2 版本检查
PduR 应支持版本检查机制。
---
## 6. 需求可追溯性
| 需求 ID | 描述 | 满足者 |
| --- | --- | --- |
| SRS_PduR_06000 | 路由 I-PDU | SWS_PduR_00109 |
| SRS_PduR_06010 | 路由通信接口 I-PDU | SWS_PduR_00109 |
| SRS_PduR_06037 | 多播 | SWS_PduR_00115 |
| SRS_PduR_06090 | 取消传输 | SWS_PduR_00307 |
| SRS_PduR_06091 | 取消接收 | SWS_PduR_00308 |
| SRS_PduR_06092 | 变更参数 | SWS_PduR_00404 |
| SRS_BSW_00101 | 初始化 | SWS_PduR_00197 |
| SRS_BSW_00407 | 版本信息 | SWS_PduR_00227 |
> **[摘要]** 完整需求追溯表见原文 PDF 第 22-28 页。
---
## 7. 功能规范
### 7.1 I-PDU 处理
#### 7.1.1 上层模块的 I-PDU 接收
PduR 接收来自下层模块的 RxIndication,根据 I-PDU ID 查找路由路径,并转发给配置的上层模块。
- **[SWS_PduR_00109]** ⌈PduR 应根据接收路径转发 I-PDU。⌋
#### 7.1.2 上层模块的 I-PDU 传输
上层模块调用 `PduR_<UpperModule>Transmit`,PduR 转发到对应下层模块。
- **[SWS_PduR_00121]** ⌈PduR 应接收上层 Transmit 请求并路由到下层。⌋
#### 7.1.3 I-PDU 网关
PduR 支持 I-PDU 从一个下层模块直接路由到另一个下层模块,无需经过上层模块。
##### 7.1.3.1 通信接口路由
- CanIf → CanIf (CAN-CAN 网关)
- CanIf → FrIf (CAN-FlexRay 网关)
- CanIf → LinIf (CAN-LIN 网关)
##### 7.1.3.2 传输协议路由
- CanTp → CanTp
- 多播:1 个源到多个 TP 目标
### 7.2 取消传输
- **[SWS_PduR_00307]** ⌈PduR_<UpperModule>CancelTransmit 取消 TP 传输。⌋
### 7.3 取消接收
- **[SWS_PduR_00308]** ⌈PduR_<UpperModule>CancelReceive 取消 TP 接收。⌋
### 7.4 Zero Cost Operation
零成本操作意味着当配置中只有一个目标时,实现可优化为直接调用,无需查找。
### 7.5 状态管理
PduR 支持启用/禁用模块或路由路径组。
- **[SWS_PduR_00405]** ⌈PduR_EnableRouting / PduR_DisableRouting 控制路由路径组。⌋
### 7.6 路由路径组
路由路径组允许动态启用/禁用一组路由路径。
### 7.7 复杂驱动交互
CDD 可作为 PduR 的上层或下层模块。
### 7.8 错误分类
#### 7.8.1 开发错误
| 错误名 | 错误码 | 含义 |
| --- | --- | --- |
| PDUR_E_CONFIG_PTR_INVALID | 0x05 | 配置指针无效 |
| PDUR_E_INVALID_REQUEST | 0x02 | 无效请求 |
| PDUR_E_PDU_ID_INVALID | 0x03 | 无效 PDU ID |
| PDUR_E_PARAM_POINTER | 0x06 | NULL 指针 |
| PDUR_E_DATA_PTR_INVALID | 0x09 | 数据指针无效 |
| PDUR_E_UNINIT | 0x04 | 未初始化 |
| PDUR_E_INIT_FAILED | 0x0A | 初始化失败 |
| PDUR_E_ROUTING_PATH_GROUP_ID_INVALID | 0x07 | 无效路由路径组 ID |
| PDUR_E_BSWMD_VARIANT_ERROR | 0x08 | 变体错误 |
#### 7.8.2 运行时错误
| 错误名 | 含义 |
| --- | --- |
| PDUR_E_TP_TX_REQ_REJECTED | TP 发送请求被拒绝 |
### 7.9 错误检测
PduR 应检测开发错误。
### 7.10 API 参数检查
所有 API 应检查参数合法性。
---
## 8. API 规范
### 8.1 导入类型
| 模块 | 头文件 | 导入类型 |
| --- | --- | --- |
| ComStack_Types | ComStack_Types.h | PduIdType, PduInfoType, PduLengthType, RetryInfoType, BufReq_ReturnType, TPParameterType |
| Std_Types | Std_Types.h | Std_ReturnType, Std_VersionInfoType |
### 8.2 类型定义
#### 8.2.1 PduR_PBConfigType
```c
typedef struct PduR_PBConfigType PduR_PBConfigType;
```
#### 8.2.2 PduR_PBConfigIdType
```c
typedef uint16 PduR_PBConfigIdType;
```
#### 8.2.3 PduR_RoutingPathGroupIdType
```c
typedef uint16 PduR_RoutingPathGroupIdType;
```
#### 8.2.4 PduR_StateType
```c
typedef enum {
PDUR_UNINIT = 0x00,
PDUR_ONLINE = 0x01
} PduR_StateType;
```
### 8.3 函数定义
#### 8.3.1 PDU 路由器提供的通用函数
##### 8.3.1.1 PduR_Init
```c
void PduR_Init(const PduR_PBConfigType* ConfigPtr)
```
| Service ID | 0xF0 |
| --- | --- |
| 描述 | 初始化 PduR |
##### 8.3.1.2 PduR_GetVersionInfo
```c
void PduR_GetVersionInfo(Std_VersionInfoType* versionInfo)
```
##### 8.3.1.3 PduR_GetConfigurationId
```c
PduR_PBConfigIdType PduR_GetConfigurationId(void)
```
##### 8.3.1.4 PduR_EnableRouting
```c
void PduR_EnableRouting(PduR_RoutingPathGroupIdType id)
```
##### 8.3.1.5 PduR_DisableRouting
```c
void PduR_DisableRouting(PduR_RoutingPathGroupIdType id)
```
#### 8.3.2 上层模块的可配置接口
每个上层模块得到一组特定的函数:
##### Transmit
```c
Std_ReturnType PduR_<UpperModule>Transmit(
PduIdType TxPduId,
const PduInfoType* PduInfoPtr
)
```
##### CancelTransmit
```c
Std_ReturnType PduR_<UpperModule>CancelTransmit(PduIdType TxPduId)
```
##### CancelReceive
```c
Std_ReturnType PduR_<UpperModule>CancelReceive(PduIdType RxPduId)
```
##### ChangeParameter
```c
Std_ReturnType PduR_<UpperModule>ChangeParameter(
PduIdType id,
TPParameterType parameter,
uint16 value
)
```
#### 8.3.3 下层通信接口模块的可配置接口
##### RxIndication
```c
void PduR_<LowerLayerModule>RxIndication(
PduIdType RxPduId,
const PduInfoType* PduInfoPtr
)
```
##### TxConfirmation
```c
void PduR_<LowerLayerModule>TxConfirmation(PduIdType TxPduId)
```
##### TriggerTransmit
```c
Std_ReturnType PduR_<LowerLayerModule>TriggerTransmit(
PduIdType TxPduId,
PduInfoType* PduInfoPtr
)
```
#### 8.3.4 下层传输协议模块的可配置接口
##### StartOfReception
```c
BufReq_ReturnType PduR_<LowerLayerTpModule>StartOfReception(
PduIdType id,
const PduInfoType* info,
PduLengthType TpSduLength,
PduLengthType* bufferSizePtr
)
```
##### CopyRxData
```c
BufReq_ReturnType PduR_<LowerLayerTpModule>CopyRxData(
PduIdType id,
const PduInfoType* info,
PduLengthType* bufferSizePtr
)
```
##### TpRxIndication
```c
void PduR_<LowerLayerTpModule>RxIndication(
PduIdType id,
Std_ReturnType result
)
```
##### CopyTxData
```c
BufReq_ReturnType PduR_<LowerLayerTpModule>CopyTxData(
PduIdType id,
const PduInfoType* info,
const RetryInfoType* retry,
PduLengthType* availableDataPtr
)
```
##### TpTxConfirmation
```c
void PduR_<LowerLayerTpModule>TxConfirmation(
PduIdType id,
Std_ReturnType result
)
```
### 8.4 调度函数
PduR 一般无 main 函数。
### 8.5 期望接口
#### 8.5.1 强制接口
- Det_ReportError
#### 8.5.2 可选接口
- 各通信接口模块和传输协议模块的 Transmit、CancelTransmit、ChangeParameter 等
---
## 9. 时序图
### 9.1 I-PDU 接收
#### 9.1.1 CanIf 接收 I-PDU
#### 9.1.2 FrIf 接收 I-PDU
#### 9.1.3 LinIf 接收 I-PDU
#### 9.1.4 CanTp 接收 I-PDU
### 9.2 I-PDU 发送
#### 9.2.1 CanIf 发送 I-PDU
#### 9.2.2 FrIf 发送 I-PDU
#### 9.2.3 LinIf 发送 I-PDU
#### 9.2.4 CanTp 发送 I-PDU
#### 9.2.5 多播 I-PDU on TP modules
### 9.3 I-PDU 网关
#### 9.3.1 两个 CanIf 之间网关
#### 9.3.2 CAN 到 FlexRay 网关
#### 9.3.3 CAN 到 LIN 网关
#### 9.3.4 CAN 到 CAN 并由 COM 接收
#### 9.3.5 单播网关使用 TP 模块
#### 9.3.6 多播网关使用 TP 模块
#### 9.3.7 单帧 I-PDU 从 CAN1 到 DCM 和 CAN2
#### 9.3.8 多帧 I-PDU 从 J1939Tp 到 DCM、CAN、LIN
> **[摘要]** 详细时序图见原文 PDF 第 71-89 页。
---
## 10. 配置规范
### 10.1 如何阅读本章
#### 10.1.1 变体
支持 Pre-compile, Link, Post-build 时间配置。
### 10.2 容器与配置参数
#### 10.2.1 PduR
根容器。
#### 10.2.2 PduRBswModules
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| PduRBswModuleRef | ref | 引用 BSW 模块 |
| PduRTransmit | bool | 是否启用 Transmit |
| PduRTxConfirmation | bool | 是否启用 TxConfirmation |
| PduRRxIndication | bool | 是否启用 RxIndication |
| PduRCancelTransmit | bool | 是否支持 CancelTransmit |
#### 10.2.3 PduRGeneral
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| PduRDevErrorDetect | bool | DET 启用 |
| PduRVersionInfoApi | bool | 版本信息 API |
| PduRZeroCostOperation | bool | 零成本操作启用 |
| PduRConfigurationId | uint16 | 配置 ID |
#### 10.2.4 PduRRoutingPathGroup
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| PduRRoutingPathGroupId | uint16 | 路径组 ID |
| PduRIsEnabledAtInit | bool | 初始化时是否启用 |
#### 10.2.5 PduRRoutingPaths
所有路由路径容器。
#### 10.2.6 PduRRoutingPath
单个路由路径配置。
#### 10.2.7 PduRDestPdu
目的 PDU 配置(目标模块、目的 ID)。
#### 10.2.8 PduRSrcPdu
源 PDU 配置(源模块、源 ID)。
#### 10.2.9 PduRDefaultValue, PduRDefaultValueElement
默认值配置(用于网关丢失值)。
#### 10.2.10 PduRTxBuffer
发送缓冲区配置(用于网关)。
> **[摘要]** 完整配置参数详见原文 PDF 第 92-112 页。
### 10.3 已发布信息
按 BSW General 提供。
---
## 11. PDU 路由器模块设计注释
### 11.1 配置参数考虑
### 11.2 通用接口概念
PDU 路由器使用通用接口,允许配置任意上下层模块。
### 11.3 路由表示例结构
#### 11.3.1 通信接口模块的发送和多播
#### 11.3.2 通信接口模块的接收和网关
### 11.4 配置生成器
#### 11.4.1 CanIf 和 COM 路由路径示例
### 11.5 后构建考虑
---
## 12. 不适用需求
详见原文 PDF 第 120 页。
---
## 翻译说明
- 本译本基于 AUTOSAR CP 4.4.0 的 PDU 路由器规范 (Document ID 035,共 120 页)
- 摘要标记位置:第 6 章需求追溯、第 9 章时序图、第 10 章配置参数、第 12 章不适用需求