嵌入式系统与单片机|技术阅读
登录|注册

您现在的位置是:嵌入式系统与单片机 > 技术阅读 > [Classic AUTOSAR学习] PduR中的Gateway功能

[Classic AUTOSAR学习] PduR中的Gateway功能

如不做特殊说明,本文基于21-11规范进行说明。

PduR是什么

在AUTOSAR的架构中,通信部中很重要的一个模块就是PduR,它能将IPdu从不同的模块路由到对应的模块。

如上图蓝色部分所示,PduR主要包括两部分:PduR路由表,以及PduR路由引擎。

路由表描述了每一个IPdu的路由路径是什么样的,路由引擎则负责根据这个路由表将IPdu从源地址路由到目的地址,同时,还可以将源IPdu ID翻译为目的IPdu ID。

IPdu处理

PduR模块可以对IPdu做以下处理:

IPdu转发

无论是上层模块经由PduR转发给下层模块进行发送,还是下层模块经由PduR转发给上层模块进行接收,都可以设置1:1或者1:n的转发路径。除此之外,当IPdu从下层模块的IF层期望接收到上层模块时,能够做到n:1。

IPdu网关

对于IF层,PduR网关可以做到1:1,1:n,n:1,并且能够选择不使用buffer,FIFO buffer,或者last-is-best buffer。

对于TP层,PduR网关同样可以做到1:1,1:n,n:1。不过buffer是必须要用到的。

IPdu网关和转发

也即同时存在上述两种情况的状态。

缓存buffer

IPdu的缓存仅适用于网关、N:1接收两种情况。

缓存分为两种,没有被特定PduRRoutingPath引用的,为全局buffer;被至少一个PduRRoutingPath引用的,为专用buffer。

一般常见的是全局buffer,但是当处理功能寻址诊断请求,尤其是有更高优先级的OBD请求时,为了避免内存不够导致的延迟处理,需要分配专用buffer。

IPdu网关

IPdu网关主要意味着以下功能:

如果是IF层接口,那么可以支持1:1和1:n,每一个目的路径都可以独立配置buffer类型。在网关转出的同时,也能同时转发到Dcm等上层模块。

如果是TP层接口,那么也可以支持1:1和1:n。多帧网关时还能“边收边发”,也即完整数据还没接收完毕时,就可以开始向目的地址的TP接口进行传输。

需要注意的是,IF层网关和TP层网关不能混用。

有哪些选项?

我们以EB产品为例,转发与网关都有这些选项可以使用:

如果是需要对TP进行buffer,还需要配置TP buffer:

希望将收到的TP数据队列起来?那你可以设置队列长度:

再如果,如果希望边收边发?设置这个值,当收到32bytes后,即使接收端还没有接收到所有的数据,PduR也会开始网关。

撰文不易,还请点赞/喜欢/收藏,鼓励一下。

本文同步首发于知乎,点击下方"阅读原文跳转"。