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

读懂AUTOSAR:PduR模块--使用FIFO

简介:

现在的汽车越来越智能化和复杂化,这得益于汽车软件和电子控制系统的发展。为了帮助汽车制造商和供应商更好地开发和管理汽车软件,全球性的汽车软件开发标准——AUTOSAR(AUTomotive Open System ARchitecture)应运而生。本系列博客将以通俗易懂的方式,介绍AUTOSAR的基本概念、架构、接口和模块,帮助读者深入了解AUTOSAR的内部机制和设计原则,并指导读者如何使用AUTOSAR标准来开发高质量的汽车软件。


目录

FIFO

通信接口

传输协议

错误处理


FIFO

此规范描述了一种将I-PDU(数据传输单元)从一个源传输到多个目的地下层模块的可能性,并使用FIFO(先进先出)队列行为进行网关化。FIFO队列可用于通信接口和传输协议(即使使用多个N-PDU消息)。

如果配置了PduRQueueDepth大于1的值,则Tx Pdu缓冲区应具有先进先出(FIFO)行为。在接下来的章节中,“FIFO”或“FIFO队列”这个术语被用作PduR的Tx I-PDU缓冲区的同义词。

FIFO具有状态,这些状态可能在从不同上下文调用的各种PduR API中改变。例如,PduR_<SrcLo>RxIndication调用可能会被PduR_<DstLo>TxConfirmation调用中断。因此,有必要保护这些并发调用。

如果在直接数据提供的情况下使用FIFO,则目标I-PDU必须配置为调用PduR_<DstLo/DstLoTp>TxConfirmation,参见PduRTransmissionConfirmation。

每个目标IPDU都应该能够配置一个FIFO。

如果使用FIFO进行直接数据提供,则当调用PduR_<SrcLo/SrcLoTp>RxIndication并且同一PDU的上次传输尚未通过PduR_<DstLo/DstLoTp>TxConfirmation得到确认时,PduR应将新数据排队到FIFO中。

如果使用FIFO进行直接数据提供,则当调用PduR_<SrcLo/SrcLoTp>RxIndication并且FIFO队列为空且同一PDU没有任何确认时,应直接调用<DstLo/DstLoTp>_Transmit。FIFO保持为空。

当调用PduR_<SrcLo/SrcLo>RxIndication并且FIFO队列为空时,在触发传输数据提供的情况下,应将接收到的I-PDU复制到FIFO中并调用<DstLo/DstLoTp>_Transmit。

当调用PduR_<SrcLo/SrcLoTp>RxIndication并且FIFO队列不为空时,接收到的I-PDU应作为最新条目进行复制。

当调用PduR_<DstLo/DstLoTp>TxConfirmation并且FIFO队列不为空时,在直接数据提供的情况下应调用带有FIFO中最旧I-PDU的<DstLo/DstLoTp>_Transmit。传输的I-PDU之后应被删除。

通信接口

在规范中,当调用PduR_<DstLo>TriggerTransmit并返回E_OK时,将复制并删除最旧的FIFO条目。如果此后FIFO队列不为空,则应使用最旧的IPDU调用<DstLo>_Transmit。

需要注意的是,如果目标模块是FrIf,则需要配置Pdu的FrIfCounterLimit > 1,因为在计数器递减之前将调用新的传输。对于LinIf,没有这样的限制,但不支持将FIFO队列路由到间歇性帧。

传输协议

[SWS_PDUR_00830] 当 PduR_<SrcLoTp>StartOfReception 被调用并且 FIFO 启用时,PduR 应从 PduRTxBuffer 中为每个目的地(1:n 情况下)保留足够的缓冲区。

[SWS_PDUR_00831] 当收到 PduRTpThreshold 或完整的 (PduR_<DstLoTp>RxIndication 被调用的) I-PDU 时,PduR 应在目的地传输协议上开始传输。

[SWS_PDUR_00832] 如果同一路由路径的另一个 PduR_<SrcLoTp>StartOfReception 被调用,则 PduR 应将 I-PDU 存储在 FIFO 中。

[SWS_PDUR_00833] 当从目的地传输协议模块接收到 PduR_<DstLoTp>TxConfirmation 时,如果 FIFO 不为空,则 PduR 应开始传输下一个 I-PDU。

[SWS_PDUR_00834] 允许在网关上使用 routing-on-the-fly。如果 FIFO 队列为空,则每当达到 PduRTpThreshold 时,PduR 可以调用 <DstLoTp>_Transmit。

