在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

從手寫代碼到AUTOSAR工具鏈:J1939Tp應(yīng)用篇

ETAS易特馳 ? 來源:汽車電子與軟件 ? 2025-07-10 16:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

以下內(nèi)容來源于《汽車電子與軟件》

一、引 言

J1939Tp是我學(xué)習(xí)AUTOSAR CP諸多BSW模塊的起點(diǎn),其分層架構(gòu)完美體現(xiàn)了AUTOSAR規(guī)范的精髓,掌握J(rèn)1939Tp有助于深入理解通信(COM)相關(guān)模塊的程序執(zhí)行過程。

本文依舊從傳統(tǒng)的手工編程入手,講述J1939Tp工具鏈編程的操作步驟,對(duì)模塊的內(nèi)部機(jī)理僅做簡單介紹,感興趣的讀者可參考相應(yīng)AUTOSAR規(guī)范。

二、J1939Tp模塊介紹

美國汽車工程師協(xié)會(huì)(SAE)制定的主要針對(duì)商用車的CAN總線通訊協(xié)議,其基于CAN 2.0B協(xié)議。

表2-1列出了J1939協(xié)議的主要內(nèi)容和對(duì)應(yīng)文檔。

表2-1: J1939內(nèi)容和參考資料匯總

4317cea4-5bd5-11f0-baa5-92fbcf53809c.png

表中的“SAE J1939-21”描述了數(shù)據(jù)鏈路和傳輸層,包括2種傳輸協(xié)議類型:BAM用于廣播消息,CMDT用于點(diǎn)對(duì)點(diǎn)連接。

J1939Tp為“SAE J1939-21”在AUTOSAR架構(gòu)中的實(shí)現(xiàn),主要完成下列功能。

(1)直接或分段發(fā)送數(shù)據(jù)

(2)直接或重組接收數(shù)據(jù)

(3)數(shù)據(jù)流控制

(4)超時(shí)管理

(5)分段和組包過程中的錯(cuò)誤檢測(cè)

2.1 數(shù)據(jù)鏈路層

數(shù)據(jù)鏈路層為物理連接之間提供可靠的數(shù)據(jù)傳輸,包括發(fā)送CAN數(shù)據(jù)幀所必須的同步、順序控制、出錯(cuò)控制和流控制。本節(jié)主要介紹數(shù)據(jù)分段收發(fā)過程。

傳輸多于8字節(jié)的數(shù)據(jù)須采用多幀傳輸機(jī)制,即采用多包報(bào)文,在連接管理報(bào)文的協(xié)調(diào)下進(jìn)行多幀傳輸。

長度大于8字節(jié)的報(bào)文無法用單個(gè)CAN數(shù)據(jù)幀來裝載。因此,它們必須被拆分為若干個(gè)小的數(shù)據(jù)包,然后使用單個(gè)的數(shù)據(jù)幀對(duì)其逐一傳送。而接收方必須能夠接收這些單個(gè)的數(shù)據(jù)幀,然后解析各個(gè)數(shù)據(jù)包并重組成原始的信息。

CAN數(shù)據(jù)幀包含一個(gè)8字節(jié)的數(shù)據(jù)域。由于組成長信息的單個(gè)數(shù)據(jù)包必須能被識(shí)別出來以便正確重組,因此把數(shù)據(jù)域的首字節(jié)定義為數(shù)據(jù)包的序列編號(hào)。每個(gè)數(shù)據(jù)包都會(huì)被分配到一個(gè)從1到255的序列編號(hào)。由此可知,多幀傳輸最大的數(shù)據(jù)長度是(255包×7字節(jié)/包=)1785字節(jié)(雖然協(xié)議理論上支持1785 字節(jié),但大多數(shù) ECU 實(shí)際不會(huì)發(fā)送如此大長度,可能因內(nèi)存或總線負(fù)載需限制更小最大長度)。

序列編號(hào)是在數(shù)據(jù)拆裝時(shí)分配給每個(gè)數(shù)據(jù)包,然后通過網(wǎng)絡(luò)傳送給接收方。接收方接收后,利用這些編號(hào)把數(shù)據(jù)包重組成原始信息。

序列編號(hào)從1開始,依次分配給每個(gè)數(shù)據(jù)包,直到整個(gè)數(shù)據(jù)都被拆裝和傳送完畢。這些數(shù)據(jù)包從編號(hào)為1的數(shù)據(jù)包開始按編號(hào)的遞增順序發(fā)送。

第一個(gè)數(shù)據(jù)傳送包包含序列編號(hào)1 和字符串的頭7個(gè)字節(jié),其后的7個(gè)字節(jié)跟隨序列編號(hào)2存放在另一個(gè)CAN數(shù)據(jù)幀中,再隨后的7個(gè)字節(jié)與編號(hào)3一起,直到原始信息中所有的字節(jié)都被存放到CAN數(shù)據(jù)幀中并被傳送。

傳送的每個(gè)數(shù)據(jù)包(除了傳送隊(duì)列中的最后一個(gè)數(shù)據(jù)包)都裝載著原始數(shù)據(jù)中的7個(gè)字節(jié)。而最后一個(gè)數(shù)據(jù)包的數(shù)據(jù)域的8個(gè)字節(jié)包含:數(shù)據(jù)包的序列編號(hào)和參數(shù)組至少一個(gè)字節(jié)的數(shù)據(jù),余下未使用的字節(jié)全部設(shè)置為“0xFF”。

數(shù)據(jù)包被順序接收。按照序列編號(hào)的順序把多包消息的數(shù)據(jù)包重新組合成一多字節(jié)字符串。這個(gè)字符串被作為長信息的應(yīng)答傳送給應(yīng)用程序模塊。

2.2 協(xié)議數(shù)據(jù)單元

協(xié)議數(shù)據(jù)單元由七部分組成,分別是優(yōu)先級(jí)、保留位、數(shù)據(jù)頁、PDU格式、PDU特定域(可作為目標(biāo)地址、組擴(kuò)展或?qū)S茫⒃吹刂泛蛿?shù)據(jù)域。PDU被封裝在一個(gè)或多個(gè)CAN數(shù)據(jù)幀中,通過物理介質(zhì)傳送到其他網(wǎng)絡(luò)設(shè)備。每個(gè)CAN數(shù)據(jù)幀只能有一個(gè)PDU。

432707ca-5bd5-11f0-baa5-92fbcf53809c.png

其中,優(yōu)先權(quán)、擴(kuò)展數(shù)據(jù)頁、數(shù)據(jù)頁、PDU格式、PDU特定域和源地址構(gòu)成29位標(biāo)志符;擴(kuò)展數(shù)據(jù)頁、數(shù)據(jù)頁、PDU格式和PDU特定域構(gòu)成參數(shù)組編號(hào)PGN;整體構(gòu)成協(xié)議數(shù)據(jù)單元PDU。

2.2.1 請(qǐng)求PGN報(bào)文

定義:用于從一個(gè)或多個(gè)網(wǎng)絡(luò)設(shè)備請(qǐng)求參數(shù)組

傳輸速率:用戶子定義,推薦每秒請(qǐng)求不多于2或3次

數(shù)據(jù)長度:3字節(jié)

數(shù)據(jù)頁:0

PDU格式:0xEA

PDU特定域:目標(biāo)地址(全局或特定)

缺省優(yōu)先級(jí):0x06

參數(shù)組編號(hào):0xEA00

參數(shù)定義:

0-2字節(jié):被請(qǐng)求的參數(shù)組編號(hào)

對(duì)于特定目標(biāo)地址的請(qǐng)求,目標(biāo)地址必須做出響應(yīng)。如果目標(biāo)地址不支持請(qǐng)求的PGN,也必須發(fā)出一個(gè)NACK的響應(yīng)以表明它不支持該P(yáng)GN。有些PGN是多包的,因此一個(gè)單幀請(qǐng)求的響應(yīng)可能有多個(gè)CAN數(shù)據(jù)幀。如果是全局請(qǐng)求,當(dāng)一個(gè)節(jié)點(diǎn)不支持某個(gè)PGN時(shí),不能發(fā)出NACK響應(yīng)。

