读懂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
简介: 现在的汽车越来越智能化和复杂化,这得益于汽车软件和电子控制系统的发展。为了帮助汽车制造商和供应商更好地开发和管理汽车软件,全球性的汽车软件开发标准——AUTOSAR(AUTomotive Open System ARchitecture)应…...
对象的比较(数据结构系列12)
目录 前言: 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. 题目 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如,arr [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地&…...
ToBeWritten之理解嵌入式Web HTTP协议
也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬…...
顶级程序员的成长之路1
本文关注的问题是程序员的水平究竟应该按照什么样的不同层级而逐渐提高?或者说,在学习编程的过程中,每一个阶段究竟应当设定什么样的目标才比较合理?本文的内容主要借鉴了周伟明先生的专栏文章《程序员的十层楼》[86]。注意本文讨…...
第三代api自动化测试框架使用教程(pytest+allure+sql+yaml)
使用教程一、配置1、环境配置2、框架配置3、启动入口二、用例编写1、用例模板2、参数依赖写法2、函数(方法插件)写法3、接口上传文件和表单参数4、接口上传json参数5、接口无数据填写6、code断言7、body断言7、json断言8、sql断言9、完整断言写法&#x…...
Qt——实现一个获取本机网络信息的界面
效果展现 代码实现 networkinformation.h: #ifndef NETWORKINFORMATION_H #define NETWORKINFORMATION_H#include <QMainWindow> #include <QLabel> #include <QLineEdit> #include <QPushButton>class NetworkInformation : public QMai…...
全面深入了解接口自动化,看完还不会我报地址
一、自动化分类 (1)接口自动化 python/javarequestsunittest框架来实现 python/javaRF(RobotFramework)框架来实现——对于编程要求不高 (2)Web UI功能自动化 python/javaseleniumunittestddtPO框架来实…...
Python 小型项目大全 61~65
六十一、ROT13 密码 原文:http://inventwithpython.com/bigbookpython/project61.html ROT13 密码是最简单的加密算法之一,代表“旋转 13 个空格”密码将字母A到Z表示为数字 0 到 25,加密后的字母距离明文字母 13 个空格: A变成N&…...
Hlog
Hlog 简介 Hlog是Hbase实现WAL(Write ahead log )方式产生的日志信息 , 内部是一个简单的顺序日志。每个RegionServer对应1个Hlog(备注:1.X版本的可以开启MultiWAL功能,允许对应多个Hlog),所有对于该RegionServer的写入都会被记录到Hlog中。H…...
学编程应该选择什么操作系统?
今天来聊一个老生常谈的问题,学编程时到底选择什么操作系统?Mac、Windows,还是别的什么。。 作为一个每种操作系统都用过很多年的程序员,我会结合我自己的经历来给大家一些参考和建议。 接下来先分别聊聊每种操作系统的优点和不…...
Oracle基础部分二(伪列/表、单个函数、空值处理、行列转换、分析函数、集合运算)
Oracle基础部分二(伪列/表、单个函数、空值处理、行列转换、分析函数、集合运算)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:原码,反码,补码和常见的数据类型取值范围,溢出 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,此时学会c的话, 我所知道的周边的会c的同学,可手握…...
Java题目训练——年终奖和迷宫问题
目录 一、年终奖 二、迷宫问题 一、年终奖 题目描述: 小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年会上参与一个抽奖游戏,游戏在一个6*6的棋盘上进行,上面放着36个价值不等的礼物, 每…...
ORACLE EBS系统应用基础概述(1)
一、前言 有网友在论坛发帖惊呼:好不容易把EBS系统安装好了,进去一看傻眼了,不知道从哪儿下手?发出惊叹的这位网友所遇到的问题,实际上也是很多人曾经遇到或正在遇到的问题。长期以来,国内的非专业人士&am…...
电子科技大学信息与通信工程学院2023考研复试总结
一、笔试 笔试主要考察数字逻辑(数电)的相关知识,满分200分,需要复习的内容不多且知识点比较集中。根据考场上实际感受,题目难度不大但是题量稍大,2h完成试卷几乎没有多少剩余时间。笔试的体型分为填空题、…...
神经网络激活函数
神经网络激活函数神经网络激活函数的定义为什么神经网络要用激活函数神经网络激活函数的求导Sigmoid激活函数Tanh激活函数Softmax激活函数神经网络激活函数的定义 所谓激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数…...
2.C 语言基本语法
文章目录二、C 语言基本语法1.语句2.表达式3.语句块4.空格5.注释6.printf()函数基本用法7.占位符8.输出格式10.标准库,头文件提示:以下是本篇文章正文内容,下面案例可供参考 二、C 语言基本语法 1.语句 C语言的代码由一行行语句࿰…...
Qt 6.5 LTS 正式发布
Qt 6.5 LTS 已正式发布。此版本为图形和 UI 开发者以及应用程序后端引入了许多新功能,还包含许多修复和通用的改进。Qt 6.5 将成为商业许可证持有者的长期支持 (LTS) 版本。 部分更新亮点: 改进主题和样式 使用 Qt 6.5,应用程序能够便捷地支持…...
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. …...
吴哥窟水文测试:验证古代水库管理AI的智慧
一、从古代水利到现代AI测试的跨越吴哥窟,这座位于柬埔寨的古代都城遗址,以其宏伟的寺庙建筑群闻名于世。然而,鲜为人知的是,支撑这座城市繁荣数百年的,是一套复杂而精密的水管理系统。这套建于9至13世纪的水利工程&am…...
Python3数字类型完全指南:从基础到高级应用
前言在Python编程语言中,数字(Number)是最基本、最核心的数据类型之一。无论是简单的数值计算,还是复杂的数据分析、科学计算,数字类型都扮演着不可或缺的角色。Python3以其简洁、强大和灵活的特性,在数字处…...
Netscape 浏览器:互联网时代的先驱者
Netscape 浏览器:互联网时代的先驱者 引言 自互联网诞生以来,浏览器作为连接用户与网络世界的重要工具,见证了互联网的飞速发展。在众多浏览器中,Netscape 浏览器以其创新和引领潮流的特性,成为了互联网时代的先驱者。本文将回顾 Netscape 浏览器的发展历程、技术特点及…...
浏览器标签页管理新思路:基于服务化架构的TabStack-OpenClaw实践
1. 项目概述与核心价值最近在整理浏览器标签页时,我又一次陷入了那种熟悉的焦虑:几十个标签页像一堵墙一样堆在浏览器顶部,每个都代表着一个“稍后阅读”的承诺,但最终它们都变成了数字垃圾。我尝试过各种标签页管理扩展ÿ…...
别再写一堆CASE WHEN了!PostgreSQL里COALESCE和NULLIF这两个函数,帮你把SQL写得又短又稳
告别冗长SQL:用PostgreSQL的COALESCE和NULLIF重构条件逻辑 在数据处理的世界里,SQL就像是我们与数据库对话的语言。但你是否经常遇到这样的情况:为了处理各种空值和边界条件,你的SQL查询变成了一个由无数CASE WHEN语句组成的庞然大…...
redis:AOF
Redis AOF(Append Only File)核心知识点总结一、核心定义与作用AOF 是 Redis 的一种持久化方式,以文本 / 二进制形式记录所有写命令(如 set、lpush 等),核心作用是保存数据、实现宕机后的数据恢复ÿ…...
AI智能体技能库:模块化设计、标准化实现与LangChain集成实战
1. 项目概述:一个面向AI智能体的技能库最近在折腾AI智能体(Agent)开发的朋友,估计都绕不开一个核心问题:如何让一个“大脑”(大语言模型)具备执行具体任务的能力。你可能会用LangChain、AutoGen…...
初创团队如何利用 Taotoken 以更低成本试用多种大模型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初创团队如何利用 Taotoken 以更低成本试用多种大模型 对于初创团队和独立开发者而言,在产品原型验证阶段,…...
告别GitHub龟速下载:三分钟掌握浏览器加速插件的正确用法
告别GitHub龟速下载:三分钟掌握浏览器加速插件的正确用法 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 你是否曾经在…...
IDEA 2018.2.3 下 Maven 依赖包消失?别慌,可能是版本兼容性在作祟
IDEA 2018.2.3 下 Maven 依赖包消失的深度排查指南 当你打开一个尘封已久的老项目,准备继续维护或迁移时,突然发现IDEA的External Libraries里空空如也,只剩下孤零零的JDK包,整个项目文件一片飘红——这种场景对许多维护历史代码库…...