[SWS_PDUR_00835] 如果 FIFO 队列已经包含至少一个条目,则应将接收到的消息存储在 FIFO 中,并在此 FIFO 队列条目到达传输时间时(即当此消息首先在 FIFO 中时)立即调用 <DstLoTp>_Transmit。

注:使用 FIFO 的网关-on-the-fly 的效果是它将是一种更快的网关 TP 消息的方式。显然,如果 FIFO 不为空,则接收到的消息必须被存储,而不是转发到目的地 TP。

错误处理

[SWS_PduR_00788] 如果使用FIFO缓冲区的路由路径中,调用<DstLo>_Transmit()并传递一个I-PDU时,返回E_NOT_OK,则应将该I-PDU从FIFO中移除,并尝试发送下一个FIFO入口的I-PDU,如果有的话。如果没有,则不进行任何操作。(SRS_PduR_06012,SRS_PduR_06105)

[SWS_PDUR_00807] 如果使用FIFO缓冲区的路由路径中,<DstLo>_Transmit()返回E_NOT_OK,则PDU Router模块应向DET模块报告PDUR_E_PDU_INSTANCES_LOST。 (SRS_PduR_06012,SRS_PduR_06105)

[SWS_PduR_00806] 当一个目的地无法发送I-PDU时(即<DstLo>_Transmit()返回E_NOT_OK),其他目的地应继续发送I-PDU。()

[SWS_PduR_00255] 如果FIFO已满并且调用了新的PduR_<SrcLo>RxIndication,那么FIFO应被清空。(SRS_PduR_06012,SRS_PduR_06032)

注意:如果PduRQueueDepth配置为1且PduRDestPduDataProvision配置为PDUR_TRIGGERTRANSMIT,则新的IPdu将始终在下一个PduR_<Lo>TriggerTransmit调用中被复制。这是“后来居上”的行为。

[SWS_PduR_00670] 如果FIFO被清空,则PDU Router模块应向DET模块报告PDUR_E_PDU_INSTANCES_LOST。(SRS_PduR_06012,SRS_PduR_06032,SRS_PduR_06106)

[SWS_PduR_00669] 如果FIFO被清空,则由PduR_<SrcLo>RxIndication传递的新I-PDU应被处理,就像FIFO为空一样。(SRS_PduR_06012,SRS_PduR_06032)

造成FIFO清空的新I-PDU将被处理并不会被丢弃。

相关文章:

读懂AUTOSAR:PduR模块--使用FIFO

简介&#xff1a; 现在的汽车越来越智能化和复杂化&#xff0c;这得益于汽车软件和电子控制系统的发展。为了帮助汽车制造商和供应商更好地开发和管理汽车软件&#xff0c;全球性的汽车软件开发标准——AUTOSAR&#xff08;AUTomotive Open System ARchitecture&#xff09;应…...

对象的比较(数据结构系列12)

目录 前言&#xff1a; 1.PriorityQueue 1.1PriorityQueue的特性 1.2PriorityQueue的构造器 1.3大根堆的创建 1.4PriorityQueue中函数的说明 2.java中对象的比较 2.1基本类型的比较 2.2对象的比较 2.2.1覆写基类的equals 2.2.2基于Comparable接口类的比较 2.2.3基于…...

31.下一个排列

1. 题目 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如&#xff0c;arr [1,2,3] &#xff0c;以下这些都可以视作 arr 的排列&#xff1a;[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地&…...

ToBeWritten之理解嵌入式Web HTTP协议

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…...

顶级程序员的成长之路1

本文关注的问题是程序员的水平究竟应该按照什么样的不同层级而逐渐提高&#xff1f;或者说&#xff0c;在学习编程的过程中&#xff0c;每一个阶段究竟应当设定什么样的目标才比较合理&#xff1f;本文的内容主要借鉴了周伟明先生的专栏文章《程序员的十层楼》[86]。注意本文讨…...

第三代api自动化测试框架使用教程(pytest+allure+sql+yaml)

使用教程一、配置1、环境配置2、框架配置3、启动入口二、用例编写1、用例模板2、参数依赖写法2、函数&#xff08;方法插件&#xff09;写法3、接口上传文件和表单参数4、接口上传json参数5、接口无数据填写6、code断言7、body断言7、json断言8、sql断言9、完整断言写法&#x…...

Qt——实现一个获取本机网络信息的界面

效果展现 代码实现 networkinformation.h&#xff1a; #ifndef NETWORKINFORMATION_H #define NETWORKINFORMATION_H#include <QMainWindow> #include <QLabel> #include <QLineEdit> #include <QPushButton>class NetworkInformation : public QMai…...