2.2.2 確認(rèn)報(bào)文

定義:用來提供發(fā)送方與接收方之間的握手機(jī)

傳輸速率:收到需要此類型的確認(rèn)的PGN時(shí)

數(shù)據(jù)長度:8字節(jié)

數(shù)據(jù)頁:0

PDU格式:0xE8

PDU特定域:目標(biāo)地址 = 全局(0xFF)

缺省優(yōu)先級(jí):0x06

參數(shù)組編號(hào):0xE800

參數(shù)定義:

0字節(jié):控制字節(jié)。0表示肯定確認(rèn)(ACK);1表示否定確認(rèn)(NACK);2表示拒絕訪問;3表示無法響應(yīng)

1字節(jié):組功能值(若適用)

2-4字節(jié):0xFF

5-7字節(jié):被請(qǐng)求報(bào)文的參數(shù)組編號(hào)

2.2.3 連接管理報(bào)文(TP.CM)

定義:用于9字節(jié)及以上數(shù)據(jù)參數(shù)組的傳輸

傳輸速度:由傳送的參數(shù)組編號(hào)決定

數(shù)據(jù)長度:8字節(jié)

數(shù)據(jù)頁:0

PDU格式:0xEC

PDU特定域:目標(biāo)地址

缺省優(yōu)先級(jí):0x07

參數(shù)組編號(hào):0xEC00

參數(shù)定義:第0字節(jié)為控制字,其它字節(jié)的定義依賴于第0字節(jié)控制字的值

(1)連接模式下的請(qǐng)求發(fā)送(TP.CM_RTS):指定目標(biāo)地址

0字節(jié):0x10,指定目標(biāo)地址的請(qǐng)求發(fā)送(RTS)

1-2字節(jié):整個(gè)報(bào)文大小的字節(jié)數(shù)

3字節(jié):全部數(shù)據(jù)包數(shù)

4字節(jié):每次CTS 中允許發(fā)送的最大幀數(shù)(Packets per block)

5-7字節(jié):PGN(Parameter Group Number)

打包報(bào)文的參數(shù)組編號(hào)

(2)連接模式下的準(zhǔn)許發(fā)送(TP.CM_CTS):指定目標(biāo)地址

0字節(jié):0x11,指定目標(biāo)地址的準(zhǔn)許發(fā)送(CTS)

1字節(jié):可發(fā)送的數(shù)據(jù)包數(shù)

2字節(jié):下一個(gè)要發(fā)送的數(shù)據(jù)包編號(hào)

3-4字節(jié):保留 (通常 0xFF)

5-7字節(jié):PGN打包報(bào)文的參數(shù)組編號(hào)

(3)報(bào)文結(jié)束應(yīng)答

(TP.CM_EndofMsgAck):指定目標(biāo)地址

0字節(jié):0x13,報(bào)文結(jié)束應(yīng)答

1-2字節(jié):整個(gè)報(bào)文的字節(jié)數(shù)

3字節(jié):全部數(shù)據(jù)包個(gè)數(shù)

4字節(jié):0xFF

5-7字節(jié):打包報(bào)文的參數(shù)組編號(hào)

(4)放棄連接(TP.CM_Abort):指定目標(biāo)地址

0字節(jié):0xFF,放棄連接

1-4字節(jié):0xFF

5-7字節(jié):打包報(bào)文的參數(shù)組編號(hào)

(5)廣播公告報(bào)文(TP.CM_BAM):全局目標(biāo)地址

0字節(jié):0x20,廣播公告報(bào)文(BAM)

1-2字節(jié):整個(gè)報(bào)文的字節(jié)數(shù)

3字節(jié):全部數(shù)據(jù)包數(shù)

4字節(jié):0xFF

5-7字節(jié):打包報(bào)文的參數(shù)組編號(hào)

2.2.4 數(shù)據(jù)發(fā)送報(bào)文

定義:用于9字節(jié)及以上數(shù)據(jù)參數(shù)組的傳輸

傳輸速度:由傳送的參數(shù)組編號(hào)決定

數(shù)據(jù)長度:8字節(jié)

數(shù)據(jù)頁:0

PDU格式:0xEB

PDU特定域:目標(biāo)地址

缺省優(yōu)先級(jí):0x07

參數(shù)組編號(hào):0xEB00

參數(shù)定義:

0字節(jié):數(shù)據(jù)包編號(hào)

1-7字節(jié):報(bào)文數(shù)據(jù)

三、手寫代碼實(shí)現(xiàn)方法

下面簡要介紹J1939數(shù)據(jù)鏈路層手工編程的實(shí)現(xiàn)要點(diǎn)。

3.1 多幀傳輸機(jī)制—接收

接收多于8字節(jié)的數(shù)據(jù)流有單播(特定目標(biāo)地址)和廣播(全局目標(biāo)地址)兩種情況,下面分別進(jìn)行說明。

3.1.1 單播方式

單播方式接收多于8字節(jié)的數(shù)據(jù)流按照下列步驟進(jìn)行。

(1)接收發(fā)送方的“連接模式下的請(qǐng)求發(fā)送(TP.CM_RTS):指定目標(biāo)地址”報(bào)文

收到這類報(bào)文后,首先檢查其是否同時(shí)滿足下面兩個(gè)條件,若滿足繼續(xù)下面的操作。

·參數(shù)組編號(hào)為0xD700或符合本地指定CA的要求(參數(shù)組編號(hào)、發(fā)送CA的地址或名字)

·接收到的“整個(gè)報(bào)文的字節(jié)數(shù)”和“全部數(shù)據(jù)包數(shù)”匹配

該檢查通過后,獲取CAN接收控制節(jié)點(diǎn)并對(duì)其初始化,再將該節(jié)點(diǎn)設(shè)置為“分段接收起始狀態(tài)”。

若在上述過程中出現(xiàn)了任何異常,發(fā)送“放棄連接(TP.CM_Abort):指定目標(biāo)地址”報(bào)文。

(2)回發(fā)“連接模式下的準(zhǔn)許發(fā)送(TP.CM_CTS):指定目標(biāo)地址”報(bào)文

在接收并處理RTS報(bào)文之后進(jìn)行,要求對(duì)方一次性將數(shù)據(jù)發(fā)完。報(bào)文發(fā)送成功后將對(duì)應(yīng)CAN接收控制節(jié)點(diǎn)設(shè)置為“連續(xù)接收”狀態(tài)。

(3)接收并整合數(shù)據(jù)

連續(xù)接收PGN為0xEB00的包并將有效數(shù)據(jù)依次存放到相應(yīng)CAN接收控制節(jié)點(diǎn)中,待報(bào)文中的所有數(shù)據(jù)接收完畢后,發(fā)送“報(bào)文結(jié)束應(yīng)答(TP.CM_EndofMsgAck):指定目標(biāo)地址”并將對(duì)應(yīng)CAN接收控制節(jié)點(diǎn)設(shè)置為“接收終止”狀態(tài)。

數(shù)據(jù)接收過程中須滿足以下幾個(gè)要求,否則將發(fā)送“放棄連接(TP.CM_Abort):指定目標(biāo)地址”報(bào)文并將對(duì)應(yīng)CAN接收控制節(jié)點(diǎn)設(shè)置為“接收終止”狀態(tài)。

·數(shù)據(jù)包編號(hào)正確

·收到相鄰兩個(gè)數(shù)據(jù)包的時(shí)間間隔小于750ms

·發(fā)送CTS消息到收到第1個(gè)數(shù)據(jù)包的時(shí)間間隔小于1250ms

(4)處理接收到的報(bào)文

根據(jù)接收?qǐng)?bào)文的參數(shù)組編號(hào)對(duì)其做出相應(yīng)處理并將對(duì)應(yīng)CAN接收控制節(jié)點(diǎn)還原。

3.1.2 廣播方式

