前言
CanNm模塊配置完成后,基本不需要和其他非標準AUTOSAR模塊進行交互,但是User Data的使用可以通過SWC-->RTE-->COM方式使用,也可以通過CDD直接Set/Get User Data的方式使用,在實際配置的時候還是遇到了幾個困惑的問題:
(1)CanNm的User Data可以通過CDD和COM模塊同時使用嗎?
(2)CanNmUserDataTxPdu配置容器里面的CanNmTxUserDataPduRef配置參數(shù)引用的PDU和CanNmTxPdu配置容器里面的CanNmTxPduRef配置參數(shù)引用的PDU是同一個PDU嗎?
(3)DBC文件包含NM Rx PDU和NM Tx PDU時導入AUTOSAR配置工具后會在EcuC模塊自動生成全局NM Rx和NM Tx的PDU(Global PDU)應用參數(shù),但是不會生成CanNmTxUserDataPduRef引用的配置參數(shù),也不會生成Com2CanNm的路由表信息,這些該怎么配置?
(4)CanNm User Data數(shù)據(jù)在SWC-->Rte-->Com-->PduR-->CanNm模塊間是怎樣完成數(shù)據(jù)交互的?
本文就先介紹CanNM User Data的概念及配置,然后來回答這些問題。
正文
1.CanNm user data概念
CanNm發(fā)送(Nm Tx)幀是8字節(jié)數(shù)據(jù)幀,標準AUTOSAR CAN網(wǎng)絡管理發(fā)送幀只使用了Byte 0和Byte 1,Byte 0-Byte 7用戶可以根據(jù)需求自定義使用。
Note: 一般用CanNm發(fā)送報文的Byte0-Byte7存儲和網(wǎng)絡管理相關的喚醒源信息(IGn,四門兩蓋等本地喚醒信號)。
AUTSOSAR規(guī)范兩種訪問CanNm User Data方式:
(1)CDD直接訪問。CDD使用標準接口CanNm_SetUserData和CanNm_GetUserData來設置和獲取CanNm中User Data數(shù)據(jù)。
(2)SWC->RTE->COM訪問。Com模塊中配置發(fā)送CanNm User Data的ComIpdu,IPDU中包含用戶自定義的Signal,SWC和Com Signal之間進行Pport-Rport連接產(chǎn)生RTE數(shù)據(jù)讀寫接口,SWC通過RTE接口Write Signal,Com模塊將Signal組包到CanNm User Data所在的IPDU。PDUR模塊的路由表中有Com to CanNm的路由表信息,CanNm_MainFunction會在準備發(fā)送CanNm Tx報文的時候調(diào)用PduR_CanNmTriggerTransmit-->Com_TriggerTransmit以Trigger方式從Com模塊獲取到CanNm User Data,然后填充到CanNm Tx報文的byte 0-->Byte 7完成user data的獲取與發(fā)送。
2.CanNm user data配置
2.1CDD方式訪問CanNm user data
CanNmGlobalConfig配置容器里的CanNmComUserDataSupport配置參數(shù)需要配置為False,CanNmUserDataEnabled配置參數(shù)需要配置為True,不能配置CanNmUserDataTxPdu這個配置容器。
NmGlobalConfig配置容器里的NmComUserDataSupport配置參數(shù)需要配置為False,NmUserDataEnable配置參數(shù)配置為True。
2.2 ASW方式訪問CanNm user data
基礎知識:數(shù)據(jù)在CAN通信協(xié)議棧各層間都是以PDU(Protocol Data Unit)形式傳輸?shù)?,為了將各層PDU關聯(lián)起來,則需要定義全局PDU(Global PDU)。由于全局PDU不屬于任何一個標準BSW模塊,所以AUTOSAR提出了一個EcuC模塊來收集一些配置信息。
對于一個發(fā)送PDU_xxx,路由信息如果是從Com-->PDUR->CanIf的話,在我們導入DBC文件到AUTOSAR配置工具(ISOLAR或Davinci)的時候,配置工具會自動在EcuC產(chǎn)生PDU_xxx_Com2PduR和PDU_xxx_PduR2CanIf的全局PDU引用信息,然后同時產(chǎn)生以下配置信息:
1)在Com模塊的ComIPdus配置容器中的具體PDU_xxx這個ComIpdu會引用PDU_xxx_Com2PduR。
2)在PduR模塊的路由容器PduRRoutingPaths中會產(chǎn)生一個Dest引用PDU_xxx_PduR2CanIf且Src引用PDU_xxx_Com2PduR的路由信息。
3)在CanIf模塊的CanIfTxPduCfg發(fā)報文配置容器中PDU_xxx會引用PDU_xxx_PduR2CanIf。
這樣就自動完成發(fā)送源(Src)Com經(jīng)過PduR(路由信息,Src to Dest)路由到CanIf(Dest)的報文配置過程。
然后回到今天這個主題的關鍵問題:對于CanNm Rx PDU和Tx PDU因為沒有經(jīng)過PDUR路由的需求,而是CanNm<-->CanIf經(jīng)過CanIf收發(fā)CanNm報文,這樣在EcuC模塊只會存在一個xxx_NM_CanNm2CanIf和一個CanIf2CanNm全局PDU的引用信息。但是我們要是使用COM模塊來訪問CanNm的User Data時必須要要使用PduR進行路由,且在配置CanNmUserDataTxPdu容器時的CanNmTxUserDataPduRef配置參數(shù)必須引用一個來自PduR2CanNm的PDU引用,該怎么配置?
所以:需要我們手動配置EcuC,Com,PduR,CanNm,NM模塊來實現(xiàn)CanNm User Data從Com到CanNm的路由,然后SWC和COM經(jīng)過Signal mapping通過RTE完成數(shù)據(jù)的交互就完成了整個配置過程。
1)第一步我們需要手動在EcuC添加兩條關于NM發(fā)送報文的PDU的全局引用NM_xxx_Com2PduR,NM_xxx_PduR2CanNm。
2)在在Com模塊配置一個ComIpu配置容器并引用EcuC中的NM_xxx_Com2PduR
3)在PduR模塊配置一條從Com到CanNm的路由信息,PduRSrcPdu容器引用NM_xxx_Com2PduR,PduRDestPdu容易引用NM_xxx_PduR2CanNm
4)在CanNm模塊的CanNmUserDataTxPdu容器中CanNmTxUserDataPduRef參數(shù)引用NM_xxx_PduR2CanNm
5)配置CanNm,NM模塊支持Com user data support
CanNmGlobalConfig配置容器里的CanNmComUserDataSupport配置參數(shù)需要配置為True,CanNmUserDataEnabled配置參數(shù)需要配置為True。
NmGlobalConfig配置容器里的NmComUserDataSupport配置參數(shù)需要配置為True,NmUserDataEnable配置參數(shù)配置為True。
這樣就完成了Com通過PduR完成對CanNm中user data的數(shù)據(jù)訪問。
Note: 在手動配置ComIpdu和CanNM模塊的時候還會有一些子模塊需要添加,這些在具體操作的時候根據(jù)報錯提示加上即可。
3.問題回答
問題1:CanNm的User Data可以通過CDD和COM模塊同時使用嗎?
答:不能。配置了CanNmComUserDataSupport后就不能使用CanNm_SetUserData了,也就是說CDD不能再訪問CanNm的user data了。
問題2:CanNmUserDataTxPdu配置容器里面的CanNmTxUserDataPduRef配置參數(shù)引用的IPUD和CanNmTxPdu配置容器里面的CanNmTxPduRef配置參數(shù)引用的PDU是同一個PDU?
答:不是同一個EcuC模塊中的PDU全局引用,EcuC模塊只會自動創(chuàng)建NM_xxx_CanNm2CanIf和NM_xxx_CanIf2CanNm的全局PDU引用,NM_xxx_Com2PduR和NM_xxx_PduR2CanNm的PDU全局引用需要手動創(chuàng)建。CanNmUserDataTxPdu配置容器里面的CanNmTxUserDataPduRef配置參數(shù)引用的是NM_xxx_PduR2CanNm,CanNmTxPdu配置容器里面的CanNmTxPduRef配置參數(shù)引用的是NM_xxx_CanNm2CanIf。
問題3:CCan.DBC文件包含NM Rx PDU和NM Tx PDU時導入AUTOSAR配置工具后會在EcuC模塊自動生成義全局NM_Rx和NM_Tx的PDU(Global PDU)應用參數(shù),但是不會生成CanNmTxUserDataPduRef應用的配置參數(shù),已經(jīng)不會生成ComToCanNm的路由表信息,這些該怎么配置?
答:通過手動配置EcuC,Com,PduR,CanNm,NM模塊實現(xiàn)。詳見2.2 ASW方式訪問CanNm user data。
問題4:CanNm User Data數(shù)據(jù)在SWC-->Rte-->Com-->PduR-->CanNm模塊將是怎樣完成數(shù)據(jù)交互的?
答:Com中包含發(fā)送CanNm User Data的IPDU,IPDU中包含用戶自定義的Signal,ASW和Com Signal之間進行Pport-Rport連接產(chǎn)生RTE數(shù)據(jù)讀寫接口,ASW通過RTE接口Write Signal,Com模塊將aSignal組包到CanNm User Data所在的IPDU。PDUR模塊的路由表中有Com to CanNm的路由表信息,CanNm_MainFunction會在準備發(fā)送CanNm Tx報文的時候調(diào)用PduR_CanNmTriggerTransmit-->Com_TriggerTransmit以Trigger方式從Com模塊獲取到CanNm User Data,然后填充到CanNm Tx報文的byte 0-->Byte 7完成user data的獲取與發(fā)送。
審核編輯:郭婷
-
接口
+關注
關注
33文章
8459瀏覽量
150748 -
PDU
+關注
關注
0文章
93瀏覽量
16952
原文標題:AUTOSAR架構下CanNm User Data詳解
文章出處:【微信號:汽車電子嵌入式,微信公眾號:汽車電子嵌入式】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論