AUTOSAR通信篇 - PDU和收发数据

点击订阅专栏不迷路

文章目录

  • 一、概述
  • 二、OSI模型与AUTOSAR层级关系
  • 三、I-PDU、N-PDU、L-PDU及其关系
    • 3.1. L-PDU
    • 3.2. N-PDU
    • 3.3. I-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]]

二、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)

三、I-PDU、N-PDU、L-PDU及其关系

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

在这里插入图片描述

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就是要发送的信息,用一个结构体表示,结构体里会有数据存储起始位置(指针),数据长度。

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 信息。它由传输侧的协议层添加,在接收侧则会被移除。在大数据收发时,组包过程中会将其移除,而拆包过程中又会将其加上。

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服务;

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.mzph.cn/news/892994.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《自动驾驶与机器人中的SLAM技术》ch4:预积分学

目录 1 预积分的定义 2 预积分的测量模型 ( 预积分的测量值可由 IMU 的测量值积分得到 ) 2.1 旋转部分 2.2 速度部分 2.3 平移部分 2.4 将预积分测量和误差式代回最初的定义式 3 预积分的噪声模型和协方差矩阵 3.1 旋转部分 3.2 速度部分 3.3 平移部分 3.4 噪声项合并 4 零偏的…

2025年01月蓝桥杯Scratch1月stema选拔赛真题—美丽的图形

美丽的图形 编程实现美丽的图形具体要求: 1)点击绿旗&#xff0c;角色在舞台中心&#xff0c;如图所示&#xff1b; 2)1秒后&#xff0c;绘制一个边长为 140的红色大正方形&#xff0c;线条粗细为 3&#xff0c;正方形的中心为舞台中心&#xff0c;如图所示; 完整题目可点击下…

58,【8】BUUCTF [PwnThyBytes 2019]Baby_SQL1

进入靶场 和2次注入的页面很像 不过养成查看源代码的好习惯 先访问source.zip 下载后解压&#xff0c;发现两个文件 第一个文件夹打开又有4个PHP文件 那还是先看index.php文件好了 有PHP和HTML两部分&#xff0c;下面是PHP部分代码&#xff08;HTML太长了&#xff0c;先放一…

AI编程工具横向评测--Cloudstudio塑造完全态的jupyter notebook助力数据分析应用开发

AI编程工具横向评测–Cloudstudio塑造完全态的jupyter notebook助力数据分析应用开发 数据分析类应用的开发&#xff0c;指的是首先进行数据分析&#xff0c;比如统计学分析、机器学习模型的构建等&#xff0c;然后将分析的流程开发成数据分析类的工具&#xff0c;或者将数据分…

医疗集群系统中基于超融合数据库架构的应用与前景探析

一、引言 1.1 研究背景与意义 随着医疗信息化的飞速发展,医疗数据呈爆炸式增长。从日常诊疗记录、患者病历,到各类医疗影像、检查检验数据等,海量信息不断涌现。据统计,医疗数据的年增长率高达 30% 以上 ,2025 年,全球医疗数据量将达到 2314 艾字节(EB)。如此庞大的数…

vue项目引入阿里云svg资源图标

1&#xff1a;生成svg图标 登录阿里云官网 1.1 创建项目组 1.2 从阿里云网站上面获取喜欢的图标加入到已有的项目组 1.3 如果团队有自己的设计师&#xff0c;也可以让设计师上传自己的svg图标到阿里云指定的项目组&#xff1b; 使用的时候&#xff0c;把 资源包下载到本地项…

网络安全面试题汇总(个人经验)

1.谈一下SQL主从备份原理&#xff1f; 答&#xff1a;主将数据变更写入自己的二进制log,从主动去主那里去拉二进制log并写入自己的二进制log,从而自己数据库依据二进制log内容做相应变更。主写从读 2.linux系统中的计划任务crontab配置文件中的五个星星分别代表什么&#xff…

Elasticsearch:Jira 连接器教程第二部分 - 6 个优化技巧

作者&#xff1a;来自 Elastic Gustavo Llermaly 将 Jira 连接到 Elasticsearch 后&#xff0c;我们现在将回顾最佳实践以升级此部署。 在本系列的第一部分中&#xff0c;我们配置了 Jira 连接器并将对象索引到 Elasticsearch 中。在第二部分中&#xff0c;我们将回顾一些最佳实…

5 分钟复刻你的声音,一键实现 GPT-Sovits 模型部署

想象一下&#xff0c;只需简单几步操作&#xff0c;就能生成逼真的语音效果&#xff0c;无论是为客户服务还是为游戏角色配音&#xff0c;都能轻松实现。GPT-Sovits 模型&#xff0c;其高效的语音生成能力为实现自然、流畅的语音交互提供了强有力的技术支持。本文将详细介绍如何…

