[AutoSar]BSW_Com014 PDUR 模块介绍


  

关键词

嵌入式、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 。
在这里插入图片描述
>>>>>回到总目录<<<<<<

  • 32
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Autosar BSW(Basic Software)是Autosar标准中的一部分,它包括一些通用的基础软件模块,用于支持汽车电子系统的各种功能和特性。Autosar BSW包含以下几个模块: 1. Communication Stack(通信栈):负责处理汽车电子系统的通信协议和网络通信。通信栈包括CAN、LIN、FlexRay、Ethernet等通信协议,以及TCP/IP、CANopen、UDS等通信协议栈。 2. Memory Stack(存储栈):负责管理汽车电子系统中的各种存储器,包括EEPROM、Flash、RAM等。存储栈提供了存储器管理、数据备份、数据恢复等功能。 3. Operating System (OS) (操作系统):负责管理汽车电子系统中的各种资源,包括CPU、内存、任务、中断等。操作系统提供了任务管理、资源管理、调度等功能。 4. Microcontroller Abstraction Layer (MCAL) (微控制器抽象层):负责管理汽车电子系统中的微控制器硬件资源,包括IO口、定时器、中断等。MCAL提供了硬件抽象层、驱动程序、中断处理等功能。 5. Diagnostics Stack (诊断栈):负责管理汽车电子系统中的故障诊断和错误处理。诊断栈包括UDS、OBD和J1939等诊断协议,以及诊断管理、错误处理、故障码诊断等功能。 6. Security Stack (安全栈):负责保护汽车电子系统的安全性和保密性。安全栈包括加密、解密、签名、认证等功能。 总之,Autosar BSW包含了多个重要的模块,它们提供了通信、存储、操作系统、硬件抽象、诊断和安全等方面的支持。这些模块的集成和协同工作,可以实现高效、安全、可靠的汽车电子系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老灰╮(╯-╰)╭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值