全面深入了解接口自动化,看完还不会我报地址

一、自动化分类 &#xff08;1&#xff09;接口自动化 python/javarequestsunittest框架来实现 python/javaRF&#xff08;RobotFramework&#xff09;框架来实现——对于编程要求不高 &#xff08;2&#xff09;Web UI功能自动化 python/javaseleniumunittestddtPO框架来实…...

Python 小型项目大全 61~65

六十一、ROT13 密码 原文&#xff1a;http://inventwithpython.com/bigbookpython/project61.html ROT13 密码是最简单的加密算法之一&#xff0c;代表“旋转 13 个空格”密码将字母A到Z表示为数字 0 到 25&#xff0c;加密后的字母距离明文字母 13 个空格&#xff1a; A变成N&…...

Hlog

Hlog 简介 Hlog是Hbase实现WAL(Write ahead log )方式产生的日志信息 &#xff0c; 内部是一个简单的顺序日志。每个RegionServer对应1个Hlog(备注&#xff1a;1.X版本的可以开启MultiWAL功能&#xff0c;允许对应多个Hlog),所有对于该RegionServer的写入都会被记录到Hlog中。H…...

学编程应该选择什么操作系统?

今天来聊一个老生常谈的问题&#xff0c;学编程时到底选择什么操作系统&#xff1f;Mac、Windows&#xff0c;还是别的什么。。 作为一个每种操作系统都用过很多年的程序员&#xff0c;我会结合我自己的经历来给大家一些参考和建议。 接下来先分别聊聊每种操作系统的优点和不…...

Oracle基础部分二(伪列/表、单个函数、空值处理、行列转换、分析函数、集合运算)

Oracle基础部分二&#xff08;伪列/表、单个函数、空值处理、行列转换、分析函数、集合运算&#xff09;1 伪列、伪表1.1 伪列1.2 伪表2 单个函数2.1 常用字符串函数2.1.1 length() 询指定字符的长度2.1.2 substr() 用于截取字符串2.1.3 concat() 用于字符串拼接2.2 常用数值函…...

c/c++:原码,反码,补码和常见的数据类型取值范围,溢出

c/c&#xff1a;原码&#xff0c;反码&#xff0c;补码和常见的数据类型取值范围&#xff0c;溢出 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;此时学会c的话&#xff0c; 我所知道的周边的会c的同学&#xff0c;可手握…...

Java题目训练——年终奖和迷宫问题

目录 一、年终奖 二、迷宫问题 一、年终奖 题目描述&#xff1a; 小东所在公司要发年终奖&#xff0c;而小东恰好获得了最高福利&#xff0c;他要在公司年会上参与一个抽奖游戏&#xff0c;游戏在一个6*6的棋盘上进行&#xff0c;上面放着36个价值不等的礼物&#xff0c; 每…...

ORACLE EBS系统应用基础概述(1)

一、前言 有网友在论坛发帖惊呼&#xff1a;好不容易把EBS系统安装好了&#xff0c;进去一看傻眼了&#xff0c;不知道从哪儿下手&#xff1f;发出惊叹的这位网友所遇到的问题&#xff0c;实际上也是很多人曾经遇到或正在遇到的问题。长期以来&#xff0c;国内的非专业人士&am…...

电子科技大学信息与通信工程学院2023考研复试总结

一、笔试 笔试主要考察数字逻辑&#xff08;数电&#xff09;的相关知识&#xff0c;满分200分&#xff0c;需要复习的内容不多且知识点比较集中。根据考场上实际感受&#xff0c;题目难度不大但是题量稍大&#xff0c;2h完成试卷几乎没有多少剩余时间。笔试的体型分为填空题、…...

神经网络激活函数

神经网络激活函数神经网络激活函数的定义为什么神经网络要用激活函数神经网络激活函数的求导Sigmoid激活函数Tanh激活函数Softmax激活函数神经网络激活函数的定义 所谓激活函数&#xff08;Activation Function&#xff09;&#xff0c;就是在人工神经网络的神经元上运行的函数…...

2.C 语言基本语法

文章目录二、C 语言基本语法1.语句2.表达式3.语句块4.空格5.注释6.printf()函数基本用法7.占位符8.输出格式10.标准库&#xff0c;头文件提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 二、C 语言基本语法 1.语句 C语言的代码由一行行语句&#xff0…...

Qt 6.5 LTS 正式发布

