如果工作内容和通讯有关,在和同事或者客户交流时,基本离不开"PDU","Signal"等词语。
如果没有特别的要求,只要涉及到消息,信号等的场合,说PDU, Signal准没错。不过呢,为了提高沟通效率,有的时候我们可以具体指出是说的什么模块有关的PDU,什么功能的PDU;因此,今天我们就来回顾一下PDU这个概念。
PDU是Protocol Data Unit的缩写,而我们又知道,协议有很多种,不同的功能簇,分层的每一层都可能有一种协议的定义,因此PDU是一个相对广泛的概念。例如Com模块中组合了signal的PDU,CanIf模块中为使用CAN通信而创建的PDU等等。
基于分层的不同,在AUTOSAR中一般将PDU分为三类:I-PDU, N-PDU, L-PDU。

I,N,L分为代表交互层,网络层,数据链路层。
以CAN stack为例,平日在和客户交流时,如果明确指出是I-PDU,那么我们就知道是在说COM层的事情。当然,如果交流的是诊断问题,那么就是和DCM模块有关。
如果提到的是N-PDU,那么就是TP层的事情。

如果是L-PDU,那么就是CanIf里的PDU。

至于PDU之间的关系,我们可以借用这张图来理解,

PDU主要包含两部分信息,PCI(协议控制信息)也即常说的头部信息,而SDU(服务数据单元)则是具体的payload。像刚才提到的N-PDU,他对于CanIf来说就是L-PDU中的SDU。
在你平常的工作当中,你会刻意区分PDU的描述吗?