没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
内容概要:本文详细介绍了AUTOSAR CAN网络通信中的PduR(Protocol Data Unit Router)模块,它是CAN通信架构中的核心组件之一。PduR主要负责I-PDU(交互层协议数据单元)的路由和网关功能,通过静态配置的路由表实现不同模块间的I-PDU传输。PduR支持多种路由方式,包括单播、多播以及网关功能,涵盖通信接口和传输协议模块之间的数据交换。此外,PduR还提供了缓存机制,以处理并发请求和未知长度的I-PDU。文中还探讨了发送取消、接收取消、零损耗运行等高级特性,并简述了PduR的状态管理和功能配置。 适用人群:具备嵌入式系统基础知识,尤其是对AUTOSAR架构有一定了解的工程师和技术人员。 使用场景及目标:①理解PduR模块在CAN网络通信中的作用及其工作机制;②掌握I-PDU路由和网关的具体实现方法;③学习如何配置和优化PduR以满足不同的通信需求。 其他说明:本文内容较为专业,建议读者结合实际项目进行深入理解和应用。由于PduR的配置和功能较为复杂,建议在实践中参考官方文档和具体应用场景,逐步熟悉其各项特性和配置选项。
资源推荐
资源详情
资源评论

2025/7/22 15:52
AUTOSAR通信篇-CAN网络通信(三:PduR)
https://www.ppmy.cn/news/226228.html?action=onClick 1/19
首页
编程日记
开发工具
嵌入式
服务器
运维
AUTOSAR通信篇-CAN网络通信(三:PduR)
news/2025/7/22 10:47:14/
文章目录
PduR简介
I-PDU缓存
缓存区类型
缓存策略
缓存共享
I-PDU接收
接收来自通信接口的I-PDU
接收来自传输协议的I-PDU
I-PDU发送
通信接口型发送
传输协议型发送
多播传输
处理未知长度I-PDU
I-PDU网关
通信接口
网关缓存
立即网关
传输协议
直接网关
On-the-fly网关
发送取消
接收取消
零损耗运行
状态管理
总结
在上一篇,我们介绍了CanIf模块,接下来我们介绍AUTOSAR通信结构中的核心模块——PduR(AUTOSAR PDU Router)。下图显示了 PduR在

2025/7/22 15:52
AUTOSAR通信篇-CAN网络通信(三:PduR)
https://www.ppmy.cn/news/226228.html?action=onClick 2/19
AUTOSAR CAN通信结构中的位置。
PduR简介
PduR提供路I-PDU(Interaction Layer Protocol Data Units)的路由服务。PduR基于静态定义的I-PDU标识符来执行I-PDU的路由,在运行期间没
有I-PDU被动态路由,即PduR的路由表是静态配置,配置完成后在运行时不支持更改。PduR模块主要有两部分组成:
PduR路由路径:静态路由路径,描述的是每个被路由I-PDU的路由属性。
PduR引擎:根据PduR路由路径执行路由功能的代码,PduR引擎要处理
将I-PDU从Source路由到Destination;
将Source的I-PDU的ID转换为Destination的I-PDU的ID(如:PduR_ComTransmit()到CanIf_Transmit(),PduR_CanIfTxConfirmation()
到Com_TxConfirmation());
PduR的路由功能有三种方式:
1. I-PDU转发
发送
到通信接口
本地模块到通信接口的I-PDU单播(1:1)。
本地模块到通信接口的I-PDU多播(1:n)。
到传输协议
本地到传输协议模块的I-PDU(包括单帧和多帧)单播(1:1)。
本地到传输协议模块的I-PDU(包括单帧和多帧)多播(1:n)。
接收
从通信接口
通信接口模块到本地的I-PDU单播(1:1)。
通信接口模块到本地的I-PDU多播(1:n)。
通信接口模块到本地的I-PDU的Fan-in(n:1)。
从传输协议
传输协议模块到本地I-PDU(包括单帧和多帧)单播(1:1)。
传输协议模块到本地I-PDU(包括单帧和多帧)多播(1:n)。
2. I-PDU网关
到通信接口
I-PDU从一个通信接口模块到另一个通信接口模块以last-is-best / FIFO 缓存或无缓存的方式的1:1网关。
I-PDU从一个通信接口模块到多个通信接口模块以last-is-best / FIFO 缓存或无缓存的方式的1:n网关。
I-PDU从多个通信接口模块到一个通信接口模块以last-is-best / FIFO 缓存或无缓存的方式的n:1网关,此功能source端一次只能
使能一个(一次只能处理一个source)。
到传输协议
I-PDU从一个传输协议模块到另一个传输协议模块使用缓存的1:1网关。
I-PDU从一个传输协议模块到多个传输协议模块使用缓存的1:n网关。
I-PDU从多个传输协议模块到一个传输协议模块使用缓存的n:1网关,此功能source端一次只能使能一个(一次只能处理一个
source)。
3. 网关和转发结合
通信接口
I-PDU被一个或多个上层模块接收的同时也被以last-is-best / FIFO 缓存或无缓存的方式网关到另一个或多个通信接口。