廣播方式接收多于8字節(jié)的數(shù)據(jù)流按照下列步驟進(jìn)行。

(1)接收發(fā)送方的“廣播公告報(bào)文(TP.CM_BAM):全局目標(biāo)地址”

收到這類報(bào)文后,首先檢查其是否同時(shí)滿足下面三個(gè)條件,若滿足繼續(xù)下面的操作。

·參數(shù)組編號(hào)為0xFED8或符合本地任何一個(gè)CA的要求(參數(shù)組編號(hào)、發(fā)送CA的地址或名字)

·目標(biāo)地址為0xFF且源地址與接收?qǐng)?bào)文匹配的CAN接收控制節(jié)點(diǎn)不存在

·接收到的“整個(gè)報(bào)文的字節(jié)數(shù)”和“全部數(shù)據(jù)包數(shù)”匹配

該檢查通過后,獲取CAN接收控制節(jié)點(diǎn)并對(duì)其初始化,再將該節(jié)點(diǎn)設(shè)置為“連續(xù)接收”狀態(tài)。

(2)接收并整合數(shù)據(jù)

連續(xù)接收PGN為0xEB00的包并將有效數(shù)據(jù)依次存放到相應(yīng)CAN接收控制節(jié)點(diǎn)中,待報(bào)文中的所有數(shù)據(jù)接收完畢后,將對(duì)應(yīng)CAN接收控制節(jié)點(diǎn)設(shè)置為“接收終止”狀態(tài)。

數(shù)據(jù)接收過程中須滿足以下幾個(gè)要求,否則將對(duì)應(yīng)CAN接收控制節(jié)點(diǎn)設(shè)置為“接收終止”狀態(tài)。

·數(shù)據(jù)包編號(hào)正確

·收到相鄰兩幀數(shù)據(jù)的時(shí)間間隔小于750ms

(3)處理接收到的報(bào)文

根據(jù)接收?qǐng)?bào)文的參數(shù)組編號(hào)對(duì)其做出相應(yīng)處理并將對(duì)應(yīng)CAN接收控制節(jié)點(diǎn)還原。

3.2 多幀傳輸機(jī)制-發(fā)送

發(fā)送多于8字節(jié)的數(shù)據(jù)流有單播(特定目標(biāo)地址)和廣播(全局目標(biāo)地址)兩種情況,下面分別進(jìn)行說明。

3.2.1 單播方式

單播方式發(fā)送多于8字節(jié)的數(shù)據(jù)流按照下列步驟進(jìn)行。

(1)準(zhǔn)備工作

獲取一個(gè)CAN發(fā)送控制節(jié)點(diǎn),將其初始化并設(shè)置為“初始狀態(tài)”。

(2)發(fā)送“連接模式下的請(qǐng)求發(fā)送(TP.CM_RTS):指定目標(biāo)地址”報(bào)文

該報(bào)文發(fā)送成功后將對(duì)應(yīng)CAN發(fā)送控制節(jié)點(diǎn)設(shè)置為“準(zhǔn)許發(fā)送等待狀態(tài)”。

(3)接收“連接模式下的準(zhǔn)許發(fā)送(TP.CM_CTS):指定目標(biāo)地址”報(bào)文

發(fā)送RTS后的1250ms內(nèi)必須收到此報(bào)文,否則將發(fā)送“放棄連接(TP.CM_Abort):指定目標(biāo)地址”報(bào)文并將對(duì)應(yīng)CAN發(fā)送控制節(jié)點(diǎn)設(shè)置為“發(fā)送終止”狀態(tài)。

這里稱“可發(fā)送的數(shù)據(jù)包數(shù)”為0的CTS為“保持連接報(bào)文”,接收到此類報(bào)文后的1050ms內(nèi)必須再次收到CTS,否則也將發(fā)送Abort報(bào)文并將對(duì)應(yīng)CAN發(fā)送控制節(jié)點(diǎn)設(shè)置為“發(fā)送終止”狀態(tài)。

注意:如果Abort報(bào)文發(fā)送失敗,須將對(duì)應(yīng)CAN發(fā)送控制節(jié)點(diǎn)設(shè)置為“放棄連接報(bào)文發(fā)送”狀態(tài),這樣下一個(gè)周期將再次發(fā)送Abort報(bào)文。

如果在規(guī)定的時(shí)間內(nèi)收到正確的CTS且其“可發(fā)送的數(shù)據(jù)包數(shù)”不為0,則發(fā)送第一個(gè)數(shù)據(jù)幀,同時(shí)將對(duì)應(yīng)CAN發(fā)送控制節(jié)點(diǎn)設(shè)置為“連續(xù)發(fā)送”狀態(tài)。

(4)連續(xù)發(fā)送數(shù)據(jù)

程序?qū)⒚總€(gè)發(fā)出的數(shù)據(jù)幀添加至CAN接收處理緩沖區(qū),該操作完成后才繼續(xù)發(fā)送下一個(gè)數(shù)據(jù)幀,直到本次CTS要求的數(shù)據(jù)包全部發(fā)完為止。在此過程中連續(xù)兩個(gè)數(shù)據(jù)幀的發(fā)送時(shí)間間隔不能超過750ms,否則將發(fā)送Abort報(bào)文并將對(duì)應(yīng)CAN發(fā)送控制節(jié)點(diǎn)設(shè)置為“發(fā)送終止”狀態(tài)。

在連續(xù)發(fā)送數(shù)據(jù)的過程中不允許接收到除“保持連接報(bào)文”之外的CTS(收到此類報(bào)文后應(yīng)停止數(shù)據(jù)幀的發(fā)送轉(zhuǎn)而等待下一個(gè)CTS),否則也將發(fā)送Abort報(bào)文并將對(duì)應(yīng)CAN發(fā)送控制節(jié)點(diǎn)設(shè)置為“發(fā)送終止”狀態(tài)。

本次CTS要求的數(shù)據(jù)包發(fā)送完畢后,將對(duì)應(yīng)CAN發(fā)送控制節(jié)點(diǎn)設(shè)置為“準(zhǔn)許發(fā)送等待狀態(tài)”,然后重復(fù)(3)和(4)的步驟,直到所有數(shù)據(jù)發(fā)送完成。這時(shí)將對(duì)應(yīng)CAN發(fā)送控制節(jié)點(diǎn)設(shè)置為“報(bào)文結(jié)束應(yīng)答等待狀態(tài)”。

(5)接收“報(bào)文結(jié)束應(yīng)答(TP.CM_EndofMsgAck):指定目標(biāo)地址”

發(fā)送最后一個(gè)數(shù)據(jù)幀后的1250ms內(nèi)必須收到此報(bào)文,否則將發(fā)送Abort報(bào)文并將對(duì)應(yīng)CAN發(fā)送控制節(jié)點(diǎn)設(shè)置為“發(fā)送終止”狀態(tài)。如果EndofMsgAck的“整個(gè)報(bào)文大小的字節(jié)數(shù)”和“全部數(shù)據(jù)包數(shù)”匹配,說明發(fā)送圓滿完成,此時(shí)將對(duì)應(yīng)CAN發(fā)送控制節(jié)點(diǎn)設(shè)置為“發(fā)送終止”狀態(tài)并還原該節(jié)點(diǎn)。

3.2.2 廣播方式

廣播方式發(fā)送多于8字節(jié)的數(shù)據(jù)流按照下列步驟進(jìn)行。

(1)準(zhǔn)備工作

獲取一個(gè)CAN發(fā)送控制節(jié)點(diǎn),將其初始化并設(shè)置為“初始狀態(tài)”。

(2)自發(fā)自收“廣播公告報(bào)文(TP.CM_BAM):全局目標(biāo)地址”

發(fā)送BAM并將對(duì)應(yīng)CAN發(fā)送控制節(jié)點(diǎn)設(shè)置為“廣播公告報(bào)文等待狀態(tài)”。如果在之后的750ms內(nèi)接收到自發(fā)的BAM,將節(jié)點(diǎn)設(shè)置為“連續(xù)發(fā)送”狀態(tài),并在50ms后啟動(dòng)數(shù)據(jù)幀發(fā)送;否則將節(jié)點(diǎn)設(shè)置為“發(fā)送終止”狀態(tài)。

