Autosar通信入门系列02-一文看懂各层PDU

文章详细介绍了Autosar通信栈中的PDU概念,包括L-PDU、N-PDU和I-PDU,以及它们在OSI模型中的对应层次。L-PDU涉及数据链路层,由CANDriver处理;N-PDU在网络层,包含N_AI和N_PCI信息;I-PDU用于应用层交互,可能需要通过Tp层处理大数据。此外,文章还提到了PCI作为协议控制信息的角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 概述

在学习Autosar通信栈时中会遇到关于PDU的各种缩写,例如,L-PDU,N-PDU,I-PDU还有SDU等,它们分别是什么含义?相互之间有什么联系?与OSI的七层通信模型又是怎么对应的?
理清楚这部分内容对通信部分的学习非常重要,本篇就来跟大家一起学习下。
如下附上一张Autosar通信示意图,大家先有个宏观印象。
在这里插入图片描述

1.1 缩写

PDU:Protocol Data Unit,协议数据单元;
L-PDU:Data Link Layer PDU,数据链路层PDU;
N-PDU:NetWork Layer PDU,网络层PDU;
I-PDU:Interaction Layer PDU,数据交互层PDU;
SDU:Service Data Unit,服务数据单元”的缩写,是由上层传递的数据,带有传输数据的请求。在由下层接收之后提取并传递到上层的数据也是如此;
PCI:Protocol Control Information,协议控制信息,如单帧,首帧,流控帧,连续帧等信息。

2. OSI模型在Autosar中应用

OSI通信模型包括七层,分别是:
物理层,数据链路层,网络层,传输层,会话层,表示层及应用层,各层对应的作用如下表:
在这里插入图片描述
对比OSI模型,AUTOSAR规范未严格按照OSI模型并将其划分为:物理层数据链路层网络层交互层,各层与PDU之间的交互关系如下图:
在这里插入图片描述

3. 各层PDU介绍

各层PDU对应的层级及关联的AUTOSAR模块如下:
在这里插入图片描述

3.1 L-PDU

L-PDU即数据链路层PDU,由ID数据长度数据组成,在以CAN通信为例,在CAN Driver接收总线上传来的信号电平之后生成L-PDU,L-PDU传输至CANIf
在这里插入图片描述
data Structure即需要发送的信息,用一个结构体表示,结构体里包括数据存储起始位置(指针)及数据长度。

typedef  P2VAR(uint8, TYPEDEF, AUTOSAR_COMSTACKDATA) SduDataPtrType;
typedef uint16 PduLengthType; 

typedef struct
{
  SduDataPtrType SduDataPtr;
  PduLengthType SduLength;
} PduInfoType;

PCI即协议控制信息,PCI由传输侧的协议层添加,并且在接收侧再次移除

3.2 N-PDU

N-PDU即网络层PDU,在TP层与If层之间传输,其组成:N_AI + N_PCI + N_Data
在这里插入图片描述
根据N_PCI类型的不同可分为单帧/首帧/连续帧/流控帧。

3.2.1 N_AI

该参数指的是地址信息用于识别网络层的对等通信实体,总的来说,N_AI参数用于确定信息发送者和接收者的源地址(N_SA),目标地址(N_TA),也包含功能/物理寻址类型(N_TAtype)和可选择地址扩展(N_AE)的通信模式。

在N_SDU中接收到的N_AI信息——N_SA、N_TA、N_TAtype、N_AE)——应被复制并包含在N_PDU中。如果在N_SDU中接收的消息数据(<MessageData>和<Length>)太长,以至于网络层需要分段来传输完整的消息,N_AI应被复制并包括(重复)在传输的每个N_PDU中。

3.2.2 N_PCI

N_PCI即协议控制信息,包括PCItype(帧类型:单帧/首帧/连续帧/流控帧),PCI由传输侧的协议层添加,并且在接收侧再次移除。
在这里插入图片描述
网络层对等实体间传输的示意:
在这里插入图片描述
在这里插入图片描述

3.3 I-PDU

交互层PDU,一般而言对于应用信号类型的通信由xxxIf层与PduR直接交互,对于诊断大数据类型需要经过Tp层中转为N-PDU后再打包重组成I-PDU,即I-PDU = x*N-PDU,x>= 1。
在这里插入图片描述

