Autosar通信协议栈-AutoSAR通信模块的架构AutosarComStack001
扫描二维码
随时随地手机看文章
1 Autosar通信协议栈的概述
-说到通信,我们第一想到通信的对等实体(communication peer),即发送方和接收方,这些可以看成UML中用例图的Actor;-第二想到的使用通信的use case,即消息的发送和消息的接收;
-第三个想到的就是通信的消息(messages);这里的消息在AutoSAR通信架构中流经了下列模块,从上至下(发送逻辑)为:SwcAppSender->Rte->Com->PduR->CanIf->CanDrv;从下至上(接收逻辑:CanDrv>CanIf->PduR->Com->Rte->SwcAppReceiver;优点不言而喻就是分层:通过分层,每层可以根据自己的配置信息实现消息的打包和拆包,用户层的业务逻辑不依赖底层总线的硬件特性;缺点就是增加了各层的API调用开销。
上面三个概念可以通过下图去理解。
-掌握了上面的概念;我们对Autosar通信协议栈有了一个大概的了解;接下来就是理解各个层的具体功能及在Autosar通信协议栈的配置实现;在这个过程中我们首先要理解下面几个概念。
我们可以通过下面的图有一个整体的认识:
1)Signal
看一下官方的定义:CP AUTOSAR implements signal based communication. A signal is the smallest amount of information that a CAN message can have. A signal can be of any size from 1- bit to all 64 bits of CAN message (considering the CAN message is 8-Bytes), in other words the CAN message is divided in bits called signals.例如ECU想知道当前车门的状态(开或关);我们可以用1bit Autosar signal来indicate这个状态。然后我们需要把Autosar signal映射到a signal in AutoSAR COM,实现获取外部ECU门的状态;
2)SignalGroup
结构体数据类型的变量包含了多个原始的数据元素;为了保证这些数据元素的一致性,在结构体数据类型要映射到signal group,确保这些数据作为原子单元被传递到总线或从总线接收
3)Pdu=Sdu PCI
参见图5的 Pdu的封装和组成可知,Pdu作为协议数据单元,由SDU(SDU is the data which needs to be transmitted,由singal组装而成)和PCI(PCI contains the information which indicates the next destination of the SDU)组成,Autosar通信的各层中每个PDU都由一个特定唯一的PduId标识;在Pdu发送时;上层将PDU发送到下层,下层将它当作当前层的SDU进行处理;注意I-Pdu的长度一般不超过8字节,如果,超过8字节,则使用Cantp进行拆包和组包。
注意每个层的Pdu都有特定的前缀;如Ipdu(在Com/Dcm与PduR之间;在Cantp/CanIf与PduR之间);Npdu(在Cantp与CanIf之间);Lpdu(在CanIf与CanDrv之间,由CanID Dlc L_SDU组成)
4)IPduGroup
IPduGroup是Com中I-PDU的集合;一般按照功能进行划分组,根据需求调用Com提供的IPdu组API来打开和关闭IPdu组
5)Hareware Object
Hardware Object is a space in CAN controller RAM where the PDU is put,上层一般通过定义HTH和HRH进行引用Hareware Object点击文末“阅读原文”,即可直接订阅专栏,解锁全部系列~