(3)連續(xù)發(fā)送數(shù)據(jù)

每個(gè)發(fā)出的數(shù)據(jù)幀都將被接收并添加至CAN接收處理緩沖區(qū),該操作完成后延時(shí)50ms才繼續(xù)發(fā)送下一個(gè)數(shù)據(jù)幀,直到全部數(shù)據(jù)包發(fā)完為止。每個(gè)數(shù)據(jù)幀發(fā)送和接收的時(shí)間間隔不能超過750ms,在此過程中對(duì)應(yīng)CAN發(fā)送控制節(jié)點(diǎn)處于“數(shù)據(jù)報(bào)文等待狀態(tài)”。

當(dāng)所有數(shù)據(jù)包發(fā)送完成或出現(xiàn)任何異常時(shí),將對(duì)應(yīng)CAN發(fā)送控制節(jié)點(diǎn)設(shè)置為“發(fā)送終止”狀態(tài)并還原該節(jié)點(diǎn)。

3.3 請(qǐng)求PGN報(bào)文

這里主要介紹接收到“請(qǐng)求PGN”報(bào)文時(shí)的處理方式,被請(qǐng)求的參數(shù)組編號(hào)分為“0xEE00”和“其它”兩類。

3.3.1 請(qǐng)求PGN為0xEE00的參數(shù)組

收到此種報(bào)文后將對(duì)本地所有CA的狀態(tài)進(jìn)行判斷,對(duì)于已經(jīng)成功聲明過地址的CA,立即發(fā)送“地址聲明報(bào)文”;對(duì)于狀態(tài)異常的CA,在0-153ms的隨機(jī)時(shí)間后發(fā)送“不能聲明地址報(bào)文”。

3.3.2 請(qǐng)求PGN為非0xEE00的參數(shù)組

如果請(qǐng)求參數(shù)組的PGN和SA滿足本地CA的要求,發(fā)送“肯定確認(rèn)”報(bào)文;否則發(fā)送“拒絕訪問”報(bào)文(僅限于特定目標(biāo)地址)。

四、AUTOSAR工具鏈實(shí)現(xiàn)方法

下面描述J1939數(shù)據(jù)鏈路層工具鏈實(shí)現(xiàn)的基本步驟,整個(gè)過程在ETAS的ISOLAR_AB 4.0和EB公司的EB Tresos工具下完成。

4.1 模塊介紹

下面介紹J1939Tp的設(shè)計(jì)步驟和目標(biāo)。

4.1.1 設(shè)計(jì)步驟

J1939Tp設(shè)計(jì)主要在ISOLAR-AB環(huán)境下進(jìn)行。

(1)ARXML創(chuàng)建

在ISOLAR-AB中創(chuàng)建J1939Tp_EcucValues.arxml文件,再在其中創(chuàng)建如表4-1所示的AR Package。

表4-1: ARXML文件內(nèi)容

43342db0-5bd5-11f0-baa5-92fbcf53809c.png

(2)模塊配置

依次配置Can、EcuC、J1939DcmCDD、PduR、CanIf、J1939Tp模塊(如表4-2所列),圖4-1為不同模塊間的層級(jí)關(guān)系。

表 4-2: ARXML文件內(nèi)容

4346ded8-5bd5-11f0-baa5-92fbcf53809c.png4352c5cc-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-1: J1939Tp相關(guān)模塊層級(jí)關(guān)系

4.1.2 設(shè)計(jì)目標(biāo)

本文實(shí)現(xiàn)符合J1939協(xié)議的多字節(jié)發(fā)送和接收的協(xié)議棧。

(1)數(shù)據(jù)發(fā)送

發(fā)送一幀18字節(jié)的數(shù)據(jù),如圖4-2所示。

436289a8-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-2: 多字節(jié)數(shù)據(jù)發(fā)送執(zhí)行結(jié)果

(2)數(shù)據(jù)接收

實(shí)時(shí)接收一幀數(shù)據(jù)并將其存儲(chǔ)至緩沖區(qū)中,如圖4-3所示。

43762382-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-3: 多字節(jié)數(shù)據(jù)接收?qǐng)?zhí)行結(jié)果

4.2 J1939Tp模塊創(chuàng)建和通用配置

首先需要在ISOLAR-B中創(chuàng)建J1939Tp模塊及其ARXML文件,再對(duì)其進(jìn)行“通用配置”,這是后續(xù)一系列配置操作的基礎(chǔ)。

4.2.1 J1939Tp模塊創(chuàng)建

按照?qǐng)D4-4和圖4-5所示的步驟創(chuàng)建J1939Tp模塊。

4382b3d6-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-4: J1939Tp模塊創(chuàng)建啟動(dòng)

4390dd4e-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-5: J1939Tp模塊創(chuàng)建操作

下面對(duì)J1939Tp模塊創(chuàng)建過程做幾點(diǎn)說明。

(1)AR Package路徑現(xiàn)階段必須為“/ETAS_Project/...”,否則在生成“RTA-BSW”后程序工程的許多配置項(xiàng)需要手動(dòng)修改;后續(xù)新建ISOLAR-AB項(xiàng)目可嘗試將該路徑改為“/Foton_Project/...”。

(2)新建的ARXML文件存儲(chǔ)至“StaticCfg”文件夾下,圖3-2中步驟④和⑤的次序不能改變。

4.2.2 J1939Tp通用配置

按照?qǐng)D4-6所示進(jìn)入J1939Tp通用配置界面,表4-3為其配置情況。

4397d176-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-6: J1939Tp通用配置界面進(jìn)入

表 4-3: J1939Tp通用參數(shù)配置

43a85802-5bd5-11f0-baa5-92fbcf53809c.png

4.3 Can配置

Can模塊執(zhí)行硬件操作并為上層模塊提供與硬件無關(guān)的API接口。唯一一個(gè)能訪問Can模塊的上層模塊是CanIf模塊。

4.3.1 Can模塊創(chuàng)建

按照?qǐng)D4-7和圖4-8所示創(chuàng)建Can模塊,用于J1939Tp模塊相關(guān)報(bào)文的配置。

43b8baf8-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-7: Can模塊創(chuàng)建啟動(dòng)

43c91e02-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-8: Can模塊創(chuàng)建配置

這樣在ISOLAR-B中出現(xiàn)了2個(gè)Can模塊(可能需要刷新操作),如圖4-9所示。

43dec1b2-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-9: Can模塊創(chuàng)建后的效果

(1)統(tǒng)一路徑操作

從圖4-9可以看出,CanEcucValues.arxml和J1939Tp_EcucValues.arxml中各有一個(gè)Can模塊,為統(tǒng)一配置,須將兩者的路徑設(shè)定為一致,這個(gè)操作在“AUTOSAR Explorer”中完成,具體參見圖4-10和圖4-11。

43f13e8c-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-10: 進(jìn)入”AUTOSAR Explorer”的操作

44002992-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-11: 在J1939Tp_EcucValues.arxml中創(chuàng)建Ar Package

將新建的“Ar Package”命名為“Can”,并將前面創(chuàng)建的Can模塊拖入其中,執(zhí)行效果如圖4-12所示。

4411a820-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-12: Can模塊路徑更改執(zhí)行效果

(2)多余配置項(xiàng)刪除

原有Can模塊的配置參數(shù)存放在CanEcucValues.arxml中,新創(chuàng)建Can模塊的配置參數(shù)存放在J1939Tp_EcucValues.arxml中,它們分別為Can模塊的一部分。為防止BSW代碼生成時(shí)產(chǎn)生重復(fù)性錯(cuò)誤,需要把新創(chuàng)建Can模塊下的“CanConfigSet”和“CanGeneral”刪除,如圖4-13所示。

圖 4-13: Can模塊多余配置項(xiàng)刪除

