AUTOSAR通信篇 - PDU和收发数据

server/2025/1/18 13:10:51/
点击订阅专栏不迷路

文章目录

  • 一、概述
  • 二、OSI模型与AUTOSAR层级关系
  • 三、I-PDU、N-PDU、L-PDU及其关系
  • 四、数据流
    • 4.1. 普通数据流
    • 4.2. 诊断数据流
    • 4.3. 动态PDU数据流
    • 4.4. 安全通信数据流
    • 4.5. XCP数据流

返回总目录

一、概述

在学习Autosar通信栈时,我们会遇到多种PDU相关的缩写,如L-PDU、N-PDU、I-PDU和SDU等。理解这些缩写及其相互关系对于掌握通信部分至关重要。L-PDU代表传输层的协议数据单元,N-PDU对应网络层,I-PDU则是交互层的协议数据单元,而SDU是各层之间传递的服务数据单元。它们之间的关系呈现出数据从上到下的封装过程,并与OSI七层模型相对应,帮助我们更清晰地理解数据在通信中的流动。接下来,我们将附上一张Autosar通信示意图,以便大家形成宏观印象。

![[教培业务/CSDN博客/_resources/${picture}/562b85d785de1224c58d1dd5fe145240_MD5.png]]

AUTOSAR_13">二、OSI模型与AUTOSAR层级关系

OSI通信模型包括七层,分别是:物理层,数据链路层,网络层,传输层,会话层,表示层及应用层,各层对应的作用如下表:

OSI七层模型主要功能
应用层为应用程序提供网络服务,如文件传输、电子邮件等
表示层数据格式转换、加密解密、压缩解压等
会话层建立、管理和终止会话
传输层提供端到端的可靠数据传输,如TCP、UDP协议
网络层负责数据包的路由和转发,如IP协议
数据链路层数据帧的封装、传输和差错检测,如以太网协议
物理层定义物理介质的电气、机械等特性,传输比特流

Autosar的分层架构没有完全按照OSI的七层模型定义,可以将Autosar的模型大致分为:数据链路层、网络层、交互层,如下所示:

在这里插入图片描述
由上图,我们可以看出:每个层级都会包含PCI和data Structure,PDU = PCI + data Structure,SDU = data Structure。

PCI、SDU、PDU又都是啥呢?可以看下下边的解释:

缩写全称含义与其他的关系
SDUService Data Unit(服务数据单元)上层传递的数据,带有传输请求,下层接收后提取并传递给上层的数据,是PDU的一部分PDU的数据部分,如果SDU中的数据超过 PDU数据域的大小,则会将PDU分成 首帧+连续帧的形式 发送数据
PCIProtocol Control Information(协议控制信息)将SDU在特定协议层实例间传递所必需的信息,包含源和目标等信息,发送端添加,接收端移除含有源地址和目的地址信息等控制信息,可以理解为CAN数据帧中的控制域。
PDUProtocol Data Unit(协议数据单元)包含SDU和PCI,发送端从上层传递到下层,下层将其视为SDU包含SDU和PCI,每个PDU相当于CAN协议中的一帧

根据PDU对应的不同层级,PDU又可以分为以下几种:

Autosar层级OSI模型层级
L-PDU传输层(Transport Layer)
N-PDU网络层(Network Layer)
I-PDU会话层(Session Layer)
SDU应用层(Application Layer)

PDUNPDULPDU_46">三、I-PDU、N-PDU、L-PDU及其关系

L-PDU、N-PDU、I-PDU三者的关系如下所示:

在这里插入图片描述

PDU_51">3.1. L-PDU

是对应链路层的协议数据单元,通常将接口层(如 CanIf、FlexrayIf 等)视为链路层,更准确地说是由 Driver 和 Interface 共同构成链路层,其中 Driver 作为链路层可能更为合适,因为 Interface 是抽象模块,与硬件并非强绑定关系,例如以太网中 MAC 层为链路层且与芯片平台强相关。L-PDU 由 ID、数据长度及数据组成,以 CAN 通信为例,CAN Driver 在接收总线上传来的信号电平后生成 L-PDU,然后 L-PDU 传输至 CANIf。

在这里插入图片描述

data Structure即需要发送的信息,用一个结构体表示,结构体里包括数据存储起始位置(指针)及数据长度。

typedef P2VAR(uint8, TYPEDEF, COM) SduDataPtrType;
typedef uint16 PduLengthType; typedef struct
{SduDataPtrType SduDataPtr;  // 指向SDU数据的指针PduLengthType SduLength;    // SDU的长度
} PduInfoType;

PCI即协议控制信息,PCI由传输侧的协议层添加,并且在接收侧再次移除。对应到实际的开发,PCI可以理解为头部信息,比如:CanTp,在发送数据的时候,会添加SF、CF、FF、FC信息等;data Structure就是要发送的信息,用一个结构体表示,结构体里会有数据存储起始位置(指针),数据长度。

PDU_69">3.2. N-PDU

N-PDU是对应网络层的协议数据单元,通常将传输层(如CanTp、FlexrayTp等)视为网络层。N-PDU在TP层与If层之间传输,由N_AI、N_PCI和N_Data组成,并且根据N_PCI类型的不同,可分为单帧、首帧、连续帧和流控帧等。

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中。如果消息数据(<MessageData><Length>)过长,需进行分段传输,则N_AI需要在每个N_PDU中重复。

N_PCI
N_PCI (其实就是PCI,不同层的叫法)是协议控制信息,其中包含帧类型(PCItype),像单帧(SF)、首帧(FF)、连续帧(CF)和流控帧(FC)等都是典型的 PCI 信息。它由传输侧的协议层添加,在接收侧则会被移除。在大数据收发时,组包过程中会将其移除,而拆包过程中又会将其加上。

