Interpretation of Vector AutoSAR: PDUR

PDUR interfaces with other modules such as:

Features

Features supported by the PDUR module:

  • Pre-compilation and post-compilation configuration variables

  • I-PDU transmission and reception

  • cancel receiving/transmitting support

  • Change parameter support

  • 1:1 routing between upper and lower communication interface modules

  • 1:1 routing between upper and lower transport protocol modules

  • 1:1 interface gateway routing

  • 1:N interface gateway routing

  • 1:1 transport protocol gateway routing

  • 1:N transport protocol gateway routing (single-frame and multi-frame Tp messages)

  • Complex Device Driver (CDD) support

  • routing path group

  • Debug support (optional feature)

  • 1:N fan out from the same upper layer PDU (if)

Features not supported by the PDUR module:

  • link time configuration

  • 1:N fan-out from the same upper layer PDU (Tp)

  • Zero cost operation

  • Minimal routing (reduced state)

Data Provision - Direct data provision

For the Direct data provision routing path, the data will be copied from PDUR to TxBuffer, and then forwarded to the destination module in the transmission API call. If a FIFO queue is configured, data may be queued and then transmitted in the Tx Confirmation context.

Data Provision - Trigger transmit data provision

For the Trigger transmit data provision routing path, the data will be copied by the target module in the trigger transmit API call. If the target module always wants to get the latest data available (single-change-area configuration), or it has specific timing requirements when it needs to provide data.

Data Provision - FIFO Queue

FIFO is used if loss of I-PDU instances is critical. In the case of several parallel transmit FIFO queues, the order of transfers is determined by the underlying bus accesses, not based on the relative order in which I-PDUs are received. Thus, a FIFO queue is only concerned with FIFO-based ordering of its own queued instances of I-PDUs.

Queue depth can be configured independently for each routing path.

如果I-PDU传输失败(接口层传输的负返回值请求),则PDU路由器从队列中删除I-PDU实例,并重试与下一个实例进行传输–直到队列为空或传输请求被接受。在缓冲区溢出的情况下,将删除受影响队列的所有排队的I-PDU实例并且发送新接收的I-PDU。

Buffer Configurations - No Buffer

如果PduRDestPduQueueDepth没有配置,no buffer将被使用。

Buffer Configurations - Direct DataProvision FIFO

如果data provision设置为direct data provision,并且PduRDestPduQueueDepth大于0,FIFO 队列将会被使用。

Buffer Configurations - Trigger TransmitData Provision FIFO

如果data provision设置为triggerdata provision,并且PduRDestPduQueueDepth大于0,FIFO 队列将会被使用。

Buffer Configurations - TriggerTransmit Data Provision Single Buffer

如果数据提供设置为触发传输,并且PduRDestPduQueueDepth为1,则将使用单个缓冲区。

适用于“最后的值是最好的值”的场景。缓冲区中的值将被覆盖,因此触发器传输调用总是从缓冲区获取最新数据。有必要为缓冲区指定默认值,因为可以在将任何新数据写入缓冲区之前调用触发器传输API。

Buffer Configurations - Shared Tx Buffer Pool support

接口层网关支持共享的Tx缓冲区。Tx缓冲器可以同时被分配给多个路由路径。这对于路由同时不活动的路径非常有用。因此,可以减少RAM的消耗。

Buffer Configurations - Timing aspects

PDU路由器触发要尽快路由的I-PDU实例的传输。如果队列为空,则接收将直接导致对接口层的传输请求。如果队列被占用,则I-PDU实例将被添加到队列中。

排队的I-PDU实例在前面的Tx确认中传输,这种排队行为可能会导致目标信道上的突发(尤其是CAN),如果多个队列实例排队并且如果驱动程序层没有释放硬件队列。

PDU路由器不提供实现速率转换的机制(例如。改变从源信道到目的地信道的循环时间)。速率转换可以通过使用COM信号的信号路由路径来实现(以额外的运行时成本)网关。

Buffer Configurations - Dynamic DLC Routing

