• 648查看
  • 0回复

[Autosar] AUTOSAR 通信栈分析(二)

[复制链接]


该用户从未签到

发表于 21-1-2024 09:54:41 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


目录

1.PduR

1.1 PduR多播功能

1.2 PduR网关路由功能

1.3 PduR和IpduM

2.CAN 通信栈介绍

2.1 ComM、CanSM、CanNM概述

2.2 PDU和HOH

2.3 CAN消息TX\RX模式

3.小结

书接上文AUTOSAR 通信栈分析(一)。
我们了解了通信栈中服务层Com模块的基本功能,对PDU、SDU等做了解析,那么今天就来讲解通信栈的PduR,并以CAN通信栈为例,讲解一下CanNM、CanSM、CanTP是如何协同工作的。
01.PduR概述PduR全称PDU Router,顾名思义,它在AUTOSAR中负责PDU的路由,向上承接应用模块如DCM\COM等,向下承接接口层如CanIf、LinIf并分发到不同的总线硬件驱动,如下图所示:
AUTOSAR 通信栈分析(二)w1.jpg

         对于PduR有多重用法,如下:
1.1 PduR多播功能

        如下图所示:

AUTOSAR 通信栈分析(二)w2.jpg




    单路由模式

        Com层通过PduR将PDU路由到CanIf或者路由到LinIf层


    多路由模式

        Com层通过PduR将PDU路由到CanIf和LinIf层
1.2 PduR网关路由功能

所谓网关路由,即可以在一个接口层(If层)到另一个接口层(If层),也可以同时传到上层,如Com、DCM等,如下图:
AUTOSAR 通信栈分析(二)w3.jpg

例如,从LinIf接收到数据到PduR,PduR经过配置可以上传到Com,同时也可以路由到CanIf进行传输,实现网关功能。1.3 PduR和IpduM

除了上述功能,在PduR这一层级还有一个IpduM(I-PDU Multiplexer) ,用于同一个PDU ID的复用,其基本原理如下:

AUTOSAR 通信栈分析(二)w4.jpg

此外,还可以多个PDU组合成一个容器PDU,然后这个容器PDU经由PduR传输出去,这样一帧传的数据就更多了,如下:
AUTOSAR 通信栈分析(二)w5.jpg

02.CAN通信栈介绍
上面讨论了这么多内容,我们还是来看看一个具体示例:以CAN为例,一个比较完整的通信栈包括如下模块:
AUTOSAR 通信栈分析(二)w6.jpg

        首先简单介绍下每个模块基本概念,后面具体讲细节



    ComM:管理所有通信channel的通信模式,与CanSM、CanNM相关

    CanNM:处理网络管理相关问题

    CanSM:处理CAN通信栈的状态管理问题

    Com:CAN报文信号的拆解组包等

    CanTP:诊断PDU的分段

    CanIf:对MCU内部CAN的不同驱动进行抽象

    Can:实际硬件CAN驱动访问
2.1 ComM、CanSM、CanNM概述

ComM主要是通信状态、网络管理的控制,具体控制框图如下:
AUTOSAR 通信栈分析(二)w7.jpg

具体来讲,主要有以下功能 :



    管理每个通信channel的通信模式

    协调来自通信请求者的总线通信请求

    提供API关闭某些特定信号的发送

    唤醒总线

    总线错误处理
所谓通信通道,是对 物理通信controller的抽象,每个通道都有自己的通信模式,如下面所示:
通信状态/Sub_State消息发送消息接收NM/总线通信唤醒能力

Full COM

Network requested
请求不可唤醒

Full COM

Ready Sleep
请求不可唤醒
Silent COM×请求
用户请求

网络响应
No COM××请求
用户请求

被动唤醒

        简化后的状态机如下:

AUTOSAR 通信栈分析(二)w8.jpg

最开始,状态为No_COM,当被动唤醒或者接收到Full com请求时(做NM报文首发的同学是不是很熟悉)进入到Full COM,在Full COM子状态里,首先进NetReq状态,如果请求一直在,那没问题,待在里面玩吧;如果没有请求了,进Ready Sleep;这里就需要结合CanNM进入到Silent COM或者NO_COM了。这里还是没有把ComM怎么和CanSM、CanNM联动了,举个例子,当有Full_COM请求

ComM -> CanSM :请求Full通信了

              CanSM -> CanIf:赶快把tranceiver的模式设置为normal

                             CanIf-> CanTrcv:好吧,我变成normal了

              CanSM -> CanIf:赶快把contorller设置为started

                             CanIf-> Can:好吧,我变成started了

              CanSM -> Com :给通道1准备开始Rx PDU Group接口

              CanSM -> Com :给通道1准备开始Tx PDU Group接口

              CanSM -> ComM :好了,CanSM小弟已经把活干完了

