AUTOSAR通信栈方法论

目录

一、通信栈具体结构

二、模块详解:

三、传输流程


一、通信栈具体结构

  AUTOSAR通信栈方法论                                                         AUTOSAR通信栈结构

AUTOSAR通信栈对应用层隐藏了与总线相关的协议和报文的属性。以基本的CAN通信为例,其发送机制如上图:

①Com模块获取应用层的信号(Signal),经一定处理封装为IPDU(Interaction Layer Protocol Data Unit)发送到PduR模块;

②PduR根据路由协议中所指定的I-PDU目标接收模块,将接收到的

I-PDU经一定处理后发送给CanIf;

③CanIf将信号以L-PDU(Data Link Layer Protocol Data Unit)的形式发送给CAN驱动模块。

最终,实现了基于CAN总线的基本数据发送;反之亦然。

 

从上到下的发送逻辑为:  SWCAppSender->RTE->COM->Pdur->Canif->CanDrv

从下到上的接收逻辑为: CanDrv->Canif->Pdur->COM->RTE->SWCAppSender

优势:通过分层,每层可以根据自己的配置实现消息的打包拆包

劣势: 增加了API的调用开销,所以需要更多的API调用了

二、模块详解:

AUTOSAR通信栈方法论

COM模块: 从应用层传下来数据首先进入这里,这些收发的数据是由用户的DBC文件或者ARXML文件已经定义好了的(这些文件一般OEM整车厂在整车设计的时候就做出来了,里面有总线的网络拓扑图,每个传输的数据应该走什么总线都有定义,所以应用层是无需关心的,只需要优雅的将数据和COM交换即可)。COM上传的数据里面没有这个数据是什么总线上传的这样无意义的信息,应用层关心的是这个数据的实际意义和数据大小。所以COM主要就起了一个信号接口和网关的作用

PDU Router模块: PDU——Protocol Data Unit,协议数据单元。这个模块的功能就是将COM下发的信号数据分配到相应的协议总线上去;或者将不同的协议变成同一信号上传给COM。

IPDU Mux: 用于解析一些特殊的协议,比如CAN FD或者用户自定义的一些协议。就是起了一个统一CAN ID,不同信号Layout的作用

CAN Tp: 分包数据传输与错误检测,一般来说只有在诊断的时候才会使用

CAN Interface(Canif):

这个Interface主要可以配置收发队列;组帧(FlexRay);管理时间触发总线的调度表(LIN, FlexRay)

CAN接口层(CanIf)是访问CAN总线的标准接口。CanIf抽象了CAN控制器的位置信息,并向上提供了一个与平台无关的接口,即上层不用关心CAN控制器是微控制器的片上设备还是片外设备。

CanIf模块主要功能:完成对CanIf和控制器中全局变量及配置缓冲区的初始化;发送请求服务,提供供上层应用在CAN网络上发送PDU的接口;发送确认服务,发送成功后通知上层,或者发送取消确认后存于发送缓存;接收指示服务,成功接收PDU后通知上层。

CAN Driver: 就是MCAL中对主芯片上CAN模块的驱动封装

Trcv Driver: Trcv——Transceiver的缩写,就是收发器驱动的意思。如果是外置CAN收发器,这里就要用到Trcv Driver这个驱动,而非CAN Driver。

三、传输流程

AUTOSAR通信栈方法论

发送过程:

1. 应用层Send一个数据进COM

2. COM写信号进PDU Buffer中

3. PDU被PDU Router立刻发送或按周期发送(每个PDU都有一个独立的ID),之后PDU Router辨认总线种类,并把PDU发向不同的下级模块

4. CAN Interface(Canif)根据不同的通道,把报文写入不同的队列

5. Driver根据报文的优先级立刻发送报文

中断或者循环接收(这里假设为中断):

1. 硬件接收报文

2. 由Driver发出Rx中断(函数),之后通过RxIndication,数据被传递到CAN Interface(Canif)

3. 传递到PDU Router

4. 传递到COM(如果SWCs使用Data ReceptionTrigger,就通知RTE;否则暂存到Buffer中)

5. 信号被RTE读取,然后应用层读取

本文章来源于互联网,如有侵权,请联系删除!

相关推荐: IoT物联网平台通信MQTT之Topic定义方式

1.前言 IoT物联网平台大部分基于MQTT协议的Pub/Sub通信,那么topic和payload设计就很重要。 我们可以定义出不同topic来处理不同业务场景,类似web开发中的API设计。 2.自定义Topic类 2.1 默认自定义Topic 当我们创建…