PDU_77">3.3. I-PDU

I-PDU是对应交互层(表示层)的协议数据单元。交互层涉及多个模块(可参照相关图示),XX_If以上模块间的信息交互依靠I-PDU来实现,而XX_If与XX_Tp模块的交互则依赖N-PDU

在数据传输方面,小数据传输通常使用XX_If,大数据传输一般会用到XX_Tp。例如在诊断的多帧传输场景下,XX_Tp层会缓存多个N-PDU,直至完整接收一个I-PDU后,再通过PduR将其传送给DCM,存在I-PDU = n * N-PDU(n为大于1的正整数)的关系。

四、数据流

4.1. 普通数据流

CAN driver <–(LPDU)–> CanIf <–(IPDU)–> PDU Router <–(IPDU)–> COM <–(Signals)–> RTE

CAN driver:接收、发送函数;配置通道、波特率、port口等

CanIf:对驱动层的封装、给上层一些通知函数;DLC、ID到PDU的转换

PDU Router:传递数据到对应的上层模块;配置路由表

COM:IPDU分解成signals;提供接口(接收、发送信号/帧);

4.2. 诊断数据流

CAN driver <–(LPDU)–> CanIf <–(NPDU)–> CanTp <–(IPDU)–> PDU Router <–(IPDU)–> DCM

CanTp:根据ISO15765进行拆包、组包;配置时间参数、回调函数等

DCM:为上层提供UDS服务、OBD服务;

PDU_103">4.3. 动态PDU数据流

在普通数据流的基础上,在PudR和COM之间增加IpduM模块
PDU Router <–(IPDU)–> IPDU Multiplexer <–(IPDU)–> PDU Router

IpduM:发送/接收动态的IPDU;可以配置动态IPDU的DLC、静态段、动态段

4.4. 安全通信数据流

在普通数据流的基础上,在PudR和COM之间增加 SecOC模块
PDU Router <–(IPDU)–> SecOC <–(IPDU)–> PDU Router

SecOC(Security Onboard Communication):安全通信报文的加解密、验证、拆包组包

4.5. XCP数据流

CAN driver <–(LPDU)–> CanIf <----> XCP

XCP:标定、测量功能

參考文档AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf


http://www.ppmy.cn/server/159358.html

相关文章

WebSocket有哪些缺点?应该如何解决?

虽然 WebSocket 提供了许多优势&#xff0c;使其成为实时通信的理想选择&#xff0c;但它也有一些缺点和局限性。以下是 WebSocket 的一些主要缺点&#xff1a; 1. 初始握手开销 HTTP 握手&#xff1a;WebSocket 连接需要先通过 HTTP 协议进行握手&#xff0c;这增加了初始连接…

mermaid大全(语法、流程图、时序图、甘特图、饼图、用户旅行图、类图)

⚠️ 有些网站的mermaid可能不完整&#xff0c;因此下面教程中可能有些语法是无效的。 &#x1f60a;亲测Typora软件均可以显示。 1. 介绍 Mermaid是一个基于JavaScript的图表绘制工具&#xff0c;它使用类似Markdown的语法来创建和修改各种类型的图表。以下是关于Mermaid的详…

(9)ERC721详细介绍

ERC721 是以太坊上的一种非同质化代币&#xff08;NFT&#xff0c;Non-Fungible Token&#xff09;标准&#xff0c;由 William Entriken、Dieter Shirley、Jacob Evans 和 Nastassia Sachs 在 2018 年提出。与 ERC20 代币不同&#xff0c;ERC721 代币是独一无二的&#xff0c;…

2025-1-15-十大经典排序算法 C++与python

文章目录 十大经典排序算法比较排序1. 冒泡排序2. 选择排序3. 插入排序4. 希尔排序5. 归并排序6. 快速排序7. 堆排序 非比较排序8. 计数排序9. 桶排序10. 基数排序 十大经典排序算法 十大经典排序算法可以分为比较排序和非比较排序: 前者包括冒泡排序、选择排序、插入排序、希…

文件上传 分片上传

分片上传则是将一个大文件分割成多个小块分别上传&#xff0c;最后再由服务器合并成完整的文件。这种做法的好处是可以并行处理多个小文件&#xff0c;提高上传效率&#xff1b;同时&#xff0c;如果某一部分上传失败&#xff0c;只需要重传这一部分&#xff0c;不影响其他部分…

Linux:文件描述符fd、系统调用open

目录 一、文件基础认识 二、C语言操作文件的接口 1.> 和 >> 2.理解“当前路径” 三、相关系统调用 1.open 2.文件描述符 3.一切皆文件 4.再次理解重定向 一、文件基础认识 文件 内容 属性。换句话说&#xff0c;如果在电脑上新建了一个空白文档&#xff0…

React进阶之react.js、jsx模板语法及babel编译

React React介绍React官网初识React学习MVCMVVM JSX外部的元素props和内部的状态statepropsstate 生命周期constructorgetDerivedStateFromPropsrendercomponentDidMount()shouldComponentUpdategetSnapshotBeforeUpdate(prevProps, prevState) 创建项目CRA&#xff1a;create-…

Python在多个Excel文件中找出缺失数据行数多的文件

本文介绍基于Python语言&#xff0c;针对一个文件夹下大量的Excel表格文件&#xff0c;基于其中每一个文件内、某一列数据的特征&#xff0c;对其加以筛选&#xff0c;并将符合要求与不符合要求的文件分别复制到另外两个新的文件夹中的方法。 首先&#xff0c;我们来明确一下本…