[AutoSar]BSW_Com014 PDUR 模块介绍

2024-03-18 01:04

本文主要是介绍[AutoSar]BSW_Com014 PDUR 模块介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 关键词
  • 平台说明
  • 一、PDUR 所处架构位置
  • 二、PDUR 的主要功能
  • 三、Functional Specification
    • 3.1 I-PDU handling
      • 3.1.1 Transport Protocol
      • 3.1.2 I-PDU Transmission from upper module(s)
      • 3.1.3 Communication Interface
      • 3.1.4 Transport Protocol
      • 3.1.4 I-PDU Gateway
        • 3.1.4.1 Buffer allocation
        • 3.1.4.2 FIFO
    • 3.2 Cancel transmission
    • 3.3 Cancel reception
    • 3.4 State Management
    • 3.5 Complex Driver Interaction
  • 四、I-PDU Reception
    • 4.1 CanTp module reception of I-PDU
  • 五、I-PDU transmission
    • 5.1 CanTp module transmission of I-PDU
  • 六、I-PDU网关
    • 6.1 广播模式
    • 6.2 网关模式

  

关键词

嵌入式、C语言、autosar、OS、BSW

平台说明

项目Value
OSautosar OS
autosar厂商vector , EB
芯片厂商TI 英飞凌
编程语言C,C++
编译器HighTec (GCC)
autosar版本4.3.1

在这里插入图片描述
>>>>>回到总目录<<<<<<

一、PDUR 所处架构位置

  位于服务层。
在这里插入图片描述

二、PDUR 的主要功能

  主要两大类功能:
  ①承上启下传递I-PDU。
  ②作为网关将不同总线的I-PDU路由到指定的communicate channel。

  1.I-PDU 的传输和接收。
  2.Cancel-Receive /传输支持。
  3.作为上下级通信接口模块间1:1路由。
  4.作为上下级传输协议模块间1:1路由。
  5.作为1:1网关路由。
  6.作为1:N网关路由。
  7.作为1:1传输协议网关路由。
  8.作为1:N传输协议网关路由(单帧和多帧Tp消息)。
  
  
  
  

三、Functional Specification

  PDU Router模块是一个I-PDU传输单元,位于接口模块和传输协议模块(下层模块)之上,COM和DCM(上层模块)之下。
在这里插入图片描述
  除了PDU Router模块之外,还有I-PDU Multiplexer (IpduM)模块,它支持I-PDU的多路复用,当作为不同角色的时候阔以被当作上层或者下层模块。当IpduM调用PDU Router模块发送多路i -PDU时,或被PDU Router模块调用接收或发送多路i -PDU确认时,或通过触发发送提供数据时,必须将其视为上层模块。如果IpduM调用PDU Router模块向上层(例如COM)转发发送确认或接收指示,或者当它被PDU Router模块调用更新属于多路复用I-PDU的I-PDU时,它必须被视为下层模块。
  从ECU的角度来看,PduR模块可以执行三种不同的功能类操作:
    PDU接收到本地模块: 从底层模块接收I-PDU并将其传递到一个或多个上层模块;
    从本地模块传输PDU: 根据上层模块的请求,将I-PDU传递到一个或多个底层模块;
    PDU网关:
      从接口模块接收I-PDU,并立即通过相同或其他通信接口模块(如ETH,LIN)传输I-PDU;
      从传输协议模块接收I-PDU,并通过相同或其他传输协议模块(如ETH,LIN)传输I-PDU。
  当然,PDU接收和PDU网关可以相结合。例如:COM模块在接收I-PDU的同时,它被网关接到另一个较低
层的模块。

3.1 I-PDU handling

  每个I-PDU 通过 identified 去识别,即 I-PDU ID。PDUR 通过配置的 source module I-PDU ID 和destination I-PDU IDs来识别上层传到哪(COM 还是DCM),下层传到哪(CAN TP,还是FlexRay Tp或者DoIP)。
  例如:如下图,COM模块调用PduR_ComTransmit(此处,PDU Router模块将列出I-PDU ID), PDU Router模块将调用CanIf_Transmit(此处,CanIf模块配置将列出I-PDU ID), CanIf将调用PduR_CanIfTxConfirmation(此处,PDU Router模块配置将列出I-PDU ID), PDU Router模块将调用Com_TxConfirmation(此处,COM模块配置将列出I-PDU ID)。示例如下图3所示(参数只显示I-PDU ID)。