这里的NM主要是针对Can协议的网路管理。 AUTOSAR CanNM的核心思想主要归纳为以下两条: 1.  如果节点需要保持通信,则节点需要周期的发送NMPDUs,否则停止发送NMPDUs 2.     如果总线上的所有节点不需要使用总线,那么总线上过了一段时间没有NMPDUs时,则会进入Bus-Sleep Mode。   工作模式和状态   CanNm一共有三个工作模式 1.  Network Mode 2.  PrepareBus-Sleep Mode 3.  Bus-Sleep Mode 模式的改变应该通过回调函数通知上。 下面单独说每种模式   (1)Network Mode Network Mode又包括三个内部状态 1. Repeat Message State 2. Normal Operation State 3. Ready Sleep State ①Repeat Message State 这个模式被用来确保从Bus-Sleep or Prepare Bus-Sleep到Network Mode的节点被总线上面其他节点发现。这个状态可以用来检测总线上的节点。 当进入Repeat Message State时,节点应该开始传送NMPDUs。 在Repeat Message State时,当NM-Timeout Timer溢出,CanNm模块应该重载Timer。 CanNm模块应该在Repeat Message State 下保持一段时间,这段时间可以通过CANNM_REPEAT_MESSAGE_TIME来进行配置。 当离开Repeat Message State的时候,如果节点需要通信,则进入Normal Operation State;如果节点不需要通信,则进入Ready Sleep State。并且清空Repeat Message Bit。   ②Normal Operation State 这个状态可以保持总线处于唤醒状态。从Ready sleep state进入这个状态的时候应该发送NMPDUs。 在Normal Operation State当NM-Timeout Timer溢出,CanNm模块应该重载Timer。 如果节点不需要使用通信,则网络应该被释放,节点应该进入Ready Sleep State。 如果节点接收到Repeat Message Request Bit,则节点进入Repeat Message State。如果节点自身需要进入Repeat Message State,则该节点进入Repeat Message State并且设置Repeat Message Request Bit。   ③ReadySleep State 这个状态是为了如果本节点已经准备释放总线,而其他节点还需要使用总线的时候,在这个状态下等待其他总线上的节点进入Perpere Bus-Sleep Mode。进入这个状态之后,CanNm模块应该停止NMPDUs的传送。 如果NM-Timeout Timer溢出,节点将会进入Prepare Bus-Sleep Mode。 如果该节点需要使用总线,则节点进入Nomal Operation State。 如果节点接收到Repeat Message Request Bit,则节点进入Repeat Message State。如果节点自身需要进入Repeat Message State,则该节点进入Repeat Message State并且设置Repeat Message Request Bit。 (2)PrepareBus-Sleep Mode   这个状态是为了等待总线上的所有节点能够在进入Bus-Sleep Mode之前,有时间停止节点的active状态如清空队列中为发送的报文。在Prepare Bus –Sleep Mode下,所有节点都静默下来。 当节点进入PrepareBus Mode时,应该通知上应用。通过配置CANNM_WAIT_BUS_SLEEP_TIME参数,可以改变节点在PrepareBus-Sleep Mode停留的时间,在这段时间之后节点将会进入其他状态。 在Prepare Bus-Sleep Mode下面接收到NMPDU或者被上应用请求通信时,节点将进入Network Mode中的Normal operation State。   (3)Bus-SleepMode   Bus-Sleep Mode的目的是当没有消息被传送的时候可以减少能量的消耗。在Bus-Sleep Mode下面,节点可以被唤醒(如本地唤醒源和CAN线唤醒源)。CANNM_TIMEOUT_TIME+CANNM_WAIT_BUS_SLEEP_TIME两个参数在整个总线上面的节点都应该时一样的配置,保证了总线上的节点能够统一的进行休眠。 当进入Bus-Sleep Mode时候,应该通知上应用。 在Bus-Sleep Mode下,如果成功接收到NMPDU,CAN NM模块应该调用Nm_NetworkStartIndication。 如果CanNm_PassiveStartUp被调用,则CAN NM模块进入Network Mode 中的Repeat Message State。 ———————————————— 版权声明:本文为CSDN博主「cococenstar」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/cococenstar/article/details/84096689
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Autosar汽车电子进阶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值