4421c994-5bd5-11f0-baa5-92fbcf53809c.png

(3)配置文件選擇

在配置Can模塊的參數(shù)時(shí),雙擊“Can “Can” [CanEcucValues.arxml]”配置將改變CanEcucValues.arxml的內(nèi)容,雙擊“Can “Can” [J1939Tp_EcucValues.arxml]”配置將改變J1939Tp_EcucValues.arxml的內(nèi)容。由于本文希望將J1939Tp相關(guān)的配置存放在J1939Tp_EcucValues.arxml中,故需要雙擊“Can “Can” [J1939Tp_EcucValues.arxml]”來配置Can模塊。

4.3.2 添加和配置硬件對(duì)象

添加J1939通信所需的3個(gè)“CanHardwareObjects”,如表4-4所列。

表4-4: CAN硬件對(duì)象

4436dae6-5bd5-11f0-baa5-92fbcf53809c.png

圖4-14為添加Can硬件對(duì)象的方法,表4-5、表4-6和表4-7分別列出各硬件對(duì)象的配置參數(shù)。

444bacbe-5bd5-11f0-baa5-92fbcf53809c.png

圖4-14: Can硬件對(duì)象添加方法

表4-5:連接管理報(bào)文接收硬件對(duì)象配置

445d2a98-5bd5-11f0-baa5-92fbcf53809c.png

表 4-6: 數(shù)據(jù)傳輸報(bào)文接收硬件對(duì)象配置

446aa20e-5bd5-11f0-baa5-92fbcf53809c.png ? 4-7:?連接管理報(bào)文或數(shù)據(jù)傳輸報(bào)文發(fā)送硬件對(duì)象配置 ? 447c01d4-5bd5-11f0-baa5-92fbcf53809c.png

4.4 Ecuc配置

在ECU配置時(shí)有一些信息需要多個(gè)BSW模塊共享,在不好確定這些共享信息屬于哪個(gè)模塊的情況下,使用虛擬Ecuc模塊來進(jìn)行ECU配置參數(shù)定義。

4.4.1 Ecuc模塊創(chuàng)建

按照?qǐng)D4-15和圖4-16所示創(chuàng)建Ecuc模塊,用于添加和配置J1939通信所用到的協(xié)議數(shù)據(jù)單元。

44907038-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-15: Ecuc模塊創(chuàng)建啟動(dòng)

44a2f6ea-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-16: Ecuc模塊創(chuàng)建配置

后續(xù)需要依次進(jìn)行Ecuc模塊的多余配置項(xiàng)刪除和配置文件選擇(無需統(tǒng)一路徑操作),這些步驟與前文的Can模塊操作基本相同。

4.4.2 添加和配置協(xié)議數(shù)據(jù)單元

添加J1939通信所需的8個(gè)“Pdus”,如表4-8所列。圖4-17繪制出這些協(xié)議數(shù)據(jù)單元的功用。

表 4-8: Ecuc模塊須添加的協(xié)議數(shù)據(jù)單元

44b74a0a-5bd5-11f0-baa5-92fbcf53809c.png

44c64212-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-17: Ecuc創(chuàng)建協(xié)議數(shù)據(jù)單元功用示意圖

圖4-18為添加Pdus的方法,表4-9、表4-10、表4-11、表4-12、表4-13、表4-14、表4-15和表4-16分別列出各協(xié)議數(shù)據(jù)單元的配置參數(shù)。

44d0073e-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-18: Ecuc協(xié)議數(shù)據(jù)單元添加方法

表 4-9: 發(fā)送連接管理幀從J1939Tp到CanIf配置

44e23b5c-5bd5-11f0-baa5-92fbcf53809c.png

表4-10: 發(fā)送數(shù)據(jù)傳輸幀從J1939Tp到CanIf配置

44ed500a-5bd5-11f0-baa5-92fbcf53809c.png

表4-11: 發(fā)送幀從PduR到J1939Tp配置

44fc5258-5bd5-11f0-baa5-92fbcf53809c.png

表4-12: 發(fā)送幀從J1939Dcm到PudR配置

45112a3e-5bd5-11f0-baa5-92fbcf53809c.png

表4-13: 接收連接管理幀從CanIf到J1939Tp配置

451fc1f2-5bd5-11f0-baa5-92fbcf53809c.png

表4-14: 接收數(shù)據(jù)傳輸幀從CanIf到J1939Tp配置

453451c6-5bd5-11f0-baa5-92fbcf53809c.png

表4-15: 接收幀從J1939Tp到PduR配置

45433ccc-5bd5-11f0-baa5-92fbcf53809c.png

表4-16: 接收幀從PduR到J1939Dcm配置

4550d8fa-5bd5-11f0-baa5-92fbcf53809c.png

4.5 J1939DcmCDD配置

J1939DcmCDD模塊用于測(cè)試J1939協(xié)議棧,即多于8字節(jié)數(shù)據(jù)的收發(fā)。

4.5.1 Cdd模塊創(chuàng)建

按照?qǐng)D4-19和圖4-20所示創(chuàng)建Cdd模塊,并將其更名為J1939DcmCDD。

4561aa90-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-19: Cdd模塊創(chuàng)建啟動(dòng)

456faa3c-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-20: Cdd模塊創(chuàng)建配置

為剛剛創(chuàng)建的Cdd模塊添加“CddComStackContribution -> CddPduRUpperLayerContribution”,再配置RxPdu和TxPdu各1個(gè)。

4.5.2 通信棧分配配置

Cdd模塊的配置參數(shù)如表4-17所列。

表 4-17: J1939DcmCDD通信棧分配配置

457b9efa-5bd5-11f0-baa5-92fbcf53809c.png

4.6 PduR配置

PDU路由器模塊為I-PDUs的路由提供服務(wù)。

4.6.1 PduR模塊創(chuàng)建

按照?qǐng)D4-21和圖4-22所示創(chuàng)建PduR模塊。

45899bd6-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-21: PduR模塊創(chuàng)建啟動(dòng)

4595b3e4-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-22: PduR模塊創(chuàng)建配置

后續(xù)需要依次進(jìn)行PduR模塊的多余配置項(xiàng)刪除和配置文件選擇(無需統(tǒng)一路徑操作),這些步驟與前文的Can模塊操作基本相同。

4.6.2 Bsw模塊配置

需要對(duì)PduR上層或下層的BSW模塊(與PduR有接口)進(jìn)行配置,這里添加J1939Tp和J1939DcmCDD兩個(gè)模塊,圖4-23為BSW模塊的添加方法。

45a73e16-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-23: PduR相關(guān)BSW模塊添加

J1939Tp和J1939DcmCDD模塊的配置方法如表4-18和表4-19所列

表 4-18: J1939Tp模塊配置

45b69960-5bd5-11f0-baa5-92fbcf53809c.png

表4-19: J1939DcmCDD模塊配置

45c2f732-5bd5-11f0-baa5-92fbcf53809c.png

4.6.3 PduR路由路徑配置

這里配置J1939DcmCDD和J1939Tp收發(fā)2個(gè)路由路徑,如圖4-24所示。

45d0137c-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-24: J1939DcmCDD和J1939Tp路由路徑

圖4-25為PduR添加路由路徑的方法,表4-20和表4-21為收發(fā)2個(gè)方向的路由配置參數(shù)。

45dce3cc-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-25: PduR路由路徑添加

表 4-20: 發(fā)送路由路徑配置

45f11a2c-5bd5-11f0-baa5-92fbcf53809c.png

表4-21: NPDU接收路由路徑配置

4601719c-5bd5-11f0-baa5-92fbcf53809c.png

4.7 CanIf配置

CanIf模塊位于底層CAN設(shè)備驅(qū)動(dòng)和上層通信服務(wù)層之間,提供CAN驅(qū)動(dòng)服務(wù)向上層通信層的接口。

4.7.1 CanIf模塊創(chuàng)建

按照?qǐng)D4-26和圖4-27所示創(chuàng)建CanIf模塊。

