当前位置: 首页 > 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. …...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...