ComM -> NM:有个网络请求,从CanNM来的

              NM -> CanNM:快点跳到start模式哦

                        CanNM:OK
2.2 PDU和HOH

在AUTOSAR中,硬件被抽象成为HOH(Hardware object handles),通常来讲一个HOH表示CAN controller里的一个消息buffer。CanIF把不同PDU映射到不同的HOH上,如下:
AUTOSAR 通信栈分析(二)w9.jpg

如果当前HOH被占用了,在CanIf层通常也会有一个buffer用于缓存,如下:
AUTOSAR 通信栈分析(二)w10.jpg

2.3 CAN消息TX\RX模式

在CAN的基础配置中,message的处理方式有两种:


    中断

        在OS中配置相应的ISE


    轮询

        调度器周期调度Can Mainfunction

除了上述功能,还有如下功能:


    TxConfirmation

    RxIndication

    BusError Handle

    WakeUp Hanlde
03.小结本节内容主要是对CAN通信栈、PduR做了介绍,把ComM如何与CanSM、NM、CanNM协调做了一个概述,下一节将详细介绍NM的状态机。


该用户从未签到

发表于 15-3-2025 13:58:00 | 显示全部楼层
AUTOSAR 通信栈中,PduR(Protocol Data Unit Receiver)是通信栈的核心模块之一,负责处理通信协议中的数据单元接收。它支持多播功能,能够实现多个接收者接收同一通信消息。同时,PduR具有网关路由功能,可实现不同通信模块间的数据交换。接下来将详细介绍PduR与IpduM的交互以及CAN通信栈中的相关模块如ComM、CanSM和CanNM的协同工作。在CAN通信中,PDU(Protocol Data Unit)和HOH(Header and Object Handling)扮演重要角色,处理消息的发送和接收模式。总之,PduR是通信协议实现的关键部分,其性能直接影响整个通信系统的稳定性和效率。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 15-3-2025 13:58:00 | 显示全部楼层
AUTOSAR 通信栈中的 PduR(Protocol Data Unit Routing)模块负责处理协议数据单元的路由功能。该模块具有多播功能和网关路由功能,能够实现不同通信模块间的数据交互。PduR 与 IpduM(Input Pdu Management)协同工作,管理输入 PDU 的处理。

以 CAN 通信栈为例,PduR 与 CanNM(CAN Network Manager)、CanSM(CAN Session Manager)以及 CanTP(CAN Transport Protocol)共同构成了 CAN 通信的核心模块。其中,CanNM 负责 CAN 网络管理,CanSM 负责会话管理,CanTP 负责 CAN 数据的传输。这些模块协同工作,实现了 CAN 消息的发送和接收。

在通信栈中,PDU(Protocol Data Unit)是核心概念,涉及数据的封装与解析。PduR 对 PDU 的处理至关重要,确保数据在不同模块间正确传输。总的来说,PduR 是通信栈中关键的部分,负责数据的路由和传输。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 15-3-2025 13:58:00 | 显示全部楼层
AUTOSAR 通信栈中的 PduR(Protocol Data Unit Routing)模块是通信协议栈的核心组成部分,主要负责处理 PDU(协议数据单元)的路由和传输。以下是关于 PduR 的概述及 CAN 通信栈的相关分析:

PduR 负责管理 PDU 的多播功能和网关路由功能,确保数据在车辆内部不同通信模块间正确传输。PduR 还与 IpduM(Input PDU Manager)协同工作,管理输入 PDU 的接收和处理。

在 CAN 通信栈中,PduR 与 ComM(通信管理)、CanSM(CAN 标准化映射)和 CanNM(CAN 网络管理)紧密协作。ComM 负责通信的建立和管理,CanSM 负责 CAN 消息的标准化映射,而 CanNM 负责 CAN 网络的管理。PDU 在这些模块间传输,通过 PduR 实现路由和传输。

此外,PDU 和 HOH(Host On Half)在 CAN 通信中也起到关键作用,PDU 负责数据的封装和解封装,而 HOH 则负责数据的发送和接收模式。

总结来说,PduR 是通信协议栈中的核心模块,负责 PDU 的路由和传输,确保数据在车辆内部不同通信模块间的正确传输。在 CAN 通信栈中,PduR 与其他模块协同工作,实现数据的正确传输和处理。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 10:45 , Processed in 0.421700 second(s), 37 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.