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

news2024/10/7 14:23:50

本文框架

  • 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.coloradmin.cn/o/415975.html

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

相关文章

Kafka3.0.0版本——生产者自定义分区器

目录一、生产者自定义分区器代码示例1.1、自定义分区器类1.2、生产者发送消息代码(生产者的配置中添加分区器参数)1.3、测试一、生产者自定义分区器代码示例 1.1、自定义分区器类 代码 package com.xz.kafka.producer;import org.apache.kafka.clients.…

Web API学习笔记1(DOM学习)

一、API 和 web API 1API API —— 应用程序编程接口,是给程序员提供的一种工具,以便能更轻松的实现想要完成的功能。可以比作为充电接口 2.Web API 是浏览器提供的一套操作浏览器功能和页面元素的API(BOM和DOM),主…

HarmonyOS/OpenHarmony应用开发-ArkTS画布组件CanvasRenderingContext2D对象(十一)

measureText measureText(text: string): TextMetrics 该方法返回一个文本测算的对象,通过该对象可以获取指定文本的宽度值。 示例: // xxx.etsEntryComponentstruct MeasureText { private settings: RenderingContextSettings new RenderingConte…

机器学习 异常值检测与处理

文章目录一、异常值检测1.1 简单统计1.2 3σ原则检测1.3 箱线图检测1.4 DBScan密度聚类二、异常值处理异常值是指不属于某一特定群体的数据点。它是一个与其他数值大不相同的异常观测值,与良好构成的数据组相背离。在机器学习建模准备数据集时,检测出所有…

Day940.开发分支 -系统重构实战

开发分支 Hi,我是阿昌,今天学习记录的是关于开发分支的内容。 组件化,软件变得更加高内聚、低耦合,开发及维护的效率也更高了,但是组件化的架构又会引入新的复杂度。 举个例子,在重构前我们基于一个模块…

解决Failed to load ApplicationContext问题的思路

中文翻译&#xff1a; 加载ApplicationContext失败 第一步&#xff1a;首先检查测试类的注解 以及 依赖 SpringBootTest <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope…

【数据库复习】第三章关系数据库标准语言SQL 集合查询 2

用EXISTS/NOT EXISTS实现全称量词 SQL语言中没有全称量词" &#xff08;For all&#xff09; 可以把带有全称量词的谓词转换为等价的带有存在量词的谓词&#xff1a; 查询学生S没有选修的课程 查询选修了全部课程的学生姓名。 等价于&#xff1a;查询这样的学生&#xf…

基于灵动微SPIN系列开发的水泵方案介绍 以 MM32SPIN040C/MM32SPIN560C为主控

水泵是输送液体或使液体增压的机械。它将原动机的机械能或其他外部能量传送给液体&#xff0c;使液体能量增加&#xff0c;主要用来输送液体包括水、油、酸碱液、乳化液、悬乳液和液态金属等。 水泵以 MM32SPIN040C/MM32SPIN560C为主控。 水泵方案 MCU: MM32SPIN系列 1.输入…

redis主从复制详解

文章目录主从复制概述主从复制的作用主要包括&#xff1a;数据冗余故障恢复负载均衡高可用基石主从库之间采用的是读写分离的方式读操作写操作主从复制原理全量复制确立主从关系全量复制的三个阶段第一阶段是主从库间建立连接、协商同步的过程&#xff0c;主要是为全量复制做准…

业务逻辑复杂如何解决性能问题

0 前言 上节针对生成订单信息这个接口做了三个阶段的分析定位和优化动作&#xff0c;让TPS变得正常。不过&#xff0c;系统资源并没有完全用起来&#xff0c;这个接口显然还有优化空间。性能优化的过程中&#xff0c;要把资源都用起来。 在性能环境中做优化&#xff0c;把资源…

自动化测试框架之selenium

目录1 自动化测试1.1 单元测试1.2 接口测试1.3 UI测试1.3.1 UI自动化测试的优点&#xff1a;1.3.2 UI自动化测试的适用对象1.4 自动化测试流程2 selenium3 selenium IDE 录制脚本1 自动化测试 自动化测试指软件测试的自动化&#xff0c;在预设状态下运行应用程序或者系统&…

