Autosar通信協(xié)議棧-AutoSAR通信模塊的架構(gòu)AutosarComStack001
1 Autosar通信協(xié)議棧的概述
-說到通信,我們第一想到通信的對(duì)等實(shí)體(communication peer),即發(fā)送方和接收方,這些可以看成UML中用例圖的Actor;-第二想到的使用通信的use case,即消息的發(fā)送和消息的接收;
-第三個(gè)想到的就是通信的消息(messages);這里的消息在AutoSAR通信架構(gòu)中流經(jīng)了下列模塊,從上至下(發(fā)送邏輯)為:SwcAppSender->Rte->Com->PduR->CanIf->CanDrv;從下至上(接收邏輯:CanDrv>CanIf->PduR->Com->Rte->SwcAppReceiver;優(yōu)點(diǎn)不言而喻就是分層:通過分層,每層可以根據(jù)自己的配置信息實(shí)現(xiàn)消息的打包和拆包,用戶層的業(yè)務(wù)邏輯不依賴底層總線的硬件特性;缺點(diǎn)就是增加了各層的API調(diào)用開銷。
上面三個(gè)概念可以通過下圖去理解。
-掌握了上面的概念;我們對(duì)Autosar通信協(xié)議棧有了一個(gè)大概的了解;接下來就是理解各個(gè)層的具體功能及在Autosar通信協(xié)議棧的配置實(shí)現(xiàn);在這個(gè)過程中我們首先要理解下面幾個(gè)概念。
我們可以通過下面的圖有一個(gè)整體的認(rèn)識(shí):
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想知道當(dāng)前車門的狀態(tài)(開或關(guān));我們可以用1bit Autosar signal來indicate這個(gè)狀態(tài)。然后我們需要把Autosar signal映射到a signal in AutoSAR COM,實(shí)現(xiàn)獲取外部ECU門的狀態(tài);
2)SignalGroup
結(jié)構(gòu)體數(shù)據(jù)類型的變量包含了多個(gè)原始的數(shù)據(jù)元素;為了保證這些數(shù)據(jù)元素的一致性,在結(jié)構(gòu)體數(shù)據(jù)類型要映射到signal group,確保這些數(shù)據(jù)作為原子單元被傳遞到總線或從總線接收
3)Pdu=Sdu PCI
參見圖5的 Pdu的封裝和組成可知,Pdu作為協(xié)議數(shù)據(jù)單元,由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通信的各層中每個(gè)PDU都由一個(gè)特定唯一的PduId標(biāo)識(shí);在Pdu發(fā)送時(shí);上層將PDU發(fā)送到下層,下層將它當(dāng)作當(dāng)前層的SDU進(jìn)行處理;注意I-Pdu的長度一般不超過8字節(jié),如果,超過8字節(jié),則使用Cantp進(jìn)行拆包和組包。
注意每個(gè)層的Pdu都有特定的前綴;如Ipdu(在Com/Dcm與PduR之間;在Cantp/CanIf與PduR之間);Npdu(在Cantp與CanIf之間);Lpdu(在CanIf與CanDrv之間,由CanID Dlc L_SDU組成)
4)IPduGroup
IPduGroup是Com中I-PDU的集合;一般按照功能進(jìn)行劃分組,根據(jù)需求調(diào)用Com提供的IPdu組API來打開和關(guān)閉IPdu組
5)Hareware Object
Hardware Object is a space in CAN controller RAM where the PDU is put,上層一般通過定義HTH和HRH進(jìn)行引用Hareware Object點(diǎn)擊文末“閱讀原文”,即可直接訂閱專欄,解鎖全部系列~