460f0f14-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-26: CanIf模塊創(chuàng)建啟動(dòng)

461e8354-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-27: CanIf模塊創(chuàng)建配置

后續(xù)需要依次進(jìn)行CanIf模塊的多余配置項(xiàng)刪除和配置文件選擇(無需統(tǒng)一路徑操作),這些步驟與前文的Can模塊操作基本相同。

表4-22列出了CanIf模塊包含的配置箱。

表 4-22: CanIf模塊所含配置箱

462b1844-5bd5-11f0-baa5-92fbcf53809c.png

4.7.2 CanIf私有配置

這個(gè)配置箱包含了CanIf的私有配置參數(shù),如表4-23所列。

表 4-23: CanIf私有配置

463ae1f2-5bd5-11f0-baa5-92fbcf53809c.png

4.7.3 CanIf公有配置

這個(gè)配置箱包含了CanIf的公共配置參數(shù),如表4-24所列。

表 4-24: CanIf公共配置

464feafc-5bd5-11f0-baa5-92fbcf53809c.png465f4a88-5bd5-11f0-baa5-92fbcf53809c.png

①在重新生成RTA-BSW后可能需要手動(dòng)重配

4.7.4 CanIf初始化配置

表4-25列出了CanIf初始化包含的子配置箱。

表 4-25: CanIf初始化所含子配置箱

4670ab48-5bd5-11f0-baa5-92fbcf53809c.png

(1)CanIf初始化硬件對(duì)象句柄配置

添加2個(gè)接收句柄和1個(gè)發(fā)送句柄,如表4-26、表4-27和表4-28所列。

表 4-26: CanIf連接管理報(bào)文接收句柄配置

4682c68e-5bd5-11f0-baa5-92fbcf53809c.png

表4-27: CanIf數(shù)據(jù)傳輸報(bào)文接收句柄配置

4696a230-5bd5-11f0-baa5-92fbcf53809c.png

表4-28: CanIf發(fā)送句柄配置

46a8250a-5bd5-11f0-baa5-92fbcf53809c.png

(3)CanIf緩沖區(qū)配置

添加1個(gè)CanIf緩沖區(qū),如表4-29所列。

表4-29: CanIf緩沖區(qū)配置

46ba95fa-5bd5-11f0-baa5-92fbcf53809c.png

(3)CanIf接收Pdu配置

添加2個(gè)接收Pdu,如表4-30和表4-31所列。

表 4-30: CanIf接收連接管理Pdu配置

46cabe08-5bd5-11f0-baa5-92fbcf53809c.png

表4-31: CanIf接收數(shù)據(jù)傳輸Pdu配置

46da6664-5bd5-11f0-baa5-92fbcf53809c.png

(4)CanIf發(fā)送Pdu配置

添加2個(gè)發(fā)送Pdu,如表4-32和表4-33所列。

表 4-32: CanIf發(fā)送連接管理Pdu配置

46e84432-5bd5-11f0-baa5-92fbcf53809c.png

表4-33: CanIf發(fā)送數(shù)據(jù)傳輸Pdu配置

46f79fc2-5bd5-11f0-baa5-92fbcf53809c.png

4.7.5 CanIf控制驅(qū)動(dòng)配置

無需配置。

4.7.6 CanIf處理配置

無需配置。

4.8 J1939Tp配置

前文已經(jīng)進(jìn)行了J1939Tp模塊的創(chuàng)建和通用配置,下面進(jìn)行其收發(fā)通道的配置。

4.8.1 J1939Tp接收通道配置

按照?qǐng)D4-28和圖4-29所示進(jìn)入J1939Tp接收通道配置界面,可以配置1個(gè)或多個(gè)接收通道。

47061e1c-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-28: J1939Tp配置界面進(jìn)入

4716b6c8-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-29: J1939Tp接收通道或發(fā)送通道添加

(1)接收通道通用配置

表4-34列出J1939Tp接收通道通用配置參數(shù)。

表 4-34: J1939Tp接收通道通用參數(shù)配置

4729851e-5bd5-11f0-baa5-92fbcf53809c.png

(2)接收連接管理報(bào)文

配置J1939傳輸協(xié)議的TP.CM幀,用于BAM和CMDT初始化連接,配置參數(shù)如表4-35所列。

表 4-35: J1939Tp接收通道接收連接管理報(bào)文參數(shù)配置

4736846c-5bd5-11f0-baa5-92fbcf53809c.png

(3)接收數(shù)據(jù)報(bào)文

配置J1939傳輸協(xié)議的TP.DT幀,用于BAM和CMDT數(shù)據(jù)傳輸,配置參數(shù)如表4-36所列。

表 4-36: J1939Tp接收通道接收數(shù)據(jù)報(bào)文參數(shù)配置

4744aca4-5bd5-11f0-baa5-92fbcf53809c.png

(4)接收參數(shù)組

配置被J1939傳輸層接收的參數(shù)組,配置參數(shù)如表4-37、表4-38和表4-39所列。

表 4-37: J1939Tp接收通道接收參數(shù)組配置

4751b430-5bd5-11f0-baa5-92fbcf53809c.png

表 4-38: J1939Tp接收通道接收直接NPdu配置

4760f940-5bd5-11f0-baa5-92fbcf53809c.png

表4-39: J1939Tp接收通道接收NSdu配置

47714bce-5bd5-11f0-baa5-92fbcf53809c.png

(5)發(fā)送連接管理報(bào)文

配置使用CMDT協(xié)議類型時(shí)接收方發(fā)送的TP.CM幀,配置參數(shù)如表4-40所列。

表 4-40: J1939Tp接收通道發(fā)送連接管理報(bào)文參數(shù)配置

4782054a-5bd5-11f0-baa5-92fbcf53809c.png

4.8.2 J1939Tp發(fā)送通道配置

可以配置1個(gè)或多個(gè)發(fā)送通道。

(1)發(fā)送通道通用配置

表4-41列出J1939Tp發(fā)送通道通用配置參數(shù)。

表 4-41: J1939Tp發(fā)送通道通用參數(shù)配置

47906ff4-5bd5-11f0-baa5-92fbcf53809c.png

(2)接收連接管理報(bào)文

配置J1939傳輸協(xié)議的TP.CM幀,僅適用于CMDT協(xié)議類型(J1939TpTxProtocolType配置為“J1939TP_PROTOCOL_CMDT”或不配置),配置參數(shù)如表4-42所列。

表 4-42: J1939Tp發(fā)送通道接收連接管理報(bào)文參數(shù)配置

479f66ee-5bd5-11f0-baa5-92fbcf53809c.png

(3)發(fā)送連接管理報(bào)文

配置J1939傳輸協(xié)議的TP.CM幀,用于BAM和CMDT初始化連接,配置參數(shù)如表4-43所列。

表 4-43: J1939Tp發(fā)送通道發(fā)送連接管理報(bào)文參數(shù)配置

47ad86de-5bd5-11f0-baa5-92fbcf53809c.png

(4)發(fā)送數(shù)據(jù)報(bào)文

配置J1939傳輸協(xié)議的TP.DT幀,用于BAM和CMDT數(shù)據(jù)傳輸,配置參數(shù)如表4-44所列。

表 4-44: J1939Tp發(fā)送通道發(fā)送數(shù)據(jù)報(bào)文參數(shù)配置

47bcba3c-5bd5-11f0-baa5-92fbcf53809c.png

(5)發(fā)送參數(shù)組

配置被J1939傳輸層發(fā)送的參數(shù)組,配置參數(shù)如表4-45、表4-46和表4-47所列。

表 4-45: J1939Tp發(fā)送通道發(fā)送參數(shù)組配置

47cb87e2-5bd5-11f0-baa5-92fbcf53809c.png

表4-46: J1939Tp發(fā)送通道發(fā)送直接NPdu配置

47dc7688-5bd5-11f0-baa5-92fbcf53809c.png

表4-47: J1939Tp發(fā)送通道發(fā)送NSdu配置

47ee8bd4-5bd5-11f0-baa5-92fbcf53809c.png