2025/7/22 15:52
AUTOSAR通信篇-CAN网络通信(三:PduR)
https://www.ppmy.cn/news/226228.html?action=onClick 3/19
传输协议
I-PDU(仅单帧)被一个多个上层模块接收的同时,也被以缓存的方式网关到一个或多个底层传输协议模块。
在PduR中,牵涉到一个概念:上层和下层。其实他们分别代表着PduR路由的I-PDU的出发地和目的地。通常作为上层的是:Com 、Dcm等这种
服务型模块,为I-PDU路由的目的地;作为底层的是CanIf、CanTp这种底层执行、协议模块,作为I-PDU路由的出发地。但有些模块根据使用场景
不同即可做为上层(目的地)又可作为下层(出发地),比如:SecOC 、 IpduM等模块。
PDUR模块以一致的方式将I-PDU无修改地从源模块传输到目的模块。I-PDU是通过I-PDU ID或者符号名被识别。在预编译(Pre-Compile)阶
段,即源码中以符号名标识每个I-PDU,但在PduR模块编译后,即程序运行中都是通过I-PDU ID标识每个I-PDU(在实际代码中,每个符号名都是
宏,对应一个特定的数值)。每一个和PduR交互的模块都包含一个I-PDU ID列表,这就意味着模块者可以通过查表找到对应I-PDU。PduR通过使
用源模块I-PDU ID 和 目的模块I-PDU ID区分每个路由路径。源模块的I-PDU ID 位于PduR的配置中,目的模块的I-PDU ID目的模块的配置中。
PduR负责源模块I-PDU ID 转换到目的模块I-PDU ID 的转换。如:Com发送一个I-PDU到CanIf,调用Com_Transmit()启动发送。PduR将会把源
I-PDU ID(由PduR配置)转换成CanIf I-PDU ID。
PduR只根据配置过程定义的路由路径进行路由,即PduR路由路径是静态配置完成的。另外,PduR不允许通过一个路由路径连接具有
不同MetaDataType的IPDUs的配置。
下面,我们详细介绍下PduR的功能和属性。
I-PDU缓存
PduR可以提供I-PDU缓存的支持。I-PDU缓存目前仅可用于网关和多个通信接口到本地模块的fan-in接收。设置相关的PduRQueueDepth时,路
由路径即缓存I-PDU。以下场景强制要求I-PDU缓存:
网关目的模块是触发传输数据提供(Trigger Transmit Data Provision)
TP网关
缓存区类型
从路由路径分配者的视角看,缓存区有两类:全局缓存区和专用缓存区。全局缓存区指的是不被任何PduRRoutingPath引用的缓存区;专用缓存区
指的是至少被一个PduRRoutingPath引用的缓存区。全局缓存区可以被任何PduRRoutingPath使用,而专用缓存区只可被引用它的
PduRRoutingPath使用。
当被缓存I-PDU长度不大于专用I-PDU缓存区所配置的PduRPduMaxLength,I-PDU缓存到专用的缓存区,若被缓存I-PDU长度大于专用I-PDU缓存
区所配置的PduRPduMaxLength,PduR将为该I-PDU分配一个合适的全局缓存区。
缓存策略
缓存策略是由配置参数PduRQueueDepth决定。此参数指定路由路径可以同时占用的PduRBuffers的最大数量:PduRBuffer可以来自专用缓存区
也可来自全局缓存区,由于每个PduRBuffer可存放0或1个I-PDU,因此PduRQueueDepth隐式指定了路由路径可以缓冲的I-PDU的数量。如果
PduRQueueDepth大于1,则缓存以FIFO的形式进行。
缓存共享
在配置上,一个PduRBuffer可以被多个PduRDestBufferRef引用,因此该PduRBuffer可以被任何一个引用PduRRoutingPath用作专用缓存区。但
在任意特殊时间,只有一个PduRRoutingPath占用该PduRBuffer。
I-PDU接收
I-PDU的接收通常是以来自底层的RxIndication标志结束。由底层的RxIndication函数可以是在轮询任务种也可以是在中断服务种发起。
接收来自通信接口的I-PDU
源通信接口模块通过调用PduR_< user:Lo>RxIndication来通知PduR接收到的I-PDU,然后PduR模块调用< Up>_RxIndication通知上层目的模
块,时序图如下图所示:
剩余10页未读,继续阅读
资源评论
lyglary

- 粉丝: 34
创作灵感
更多 >
上传资源 快速赚钱
我的内容管理
展开
我的资源
快来上传第一个资源
我的收益 登录查看自己的收益
我的积分
登录查看自己的积分
我的C币
登录后查看C币余额
我的收藏
我的下载
下载帮助
前往需求广场,查看用户热搜最新资源
- mediaconvert-1.4.107-javadoc.jar
- timestreamwrite-1.0.8-javadoc.jar
- ivschat-jvm-1.1.11-sources.jar
- inspectorscan-jvm-1.3.18-javadoc.jar
- mineconfiguration-bungee-2.8.1.jar
- mirage-env-2.0.7-javadoc.jar
- datalake-spark30_2.12-0.1.14-sources.jar
- ssooidc-jvm-1.0.69.jar
- way-gdrive-1.17.0-test-sources.jar
- mwaa-0.17.7-beta.jar
- commons-node-jvm-5.2.0.jar
- process-snapshot-created-event-2.0.0-2.0.0.jar
- pinpoint-0.17.3-beta.jar
- launchwizard-jvm-1.2.15-javadoc.jar
- br-com-m4rc310-gql-1.0.5-sources.jar
- rolesanywhere-jvm-1.4.61-javadoc.jar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功