在这里插入图片描述

3.1.1 Transport Protocol

  对于传输协议模块,PDU路由器模块在接收到第一帧(FF)或单帧(SF)时首先收到开始接收通知。该调用通过调用_StartOfReception被转发到相关的上层模块。每个段的有效载荷(N-PDU)将通过后续的_CopyRxData调用在目标上层模块中复制。在接收到最后一个N-PDU后,传输协议模块将通知PDU路由器模块完整的I-PDU已经收到,PDU路由器模块将通过调用_TpRxIndication将此指示转发给相关的上层模块。

3.1.2 I-PDU Transmission from upper module(s)

  目的下层模块的传输操作始终是异步的。也就是说,当I-PDU由PDU Router模块传递到目的下层模块后,传输业务请求立即返回。如果在I-PDU发送成功或失败后,目的地下层模块通过PduR_<Lo>TxConfirmation(通信接口)或PduR_< lot>TxConfirmation(传输协议)通知PDU - Router模块,则PDU - Router模块将通过<Up>_TxConfirmation(通信接口)或<Up>_TpTxConfirmation(传输协议)将此指示转发给上层模块。

3.1.3 Communication Interface

i - pdu在通信接口上有三种传输方式:
   1.直接提供数据——当上层模块调用PduR_Transmit函数时,PDU Router模块将调用转发给Transmit函数,数据在调用中由下层通信接口模块复制。
   2.触发发送数据提供——下层通信接口模块通过PduR
TriggerTransmit请求发送I-PDU, PDU Router模块将请求转发给PduR_TriggerTransmit,数据由上层模块复制。
   3.当上层模块调用PduR_Transmit函数时,PDU Router模块将调用转发给PduR_Transmit函数,下层模块(通信接口模块)不复制数据。数据稍后将由下层使用PduR_TriggerTransmit请求。

3.1.4 Transport Protocol

   使用传输协议传输I-PDU有单播和组播两种方式。单播(1:1)传输由一个上层源传输协议模块和一个下层目的传输协议模块组成。组播(1:n, n>1)传输由多个下层目的传输协议模块组成。PDU Router模块不会检查传输请求中是否包含单个N-PDU (SF)或多个N-PDU (FF、CF等)。
   I-PDU的发送是由上层源模块发出的PduR_< Up >发送请求发起的。PduR根据路由路径,使用Transmit将请求转发给一个或多个下层目的传输协议模块。注意< Lo >Transmit可能包含数据,也可能不包含数据。
  目标模块将通过调用PduR
< LoTp >CopyTxData请求数据。数据的重传(如果传输协议支持)由RetryInfoType参数进行。在传输结束时,目的模块调用PduR
< LoTp >TxConfirmation,并将其转发给上层源模块

3.1.4 I-PDU Gateway

  PDU Router模块支持从一个源总线到一个或多个目的总线的i -PDU的网关。从本地模块发送和接收的不同之处在于,PDU Router模块必须同时是接收方和发送方,在某些情况下还为I-PDU提供缓冲。
  以下是I-PDU网关的特性概述:

  I-PDU可以从一个源通信接口模块网关到一个(1:1)或多个目的通信接口模块(1:n I-PDU网关)。
    1.对于每个目标,PDU路由器模块可以以可配置的深度缓冲一个I-PDU的每个目的地(如果有多个I-PDU,即FIFO)。
    2.一个I-PDU可能在上层模块发送到n个目的通信接口的同时被网关接收。
  使用TP传输的i - pdu可以被网关到一个或多个目的地TP模块,其范围如下:
    1.单帧和多帧都可以被网关到多个目标TP模块或本地模块(例如DCM)。
    2.在多个n- pdu中传输的I-PDU可以“即时”被网关发送到一个目的地,这意味着在目的地TP模块上开始传输之前不需要收到完整的I-PDU.
    3.在多个n - pdu中传输的I-PDU可能被网关送到另一个TP模块,也可能被本地模块接收,但不能同时被两个模块接收。
    4.使用TP模块传输的i - pdu可能被FIFO缓冲。这适用于SF和多帧i- pdu。
   i - pdu只能在通信 IF 模块或TP模块之间网关,不能混合使用。例如,不能从CanIf收到I-PDU后将其发送到LinTp。只能 IF <–> IF, TP <–> TP