50 openEuler搭建PostgreSQL数据库服务器-配置环境

文章目录50 openEuler搭建PostgreSQL数据库服务器-配置环境50.1 关闭防火墙并取消开机自启动50.2 修改SELINUX为disabled50.3 创建组和用户50.4 创建数据盘50.4.1 方法一&#xff1a;在root权限下使用fdisk进行磁盘管理50.4.2 方法二&#xff1a;在root权限下使用LVM进行磁盘管…

图解HTTP阅读笔记:第5章 与HTTP协作的Web服务器

《图解HTTP》第五章读书笔记 图解HTTP第5章 与HTTP协作的Web服务器5.1 用单台虚拟主机实现多个域名5.2 通信数据转发程序&#xff1a;代理、网关、隧道5.2.1 代理5.2.2 网关5.2.3 隧道5.3 保存资源的缓存5.3.1 缓存的有限期限5.3.2 客户端的缓存第5章 与HTTP协作的Web服务器 5…

学习系统编程No.18【进程间通信之管道实战】

引言&#xff1a; 北京时间&#xff1a;2023/4/11/21:17&#xff0c;今天的文章更新啦&#xff01;但是还是没有上热榜&#xff0c;所以我们需要继续更文啦&#xff01;我相信下一篇博客肯定是可以上热榜的&#xff0c;加油&#xff01;并且今天晚上因为有一节体育课&#xff…

Linux下让进程不再被拉起

Linux下为了防止应用挂掉&#xff0c;我们会设置服务进程来拉起这些应用。但某些流氓软件也会利用该机制使得它们被杀掉后能再被拉起来。本文讲述让这些进程不再被拉起的方法。 比如&#xff0c;有名称为recordmain.bin的进程&#xff0c;使用kill -9 杀掉它后&#xff0c;过几…

NVIDIA jetson tensorrt加速yolov5摄像头检测

link 在使用摄像头直接检测目标时&#xff0c;检测的实时画面还是有点慢&#xff0c;下面是tensorrt加速过程记录。 一、设备 1、设备jetson agx xavier 2、jetpack4.6.1 3、tensorrt 8.2.1.8 4、conda虚拟环境 python3.6 二、虚拟环境搭建及依赖 1、参考此博客安装torch Nvidi…

做自动化测试时所谓的“难点”

这篇关于自动化测试的文章&#xff0c;可能和你看到的大多数自动化的文章有所不同。我不是一位专职的自动化测试工程师&#xff0c;没有开发过自动化的工具或者框架&#xff0c;用的自动化的工具也不多&#xff0c;也没有做过开发&#xff0c;所以我讲不出那些现在很多人很看重…

[C++]日期类计算器的模拟实现

目录 日期类计算器的模拟实现&#xff1a;&#xff1a; 1.获取某年某月的天数 2.构造函数 3.拷贝构造函数 4.赋值运算符重载 5.析构函数 6.日期天数 7.日期天数 8.日期-天数 9.日期-天数 10.前置的运算符重载 11.后置的运算符重载 12.前置--的运算符重载 13.后置--的运算符重载…

前后端交互系列之Axios详解(包括拦截器)

目录前言一&#xff0c;服务器的搭建二&#xff0c;Axios的基本使用2.1 Axios的介绍及页面配置2.2 如何安装2.3 Axios的前台代码2.4 Axios的基本使用2.5 axios请求响应结果的结构2.6 带参数的axios请求2.7 axios修改默认配置三&#xff0c;axios拦截器3.1 什么是拦截器3.2 拦截…

Go分布式爬虫笔记(二十)

文章目录20 调度引擎调度引擎目标通道函数选项模式函数式选项模式的好处通道底层原理无缓冲区的通道带缓冲区的通道Select 机制的底层原理思考题在我们的课程中&#xff0c;schedule 函数其实有一个 bug&#xff0c;您能看出来吗&#xff1f;你觉得可以用什么方式找出这样的 Bu…