[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

相关文章

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

Spring Security介绍及配置实现代码

《SpringSecurity介绍及配置实现代码》SpringSecurity是一个功能强大的Java安全框架,它提供了全面的安全认证(Authentication)和授权(Authorizatio... 目录简介Spring Security配置配置实现代码简介Spring Security是一个功能强

JSR-107缓存规范介绍

《JSR-107缓存规范介绍》JSR是JavaSpecificationRequests的缩写,意思是Java规范提案,下面给大家介绍JSR-107缓存规范的相关知识,感兴趣的朋友一起看看吧... 目录1.什么是jsR-1072.应用调用缓存图示3.JSR-107规范使用4.Spring 缓存机制缓存是每一

Python logging模块使用示例详解

《Pythonlogging模块使用示例详解》Python的logging模块是一个灵活且强大的日志记录工具,广泛应用于应用程序的调试、运行监控和问题排查,下面给大家介绍Pythonlogging模... 目录一、为什么使用 logging 模块?二、核心组件三、日志级别四、基本使用步骤五、快速配置(bas

Java中 instanceof 的用法详细介绍

《Java中instanceof的用法详细介绍》在Java中,instanceof是一个二元运算符(类型比较操作符),用于检查一个对象是否是某个特定类、接口的实例,或者是否是其子类的实例,这篇文章... 目录引言基本语法基本作用1. 检查对象是否是指定类的实例2. 检查对象是否是子类的实例3. 检查对象是否

什么是ReFS 文件系统? ntfs和refs的优缺点区别介绍

《什么是ReFS文件系统?ntfs和refs的优缺点区别介绍》最近有用户在Win11Insider的安装界面中发现,可以使用ReFS来格式化硬盘,这是不是意味着,ReFS有望在未来成为W... 数十年以来,Windows 系统一直将 NTFS 作为「内置硬盘」的默认文件系统。不过近些年来,微软还在研发一款名

Python datetime 模块概述及应用场景

《Pythondatetime模块概述及应用场景》Python的datetime模块是标准库中用于处理日期和时间的核心模块,本文给大家介绍Pythondatetime模块概述及应用场景,感兴趣的朋... 目录一、python datetime 模块概述二、datetime 模块核心类解析三、日期时间格式化与