3.1.4.1 Buffer allocation

   PduR使用两种不同的缓冲区用于传输协议pdu的网关:通过PduRRoutingPaths配置的大TP缓冲区池和通过PduRDestTxBufferRef配置的专用缓冲区。专用缓冲区用于单帧路由,并且必须足够大,以包含所涉及的总线系统的最大可能的单帧。较大的PduRTpBuffers用于多帧路由,并且必须足够大,在动态网关的情况下可以包含一个TP数据块,在直接网关的情况下可以包含完整的PDU。为单帧设置专用缓冲区的主要原因是功能性诊断请求,特别是OBD请求具有非常高的优先级,并且不能被缓冲区分配策略延迟。

3.1.4.2 FIFO

   可以使用FIFO队列行为将I-PDU从一个源发送到多个目的地低层模块。FIFO队列可用于通信接口和传输协议(即使有多个N-PDU消息)

3.2 Cancel transmission

  上层模块可以请求取消I-PDU(通过通信接口模块或传输协议模块传输)。PDU路由器模块将请求转发给一个目的模块(单播)或多个目的模块(组播)。
  PduR_CancelTransmit用于取消通信接口I-PDU,以及在转发的情况下取消传输协议I-PDU。
  取消传输是可选的,在每个模块的配置中启用。
在这里插入图片描述
  转发时,上层模块请求取消I-PDU, PDU路由器根据路由路径将请求转发给一个或多个目的模块。
  在网关的情况下,可以由PduR的网关部分使用Cancel transmission来优化资源处理(即,如果目的地不再可用)。

3.3 Cancel reception

  上层模块可以请求取消在传输协议模块上传输的I-PDU。PDU路由器模块将通过PduR_CancelReceive接收请求。取消请求的确认是通过CancelReceive的返回值进行的,该返回值作为PduRCancelReceive的返回值转发给上层模块.

3.4 State Management

  PDUR_ONLINE和PDUR_UNINIT两种状态,上电但是未初始化是在PDUR_UNINIT状态,初始化后在PDUR_ONLINE状态。只有在PDUR_ONLINE才能正常处理PDU。
在这里插入图片描述

3.5 Complex Driver Interaction

  PDUR 支持对上下层CDD 的调用和传输。PduR为每个上层Cdd提供唯一的发送功能“PduR_ transmit”。当下层模块对上层CDD发送或接收的Pdu调用PduR的callout函数时,PduR会调用CDD对应的目标函数。
  对于需要通信接口API的底层CDD, PduR提供了一组独特的通信接口API函数PduR_< CDD >RxIndication,如果配置了PduR_< CDD >TxConfirmation和PduR_< CDD >TriggerTransmit。
  对于需要传输协议API的底层CDD, PduR提供了一组独特的传输协议API函数PduR_< CDD >CopyRxData、PduR_< CDD >CopyTxData、PduR_< CDD >RxIndication、PduR_< CDD >StartOfReception和PduR_< CDD >TxConfirmation。

在这里插入图片描述
在这里插入图片描述

四、I-PDU Reception

  从通信接口模块或传输协议模块接收并转发到COM模块的I-PDU。需要注意的是,PDU路由器并不是通信接口模块和i -PDU的唯一用户。其他模块如NM、TP等直接从通信接口模块接收pdu。
在这里插入图片描述

4.1 CanTp module reception of I-PDU

   接收从CanTp模块到DCM模块的I-PDU。使用传输协议api进行接收。在这里插入图片描述

五、I-PDU transmission

在这里插入图片描述

5.1 CanTp module transmission of I-PDU

   传输I-PDU从DCM模块到CanTp模块使用传输协议API。
在这里插入图片描述

六、I-PDU网关

  如3.1.4所描述,PDUR可以作为网关来使用。这里注意网关的两种形式:

6.1 广播模式

  将PDU 同时分发到LIN 和CAN
在这里插入图片描述

6.2 网关模式

  将CAN PDU 转发到LIN 。
在这里插入图片描述
>>>>>回到总目录<<<<<<

这篇关于[AutoSar]BSW_Com014 PDUR 模块介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/820733

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现

Mysql BLOB类型介绍

BLOB类型的字段用于存储二进制数据 在MySQL中,BLOB类型,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储的大小不同。 TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数