4.9 相關(guān)模塊配置

在J1939Tp及其相關(guān)模塊配置完成后,還需要在程序中調(diào)用J1939Tp的初始化和執(zhí)行函數(shù)。

4.9.1 BswM

J1939Tp模塊的初始化函數(shù)是J1939Tp_Init,其調(diào)用在BswM中配置。

(1)BswM行為創(chuàng)建

新建1個(gè)名為“BswM_AI_J1939TpInit”的行為,再為其添加1個(gè)“BswMUserCallOut”,在其中調(diào)用J1939Tp_Init()函數(shù)。

(2)BswM行為列表添加

將“BswM_AI_J1939TpInit”添加到“BswM_AL_BswMSwitchRun”行為列表中。

4.9.2 任務(wù)調(diào)度

須以10ms為周期循環(huán)調(diào)用J1939Tp_MainFunction,圖4-30為其操作方法。

47fcafc0-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-30: J1939Tp主函數(shù)周期性調(diào)用配置

4.9.3 CanIf

每次生成RTA-BSW后,需按照表4-48所列配置CanIf。

表 4-48: 生成RTA-BSW后CanIf模塊配置項(xiàng)

48087f6c-5bd5-11f0-baa5-92fbcf53809c.png

4.10 MCAL配置

由于J1939Tp新增了3個(gè)CAN硬件對(duì)象,故需要配置MCAL的CAN模塊。

4.10.1 CAN過濾掩碼增加

在CAN4通道增加1路過濾掩碼,如圖4-31所示。

4818d2d6-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-31: CAN4通道過濾掩碼添加

4.10.2 CAN硬件對(duì)象配置

手動(dòng)添加3路“CanHardwareObject”,如圖4-32所示;注意更改2個(gè)接收硬件對(duì)象的“CanFilterMaskRef”。

4831ab6c-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-32: CAN硬件對(duì)象添加

4.11 軟件集成

下面列出軟件集成和代碼編寫的步驟。

4.11.1 靜態(tài)代碼移植

在ISOLAR-AB環(huán)境下生成J1939Tp模塊的靜態(tài)代碼并將其拷貝到“...srcBSWsrcBSWGenJ1939Tp”路徑下,如圖4-33所示。

484eeeac-5bd5-11f0-baa5-92fbcf53809c.png

圖4-33: BSW靜態(tài)代碼生成

4.11.2 集成文件移植

在ISOLAR-AB環(huán)境下生成J1939Tp模塊的集成代碼并將J1939Tp_Cfg_SchM.h文件拷貝到“...srcINFRAschminc”路徑下。

4.11.3 內(nèi)存映射文件移植

將J1939Tp_MemMap.h和J1939Tp_Cfg_MemMap.h內(nèi)存映射頭文件拷貝到“...srcINFRAmemmap”文件夾下,這類文件在生成RTE時(shí)輸出程序文件模板,需要手動(dòng)優(yōu)化。

4.11.4 生成操作系統(tǒng)代碼

在“RTA-OS”工具中重新生成OS代碼。

4.11.5 J1939DcmCDD代碼實(shí)現(xiàn)

創(chuàng)建J1939DcmCDD.c和J1939DcmCDD.h程序文件并在其中完成下列函數(shù)的實(shí)現(xiàn):

J1939DcmCDD_StartOfReception;

J1939DcmCDD_CopyRxData;

J1939DcmCDD_CopyTxData;

J1939DcmCDD_TpRxIndication;

J1939DcmCDD_TpTxConfirmation。

4.11.6 Hightec配置

在Hightec中添加下列頭文件路徑。

...srcCDDJ1939Dcminc;

...srcBSWsrcBSWGenJ1939Tpapi;

...srcBSWsrcBSWGenJ1939Tpsrc;

...srcBSWsrcBSWGenJ1939Tp。

4.12 軟件調(diào)試

這里記錄J1939Tp協(xié)議棧的調(diào)試過程,調(diào)試環(huán)境為PCAN,CAN通道為CAN4,波特率250K。

4.12.1 調(diào)試代碼編寫

數(shù)據(jù)發(fā)送:在J1939DcmCDD.c中編寫J1939DcmCDD_MainFunction函數(shù),實(shí)現(xiàn)18字節(jié)數(shù)據(jù)的CAN發(fā)送;再在Os_SWC中以500ms為周期調(diào)用之。

數(shù)據(jù)接收:禁止上述18字節(jié)數(shù)據(jù)的周期性發(fā)送。

4.12.2 J1939發(fā)送調(diào)試

圖4-34為J1939數(shù)據(jù)發(fā)送調(diào)試截圖。VCU以500ms為周期發(fā)送18字節(jié)數(shù)據(jù),包括1個(gè)連接管理報(bào)文和3個(gè)數(shù)據(jù)報(bào)文,這4個(gè)報(bào)文之間的發(fā)送間隔為60ms(這個(gè)時(shí)間間隔沒有搞明白原因)。

486893ca-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-34: J1939發(fā)送調(diào)試截圖

盡管多于8字節(jié)數(shù)據(jù)的報(bào)文發(fā)送正確,但在調(diào)試少于或等于8字節(jié)報(bào)文的發(fā)送時(shí)出現(xiàn)了問題,數(shù)據(jù)無法發(fā)出。

經(jīng)過研讀AUTOSAR規(guī)范和分析靜態(tài)代碼,找到了出現(xiàn)上述問題的原因,是由于J1939Tp_Transmit函數(shù)的缺陷導(dǎo)致的,如圖4-35所示。

48762e2c-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-35: J1939Tp發(fā)送函數(shù)問題分析

經(jīng)過進(jìn)一步分析,發(fā)現(xiàn)J1939TpTxPgDynLength配置項(xiàng)的功用并沒有體現(xiàn)在J1939Tp的靜態(tài)代碼中,故對(duì)J1939Tp_Transmit函數(shù)進(jìn)行了如下改動(dòng)(見圖4-36)。

4887d460-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-36: J1939Tp發(fā)送函數(shù)修改后的代碼

4.13 J1939接收調(diào)試

圖4-37為J1939數(shù)據(jù)接收調(diào)試截圖,第1、3、4、5個(gè)報(bào)文為PC機(jī)發(fā)送,第2、6個(gè)報(bào)文為VCU回饋。

48946716-5bd5-11f0-baa5-92fbcf53809c.png

圖 4-37: J1939接收調(diào)試截圖

修改靜態(tài)代碼前后,VCU均能正確接收到多于8字節(jié)和少于或等于8字節(jié)報(bào)文的數(shù)據(jù)。

五、下期預(yù)告

在AUTOSAR規(guī)范中,內(nèi)存映射(Memory Map)似乎是非核心的模塊,但在解決各類工程問題(如數(shù)據(jù)標(biāo)定區(qū)增加了幾個(gè)標(biāo)定量就越界)的過程中,往往發(fā)揮著至關(guān)重要的作用。

在下期中,我們討論下內(nèi)存映射的功用和實(shí)現(xiàn)方法,著重分享內(nèi)存映射在AUTOSAR CP工程實(shí)踐中的妙用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • CAN總線
    +關(guān)注

    關(guān)注

    145

    文章

    1981

    瀏覽量

    132713
  • AUTOSAR
    +關(guān)注

    關(guān)注

    10

    文章

    378

    瀏覽量

    22610
  • 通訊協(xié)議
    +關(guān)注

    關(guān)注

    10

    文章

    289

    瀏覽量

    20827

原文標(biāo)題:從手寫代碼到AUTOSAR工具鏈(J1939Tp應(yīng)用篇)

