所谓梦想,就是让你感到痛苦的事情不再发生。
一、前言
在学习AUTOSAR通信栈时,我们会遇到多种PDU相关的缩写,如L-PDU、N-PDU、I-PDU等。理解这些缩写及其相互关系、以及它们与OSI七层模型的对应关系,对于掌握通信部分至关重要。接下来,我们结合OSI模型、PCI/SDU/PDU定义、PduR模块核心逻辑及数据流,带大家彻底搞懂AUTOSAR通信栈的核心原理。
PduR的全称为Pdu Router。 PduR模块属于BSW组件的一个模块,模块提供基于通讯接口(Com、LinIf、CanIf、CanNm)或传输协议(J1939Tp、CanTp、Com、DCM)的I-PDUS的传输、转发、路由功能。PduR模块处于通信模块的中心,提供基于接口模块的通用方法。

二、数据流
PduR位于通信模块的核心位置,为通信模块的PDU数据提供静态路由功能。PduR Routing Tables是静态路由表,是关于所有I-PDU的路由配置。

2.1、COM数据流
COM模块负责将上层RTE传递的应用信号打包成I-PDU,再通过PduR路由到底层,最终通过CAN总线发送;反之,底层接收的信号也通过PduR路由到COM,解包后传递给上层应用。完整数据流如下:
CAN driver <--(LPDU)--> CanIf <--(IPDU)--> PDU Router <--(IPDU)--> COM <--(Signals)--> RTE
-
CAN driver:负责接收、发送CAN信号;配置CAN通道、波特率、端口等硬件相关参数,直接与物理总线交互。
-
CanIf:对CAN驱动层进行封装,向上层提供统一接口和通知函数;实现DLC、ID到PDU的转换,完成L-PDU与I-PDU的封装/解封装。
-
PDU Router:核心是传递数据到对应的上层模块;通过预配置的路由表,实现I-PDU的精准转发,不参与数据修改。
-
COM:将上层RTE传递的Signals(信号)打包成I-PDU,或将接收的I-PDU解包为Signals;向上层提供接收、发送信号/帧的接口。
-
RTE:运行时环境,负责上层应用与COM模块之间的信号传递,是上层应用与BSW层的交互桥梁。
2.2、诊断数据流
诊断数据流主要用于ECU的诊断、刷写、故障检测等场景,PduR负责DCM与CanTp之间的I-PDU路由,完整数据流如下:
CAN driver <--(LPDU)--> CanIf <--(NPDU)--> CanTp <--(IPDU)--> PDU Router <--(IPDU)--> DCM
-
CanTp:遵循ISO15765协议,负责长I-PDU的拆包、组包;配置时间参数、回调函数等,实现N-PDU的生成与重组。
-
DCM:为上层应用提供UDS服务、OBD服务;生成诊断相关的I-PDU(如诊断请求/响应),解析接收的诊断I-PDU并执行对应逻辑。
三、AutoSAR与OSI模型对应关系
AUTOSAR的通信分层架构简化了OSI模型,核心层级与OSI模型的对应关系如下,每个层级均包含PCI(协议控制信息)和数据结构(data Structure),且遵循"PDU = PCI + data Structure""SDU = data Structure"的核心规则。
| AUTOSAR层级 | 对应OSI模型层级 | 核心模块/PDU类型 |
|---|---|---|
| 交互层 | 会话层、表示层 | COM、DCM,对应I-PDU |
| 网络层(传输层) | 网络层、传输层 | CanTp、J1939Tp,对应N-PDU |
| 数据链路层 | 数据链路层、物理层 | CanIf、CAN Driver,对应L-PDU |
| 应用层(逻辑) | 应用层 | 上层应用,对应SDU(业务数据) |
四、协议数据单元PDU
在上述数据流中,出现了三种协议数据单元:L-PDU、N-PDU、I-PDU,本章来讲解这些PDU的含义。
L-PDU:Data Link Layer PDU,数据链路层PDU,含ID、DLC、Data;
N-PDU:NetWork Layer PDU,网络层PDU,含N-PCI(单帧、首帧、连续帧、流控帧);
I-PDU:Interaction Layer PDU,数据交互层PDU,包含真正要发的数据,单帧传输时,I-PDU为L-PDU的Data,多帧传输时,I-PDU由多个 N_PDU 重组;
五、总结
1、定位:AUTOSAR BSW层通信模块的"中枢路由器",串联上层(COM、DCM)与下层(CanIf、CanTp、CAN driver),核心是路由转发,不修改任何数据;
-
核心机制:基于静态路由表(PduR Routing Tables)实现I-PDU的精准路由,路由规则在编译期确定,运行时稳定可靠,适配车载通信的高安全性需求;
-
关键数据流:普通数据流(COM信号)和诊断数据流(UDS)是最核心的应用场景,各模块分工明确,PduR在其中承担"承上启下"的路由核心作用;
-
层级与PDU关联:AUTOSAR通信层与OSI模型存在对应关系,PCI、SDU、PDU是数据传输的核心载体;I-PDU、N-PDU、L-PDU分别对应交互层、网络层、数据链路层,三者通过分帧/重组、封装/解封装实现数据传输,PduR仅负责I-PDU的路由。
PduR模块看似简单,却是车载通信的"隐形基石"------没有它,上层应用的信号和诊断数据无法精准传递到底层总线,不同模块间的通信也会陷入混乱。掌握PduR的路由逻辑、数据流,以及I-PDU/N-PDU/L-PDU的辨析,是理解AUTOSAR通信栈的关键一步。