当前位置: 首页 > 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将被处理并不会被丢弃。

http://www.lryc.cn/news/57937.html

相关文章:

  • 对象的比较(数据结构系列12)
  • 31.下一个排列
  • ToBeWritten之理解嵌入式Web HTTP协议
  • 顶级程序员的成长之路1
  • 第三代api自动化测试框架使用教程(pytest+allure+sql+yaml)
  • Qt——实现一个获取本机网络信息的界面
  • 全面深入了解接口自动化,看完还不会我报地址
  • Python 小型项目大全 61~65
  • Hlog
  • 学编程应该选择什么操作系统?
  • Oracle基础部分二(伪列/表、单个函数、空值处理、行列转换、分析函数、集合运算)
  • c/c++:原码,反码,补码和常见的数据类型取值范围,溢出
  • Java题目训练——年终奖和迷宫问题
  • ORACLE EBS系统应用基础概述(1)
  • 电子科技大学信息与通信工程学院2023考研复试总结
  • 神经网络激活函数
  • 2.C 语言基本语法
  • Qt 6.5 LTS 正式发布
  • Linux权限提升—定时任务、环境变量、权限配置不当、数据库等提权
  • Python爬虫——使用requests和beautifulsoup4库来爬取指定网页的信息
  • 基于Java3D的网络三维技术的设计与实现
  • python机器学习数据建模与分析——数据预测与预测建模
  • Flink系列-6、Flink DataSet的Transformation
  • Java-类的知识进阶
  • C# | 上位机开发新手指南(六)摘要算法
  • 测试工程师:“ 这锅我不背 ” ,面对灵魂三问,如何回怼?
  • 【Java闭关修炼】SpringBoot-SpringMVC概述和入门
  • pdf转换器免费版哪种好用:Aiseesoft PDF Converter Ultimate | 无损转word转Excel转PPT转图片啥都行!!!
  • 革新市场营销,突破瓶颈:关键词采集和市场调查的秘密武器
  • 3年测试经验只会“点点点”,不会自动化即将面临公司淘汰?沉淀100天继续做测试