AUTOSAR Classic PduR 模块详解:路由中枢、配置与使用场景
PduR(PDU Router) 是 AUTOSAR Classic 通信栈中的路由中枢,负责把一个模块发来的 PDU 转发到另一个模块。它不解析信号,也不直接控制硬件,而是完成通信路径的“接力”。
1. PduR 的作用
- 统一路由上层与下层模块之间的 PDU
- 解耦 COM、CanIf、CanTp、Dcm 等模块
- 支持网关转发
- 支持路由组控制和部分高级缓存场景
2. PduR 的工作原理
PduR 的本质是“运行时按静态路由表转发 PDU”。发送路径上,它把 COM 发来的 I-PDU 转给 CanIf;接收路径上,它把 CanIf 收到的 PDU 分发给 COM 或其他上层模块。
flowchart LR
COM[COM] --> PDUR[PduR]
PDUR --> CANIF[CanIf]
CANIF --> CAN[CAN Driver]
CAN --> BUS[(CAN Bus)]
BUS --> CAN
CAN --> CANIF
CANIF --> PDUR
PDUR --> COM
3. 典型配置项及作用
| 常见/典型名称 | 作用 |
|---|---|
| PduRDevErrorDetect | 开发错误检测 |
| PduRVersionInfoApi | 版本信息接口 |
| PduRConfigurationId | 配置版本标识 |
| PduRRoutingPathList | 路由路径列表 |
| PduRSrcPduRef | 源 PDU 引用 |
| PduRDestPduRef | 目的 PDU 引用 |
| PduRSrcModuleRef | 源模块引用 |
| PduRDestModuleRef | 目的模块引用 |
| PduRRoutingPathGroup | 路由组 |
| PduRRoutingType | 路由类型/方向 |
| PduRBufferLength | 缓冲区长度 |
| PduRTpBuffer | 传输层缓冲 |
| PduRMetaDataLength | 元数据长度 |
4. 常见使用场景
- COM 与 CanIf 之间的普通通信
- UDS 诊断链路:CanIf ↔ PduR ↔ CanTp ↔ Dcm
- CAN/CAN、CAN/LIN 等网关转发
- 按条件启停部分通信路径
- 多车型配置复用
5. 与 COM、CanIf 的关系
COM 负责“内容”,PduR 负责“路径”,CanIf 负责“接口适配”。因此,PduR 是 AUTOSAR Classic 里把各类通信模块连接起来的关键路由层。
sequenceDiagram
participant App as Application
participant COM as COM
participant PduR as PduR
participant CanIf as CanIf
App->>COM: 更新信号
COM->>PduR: 发送 I-PDU
PduR->>CanIf: 路由转发
CanIf-->>PduR: TxConfirmation / RxIndication
PduR-->>COM: 上报结果
7. 小结
PduR 是 AUTOSAR Classic 的“PDU 路由中心”,不负责信号语义,但负责把通信模块之间的路径打通。