对于PduR 9.00.00及更高版本,动态长度路由没有限制用于网关路由路径。0和配置的PDU长度之间的所有长度可以是路由。长度可以在运行时动态调整。如果路由路径大部分时间接收较小的I-PDU,则可以分配较小的缓冲区到PduRDestPdu。如果较小的缓冲区足够大实际接收到的消息。用例可以是经典CAN消息的路由经由CAN-FD路由路径。此功能可节省内存资源,从而使8字节的I-PDU不占用64字节的缓冲区。

Buffer Configurations - Transport protocol low levelrouting

如果源网络和目标网络上的TP段(N-PDU)相同,则为可以使用接口层网关路由TPI-PDU(“低级”路由)。如果使用低级别路由,则TP层不再可访问(以前的)N-PDU,并且因此被PDU路由器模块视为I-PDU。低级路由的优点是它是在接口层的上下文中执行的RxIndication,因此引入了最小的路由延迟。然而,低级别路由有几个缺点,这些缺点可能会导致高级别TP路由更合适:

  • TP协议转换不可能,因为帧布局和流控制在源网络和目标网络上的处理必须相同。

  • 不可能将路由的TP I-PDU转发到本地DCM,因为可能需要用于功能请求。

  • 由于在目的地总线上爆发。突发是排队的I-PDU的结果在先前的I-PDU的TxConfirmation中发送。

  • FiFo队列中的缓冲区溢出导致队列被刷新,因此破坏TP通信。如果接收TP连接支持动态块大小自适应。

Transport Protocol Gateway

TP层网关允许TP I-PDU的高级路由。

为了减少运行时和内存消耗,网关支持所谓的动态路由(对于1:1、1:N和N:1的单帧和多帧路由路径)。取决于每个路由路径的“阈值”配置,网关从在源上完成接收之前在目的地网络上进行传输网络。

由于AUTOSAR 4,PduR在PduR_<LoTp>_CopyRxData()调用中复制数据。因此,PduR模块总是知道还有多少缓冲区可用,并提供Tp模块的完整尺寸。PduR不限于线性缓冲区边界,如AUTOSAR 3,因此PduR数据速率非常有效。

Tp模块永远不会在一个PduR_<LoTp>_CopyRxData()调用中获得更多缓冲区而不是PduR提供给Tp模块。因此,Tp模块不应试图复制比所提供的缓冲区长度更多的数据。

多路由

PduR支持用于单帧和多帧的N:1和1:N路由路径。这些路由路径中的每一个在运行时将仅占用单个Tx缓冲区(如果不需要FIFO行为)。有关排队行为的详细信息,请参阅第3.7.4章。

TP阈值

阈值用于…

„ … 定义在目的地总线上触发传输的缓冲器的填充水平。

„ … 在运行时从选择中排除缓冲区。这可能有助于确保为单个帧配置的小缓冲区不会被考虑用于长的多消息。如果阈值大于缓冲区大小,则确保PduR不会使用该缓冲区来执行路由

配置实例:Communication interface range gateway

PduR路由路径配置通常侧重于专用Pdu的路由以及它们的总线特定表示(例如,具体的CAN ID、DLC…)。对一些人网络和通信体系来说,避免专用所有可能的和需要的PduR路由路径的配置是有利的。尤其是如果大负荷的Pdu应在网络之间路由,PduR路由路径配置并且需要大量的硬件资源(ROM/RAM)。

为了克服这种情况,可以使用所谓的测距路由。对于完整的路由两个网络之间的Pdu范围仅需要配置单个PduR路由路径。从技术上讲,范围路由是基于附加到Pdu数据字段。在接收Pdu期间,相关的总线接口模块存储所有Pdu数据字段的元数据部分中所需的Pdu元信息(CAN ID)。PduR本身执行完整Pdu数据字段的路由,包括元数据。在传输过程中,相关的总线接口模块使用元数据信息。所传输的总线Pdu的动态自适应(CAN ID)。路由的范围Pdus由总线接口特定的Rx-Pdu范围定义。如果是CanIf,则CAN ID Rx滤波器用于定义范围。下图显示了测距路由技术。

Guess you like

Origin blog.csdn.net/NMR0574/article/details/129667768