文章出處:【微信號(hào):ETASChina,微信公眾號(hào):ETAS易特馳】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于J1939協(xié)議的組合儀表的設(shè)計(jì)與實(shí)現(xiàn)

    ,并且在實(shí)際的調(diào)試當(dāng)中,取得了良好的效果,充分證明了方案的可行性。關(guān)鍵詞:J1939;AT90CAN32; CAN 總線;組合儀表中圖分類號(hào):TP336 文獻(xiàn)標(biāo)識(shí)碼:ADesign
    發(fā)表于 05-17 11:45

    J1939基礎(chǔ)入門知識(shí)分享

    。1.2 J1939數(shù)據(jù)鏈路層(基于J1939-21):J1939 使用一個(gè)較簡單的數(shù)據(jù)路來通信。 如下表所示, 29為CAN ID包括Priority (P), Extended
    發(fā)表于 04-11 07:00

    SAE J1939 協(xié)議源代碼分享

    發(fā)現(xiàn)一個(gè)剛開源的J1939協(xié)議棧,親們相關(guān)地址如下:源代碼下載地址github下載地址:https://github.com/XeiTongXueFlyMe/J1939代碼分析網(wǎng)址:
    發(fā)表于 07-30 11:39

    J1939協(xié)議理解

    J1939協(xié)議理解
    發(fā)表于 05-06 15:23

    基于J1939協(xié)議的組合儀表的設(shè)計(jì)與實(shí)現(xiàn)

    摘要:本文首先介紹了CAN 總線和J1939 協(xié)議,然后重點(diǎn)介紹了基于J1939 協(xié)議應(yīng)用AT90CAN32 作為微控制器的組合儀表的硬件和軟件的實(shí)現(xiàn)方法,并且在實(shí)際的調(diào)試當(dāng)中,取得了良好
    發(fā)表于 05-16 18:55 ?36次下載

    基于J1939的汽車CAN總線教學(xué)實(shí)驗(yàn)系統(tǒng)

    針對(duì)J1939協(xié)議培訓(xùn)要求,構(gòu)建了一個(gè)基于J1939協(xié)議的汽車總線培訓(xùn)實(shí)驗(yàn)系統(tǒng)。系統(tǒng)硬件由計(jì)算機(jī)、Kvaser CAN總線分析儀以及基于J1939協(xié)議的汽車CAN總線模塊包括儀表板模塊、車身電器模
    發(fā)表于 08-06 10:25 ?50次下載

    SAE J1939協(xié)議分析指南

    SAE J1939協(xié)議是由汽車工程協(xié)會(huì)(SAE)定義的,SAE J1939協(xié)議在商用車輛、艦船、軌道機(jī)車、農(nóng)業(yè)機(jī)械和大型發(fā)動(dòng)機(jī)中是應(yīng)用最廣泛的應(yīng)用層協(xié)議,基于傳輸可靠性能優(yōu)越的CAN-bus總線,可
    發(fā)表于 03-13 13:50 ?189次下載

    基于SAE J1939協(xié)議的車輛網(wǎng)絡(luò)通信

    目前,車輛的ECU產(chǎn)品大都帶有SAE J1939 CAN接口。針對(duì)具有SAE J1939 CAN接口的ECU產(chǎn)品(如發(fā)動(dòng)機(jī)、變速器及其緩速器和ABS等ECU),自定義若干ECU,集成實(shí)現(xiàn)基于SAE J1939協(xié)議的車輛網(wǎng)絡(luò),完成
    發(fā)表于 09-24 00:49 ?5988次閱讀
    基于SAE <b class='flag-5'>J1939</b>協(xié)議的車輛網(wǎng)絡(luò)通信

    CAN高層協(xié)議J1939的基礎(chǔ)和應(yīng)用以及開發(fā)介紹

    CAN做為應(yīng)用比較廣泛的通信總線,受到了越來越多的客戶喜歡和青睞,廣泛應(yīng)用于工業(yè)和汽車,常見的高層協(xié)議有CANopen,J1939,DeviceNet等,在公眾號(hào)曾經(jīng)分享過超過15有關(guān)CAN的高層
    的頭像 發(fā)表于 04-02 10:45 ?5147次閱讀
    CAN高層協(xié)議<b class='flag-5'>J1939</b>的基礎(chǔ)和應(yīng)用以及開發(fā)介紹

    J1939協(xié)議理解

    J1939協(xié)議基礎(chǔ)知識(shí)講解。
    發(fā)表于 05-06 15:34 ?13次下載

    基于恩智浦MPC5744P的SAE J1939協(xié)議棧開發(fā)

    的,MPC5744P 支持CAN2.0B。CAN 的高層協(xié)議,J1939 是基于CAN2.0B的擴(kuò)展幀,29位標(biāo)識(shí)符,支持單幀和多幀收發(fā)通信。本次設(shè)計(jì)主要實(shí)現(xiàn)SAE J1939 數(shù)據(jù)
    的頭像 發(fā)表于 09-24 16:15 ?8476次閱讀
    基于恩智浦MPC5744P的SAE <b class='flag-5'>J1939</b>協(xié)議棧開發(fā)

    手寫代碼AUTOSAR工具_MCAL應(yīng)用

    AUTOSAR分層架構(gòu)中,MCAL是最基礎(chǔ)的一層。由于該層直接和單片機(jī)打交道,在整個(gè)開發(fā)流程中往往最靠前,在PCB測(cè)試過程中也發(fā)揮著至關(guān)重要的作用。
    的頭像 發(fā)表于 05-30 09:07 ?1.4w次閱讀
    <b class='flag-5'>從</b><b class='flag-5'>手寫</b><b class='flag-5'>代碼</b><b class='flag-5'>到</b><b class='flag-5'>AUTOSAR</b><b class='flag-5'>工具</b><b class='flag-5'>鏈</b>_MCAL應(yīng)用<b class='flag-5'>篇</b>

    AUTOSAR之實(shí)時(shí)環(huán)境RTE

      近年來,越來越多的公司采用AUTOSAR工具進(jìn)行車載ECU軟件開發(fā),這對(duì)采用傳統(tǒng)手寫代碼方式設(shè)計(jì)程序的工程師而言是個(gè)不小的挑戰(zhàn),主要體
    的頭像 發(fā)表于 05-30 15:32 ?3075次閱讀
    <b class='flag-5'>AUTOSAR</b>之實(shí)時(shí)環(huán)境RTE

    SAE J1939中英文資料

    最全的J1939中英文協(xié)議資料
    發(fā)表于 11-26 15:06 ?2次下載

    盟通方案|如何集成J1939協(xié)議

    進(jìn)行數(shù)據(jù)通訊,主要以廣播通訊為主。借助盟通科技提供的J1939協(xié)議棧,用戶能夠快速、簡便地開發(fā)J1939設(shè)備。該協(xié)議棧包含了將J1939集成自身設(shè)備中所需的所有功
    的頭像 發(fā)表于 06-13 11:35 ?235次閱讀
    盟通方案|如何集成<b class='flag-5'>J1939</b>協(xié)議
    主站蜘蛛池模板: 日本特黄特色特爽大片老鸭 | 逼逼视频网站 | 四虎免费看黄 | 日韩插插 | 五月综合色婷婷影院在线观看 | 91在线免费看 | 亚洲一区二区在线视频 | 一本在线免费视频 | 奇米影视欧美 | 亚洲国产成人精品久久 | 天天操天天射天天插 | 亚洲不卡免费视频 | 亚洲国内精品久久 | 久久精品夜色国产 | 窝窝视频成人影院午夜在线 | 亚洲吊丝网 | 久久久www免费人成看片 | 日本伊人网 | 在线观看免费av网站 | 大尺度很肉污的古代小说 | 国产片在线观看狂喷潮bt天堂 | 日韩加勒比在线 | xx网成人| 视频一区二区在线播放 | 国产成人精品曰本亚洲77美色 | 成人毛片一区二区三区 | 四虎永久在线精品免费影视 | 俺去俺来也www色官网免费的 | 一级视频在线免费观看 | 69久久夜色精品国产69 | 人人爱人人艹 | 优优色综合 | 亚洲美女视频在线观看 | 玖玖在线免费视频 | 48pao强力打造免费基地 | 色视频欧美 | 天堂免费视频 | 日本免费网站 | 国产激烈无遮挡免费床戏视频 | 国产美女免费 | 免费黄色福利 |