【CSS】---- CSS 实现超过固定高度后出现展开折叠按钮

1. 实现效果 2. 实现方法 使用 JS 获取盒子的高度&#xff0c;来添加对应的按钮和样式&#xff1b;使用 CSS 的浮动效果&#xff0c;参考CSS 实现超过固定高度后出现展开折叠按钮&#xff1b;使用容器查询 – container 语法&#xff1b;使用 clamp 函数进行样式判断。 3. 优…

【git】如何删除本地分支和远程分支?

1.如何在 Git 中删除本地分支 本地分支是您本地机器上的分支&#xff0c;不会影响任何远程分支。 &#xff08;1&#xff09;在 Git 中删除本地分支 git branch -d local_branch_name git branch 是在本地删除分支的命令。-d是一个标志&#xff0c;是命令的一个选项&#x…

基于微信小程序的摄影竞赛系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

人工智能-机器学习之多分类分析(项目实战二-鸢尾花的多分类分析)

Softmax回归听名字&#xff0c;依然好像是做回归任务的算法&#xff0c;但其实它是去做多分类任务的算法。 篮球比赛胜负是二分类&#xff0c;足球比赛胜平负就是多分类 识别手写数字0和1是二分类&#xff0c;识别手写数字0-9就是多分类 Softmax回归算法是一种用于多分类问题…

DeepSeek-v3在训练和推理方面的优化

1. 基础架构&#xff1a;MLA&#xff0c;大幅减少了KV cache大小。&#xff08;计算量能不能减少&#xff1f;&#xff09; 2. 基础架构&#xff1a;MoE&#xff0c;同等参数量&#xff08;模型的”能力“&#xff09;下&#xff0c;训练、推理的计算量大幅减少。 3. MoE的load…

MySQL8数据库全攻略:版本特性、下载、安装、卸载与管理工具详解

大家好&#xff0c;我是袁庭新。 MySQL作为企业项目中的主流数据库&#xff0c;其5.x和8.x版本尤为常用。本文将详细介绍MySQL 8.x的特性、下载、安装、服务管理、卸载及管理工具&#xff0c;旨在帮助用户更好地掌握和使用MySQL数据库。 1.MySQL版本及下载 企业项目中使用的…

centos 7 Mysql服务

将此服务器配置为 MySQL 服务器&#xff0c;创建数据库为 hubeidatabase&#xff0c;将登录的root密码设置为Qwer1234。在库中创建表为 mytable&#xff0c;在表中创建 2 个用户&#xff0c;分别为&#xff08;xiaoming&#xff0c;2010-4-1&#xff0c;女&#xff0c;male&…

紫光无人机AI飞控平台介绍

随着无人机技术的迅猛发展&#xff0c;无人机飞控平台的智能化需求不断提升。紫光无人机AI飞控平台作为一款创新型产品&#xff0c;为用户提供了从飞行控制到任务管理的一站式解决方案&#xff0c;尤其在AI实时识别和事件分析方面具有显著优势。本文将介绍平台的核心功能、技术…

【机器学习实战入门】有趣的Python项目:使用OpenCV进行性别和年龄检测

Gender and Age Detection Python 项目 首先,向您介绍用于此高级 Python 项目的性别和年龄检测中的术语: 什么是计算机视觉? 计算机视觉是一门让计算机能够像人类一样观察和识别数字图像和视频的学科。它面临的挑战大多源于对生物视觉有限的了解。计算机视觉涉及获取、处…

AutoAlign实体对齐方法的详细工作原理和在大规模知识图谱中的应用

AutoAlign是一种全自动且高效的知识图谱对齐方法&#xff0c;其工作原理主要基于大型语言模型&#xff08;LLM&#xff09;&#xff0c;如ChatGPT和Claude&#xff0c;通过构建谓词邻近图和实体嵌入模块来实现实体和谓词的自动对齐。这种方法不需要人工标注种子对齐&#xff0c…

【2025最新】国内中文版 ChatGPT镜像网站整理合集,GPT最新模型4o1,4o,4o-mini分类区别,镜像站是什么

1.快速导航 原生中转型镜像站点 立即Chat支持GPT4、4o以及o1,canvs等&#xff0c;同步官网功能 AIChat.com 支持最新4O 2.两者对比 官网立即Chat访问难度需要魔法直接访问支付手段国际支付国内支付封禁策略检测节点&#xff0c;随时封禁不会封禁价格每月140元订阅费用每年70元…