当前位置: 首页 > article >正文

Autosar COM Stack系列介绍01_一文看懂各层PDU

本文框架

  • 1. 概述
    • 1.1 缩写
  • 2. OSI模型在Autosar中应用
  • 3. 各层PDU介绍
    • 3.1 L-PDU
    • 3.2 N-PDU
      • 3.2.1 N_AI
      • 3.2.2 N_PCI
    • 3.3 I-PDU

1. 概述

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

1.1 缩写

PDU:Protocal 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。


http://www.kler.cn/a/7517.html

相关文章:

  • 微信小程序 === 使用腾讯地图选点
  • C++各类函数评点+详解
  • 蓝队基础1
  • 动态内存管理(c语言)
  • QSS 设置bug
  • RK3588 C++ 多线程运行
  • Java重写(Override)重载(Overload)
  • shiro漏洞复现及其攻击流量分析
  • 【Nowcoder-BC146.添加逗号 -OR63.删除公共字符】
  • 【蓝桥杯】【省赛真题】
  • 类方法与类变量与main方法语法
  • 有哪些 python 的在线练习题或编程挑战的网站?
  • 4.6---Spring框架之Spring的AOP理解(复习版本)
  • 一致性哈希的简单认识
  • 蓝牙耳机品牌哪个音质好佩戴舒适性?2023年蓝牙耳机盘点
  • 【Redis】数据结构 - Set
  • 刷题_28:反转部分单向链表 and 猴子分桃
  • 今年晋升本没抱希望,已有绩效更好的同事将参加晋升,leader却临时让我也去答辩,怀疑自己被拉去陪跑,该怎么办?...
  • Spring依赖注入详解
  • Linux中滴计划任务
  • 普通人怎么用ChatGPT-ChatGPT中文版网页
  • CarSim仿真快速入门(二十四)-CarSimSimulink联合仿真中的输入和输出IO接口
  • 元宇宙与网络安全
  • three.js实现3d球体树状结构布局——树状结构的实现
  • GDOI 2023 游记
  • 【软件设计师07】程序设计语言与语言处理程序基础