Qt 6.5 LTS 已正式发布。此版本为图形和 UI 开发者以及应用程序后端引入了许多新功能&#xff0c;还包含许多修复和通用的改进。Qt 6.5 将成为商业许可证持有者的长期支持 (LTS) 版本。 部分更新亮点&#xff1a; 改进主题和样式 使用 Qt 6.5&#xff0c;应用程序能够便捷地支持…...

Linux权限提升—定时任务、环境变量、权限配置不当、数据库等提权

Linux权限提升—定时任务、环境变量、权限配置不当、数据库等提权1. 前言1.1. 如何找编译好的EXP2. 定时任务提权2.1. 查看定时任务2.2. 通配符注入提权2.2.1. 创建执行脚本2.2.2. 创建定时任务2.2.3. 查看效果2.2.4. 提权操作2.2.4.1. 切换普通用户2.2.4.2. 执行命令2.2.4.3. …...

ESP32驱动MT6826S磁编码器:从接线防烧到实时速度计算(附完整Arduino库)

ESP32与MT6826S磁编码器实战指南&#xff1a;安全接线与高效数据采集 1. 硬件连接&#xff1a;避开那些可能毁掉你项目的陷阱 MT6826S磁编码器作为一款高精度角度测量器件&#xff0c;在机器人关节控制、无人机云台稳定等场景中表现优异。但许多开发者第一次接触这款编码器时&a…...

HoRain云--Vue3组件开发:从入门到精通的终极指南

&#x1f3ac; HoRain 云小助手&#xff1a;个人主页 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …...

TL494电源芯片避坑指南:常见设计误区与调试技巧

TL494电源芯片避坑指南&#xff1a;常见设计误区与调试技巧 在电源设计领域&#xff0c;TL494作为一款经典PWM控制芯片&#xff0c;凭借其稳定性和灵活性赢得了工程师的青睐。但就像任何工具一样&#xff0c;只有真正理解它的特性才能发挥最大价值。本文将带您深入TL494的设计细…...

深入解析DDR3与AXI接口:基于7035开发板的实战笔记

1. DDR3基础概念与7035开发板适配 第一次接触DDR3时&#xff0c;我也被那些专业术语搞得晕头转向。直到在7035开发板上实际调试后&#xff0c;才发现理解DDR3的关键在于抓住几个核心特性。DDR3全称Double Data Rate 3&#xff0c;顾名思义&#xff0c;它在时钟上升沿和下降沿都…...

Java八股文面试题,堪称2026最强!!!

1、什么是 java 序列化&#xff0c;如何实现 java 序列化 难度系数&#xff1a;⭐ 序列化是一种用来处理对象流的机制&#xff0c;所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作&#xff0c;也可将流化后的对象传输于网络之间。序列化是为了解决在…...

Amlogic S9XXX Armbian刷机完全指南:从入门到进阶的5个关键问题

Amlogic S9XXX Armbian刷机完全指南&#xff1a;从入门到进阶的5个关键问题 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l,…...

终极指南:如何在NixOS上完美打包与使用SilentSDDM主题

终极指南&#xff1a;如何在NixOS上完美打包与使用SilentSDDM主题 【免费下载链接】SilentSDDM A very customizable SDDM theme that actually looks good. 项目地址: https://gitcode.com/gh_mirrors/si/SilentSDDM SilentSDDM是一款高度可定制且视觉精美的SDDM登录主…...

Qwen3.5-9B-AWQ-4bit参数调优实战:温度=0.7时中文回答质量与响应速度平衡点

Qwen3.5-9B-AWQ-4bit参数调优实战&#xff1a;温度0.7时中文回答质量与响应速度平衡点 1. 模型概述与参数调优背景 Qwen3.5-9B-AWQ-4bit是一个支持图像理解的多模态模型&#xff0c;能够结合上传图片与文字提示词输出中文分析结果。在实际应用中&#xff0c;我们发现温度参数…...

Vision Transformer在timm中的实现与优化

Vision Transformer在timm中的实现与优化 【免费下载链接】pytorch-image-models The largest collection of PyTorch image encoders / backbones. Including train, eval, inference, export scripts, and pretrained weights -- ResNet, ResNeXT, EfficientNet, NFNet, Visi…...

【数据结构】树的定义、核心术语与关键性质全解析

在数据结构的世界里&#xff0c;树&#xff08;Tree&#xff09; 是一种极其重要的非线性结构&#xff0c;它完美模拟了自然界中树的层次关系&#xff0c;从文件系统、组织结构&#xff0c;到算法中的二叉搜索树、堆&#xff0c;再到 AI 中的决策树&#xff0c;树的身影无处不在…...