前言
最近遇到一個(gè)特殊需求:在ECU系統(tǒng)休眠后需要通過網(wǎng)絡(luò)管理報(bào)文和診斷報(bào)文喚醒網(wǎng)絡(luò),但是應(yīng)用報(bào)文不能喚醒網(wǎng)絡(luò)。通常情況下,在ECU系統(tǒng)休眠后,AUTOSAR架構(gòu)中只能配置通過網(wǎng)絡(luò)管理報(bào)文喚醒網(wǎng)絡(luò)或者所有報(bào)文都能喚醒網(wǎng)絡(luò),沒有單獨(dú)的診斷報(bào)文喚醒網(wǎng)絡(luò)的配置。那在AUTOSAR架構(gòu)下如何來實(shí)現(xiàn)這個(gè)功能了?
本文先詳細(xì)介紹這個(gè)需求在AUTOSAR架構(gòu)下遇到的問題,然后再給出一個(gè)具體的解決辦法。
Note: 使用Vector的工具,以及TJA1043的CAN收發(fā)器。
正文
1.面臨的問題
1.1 TJA1043的INH腳喚醒事件
ECU系統(tǒng)休眠后TJA1043的INH腳處于floating高阻態(tài),系統(tǒng)休眠后通過硬件外部電路下拉到低電平狀態(tài)/Low-level,ECU系統(tǒng)休眠前把TJA1043的INH腳配置為喚醒腳,系統(tǒng)休眠后如果收到任意的CAN報(bào)文,TJA1043的INH腳會(huì)被拉高,產(chǎn)生CAN收發(fā)器的硬件喚醒事件(Low-Level to High-Level)。如果ECU系統(tǒng)是斷電系統(tǒng),那么INH腳應(yīng)該接在SBC上,因?yàn)镾BC是常電狀態(tài),檢測到INH的喚醒事件后就會(huì)給ECU-MCU供電,MCU冷啟動(dòng)。如果是ECU系統(tǒng)是常電系統(tǒng),INH腳應(yīng)該接到MCU的一個(gè)中斷喚醒腳上,檢測到INH的喚醒事件后,中斷喚醒MCU,MCU中的軟件可以選擇繼續(xù)跑,也可以通過軟件Reset后重新熱啟動(dòng)。
參考文章:關(guān)于CanTrcv模塊的幾點(diǎn)思考
總之,無論是斷電系統(tǒng)還是常電系統(tǒng),在ECU系統(tǒng)休眠后,任意的CAN報(bào)文都能喚醒ECU。
1.2 EcuM配置網(wǎng)絡(luò)喚醒
實(shí)現(xiàn)網(wǎng)絡(luò)喚醒,需要在EcuM模塊中配置喚醒源,同時(shí)配置喚醒源檢測。
開啟EcuM的網(wǎng)絡(luò)喚醒源校驗(yàn)Validation后需要User實(shí)現(xiàn)三個(gè)Callout函數(shù)函數(shù):
1) EcuM_StartWakeupSources(EcuM_WakeupSourceType);
2) EcuM_StopWakeupSources(EcuM_WakeupSourceType);
3) EcuM_CheckValidation(EcuM_WakeupSourceType);
參考文章:AUTOSAR架構(gòu)下關(guān)于CanNm的幾點(diǎn)思考
1.3 CanIf配置喚醒報(bào)文過濾
CanIf中可以配置Wakeup Check Valition,有兩種配置可選:
1)所有報(bào)文可以通過校驗(yàn)
2)只有NM報(bào)文可以通過校驗(yàn)
1.4ComM網(wǎng)絡(luò)喚醒
EcuM調(diào)用CanIf接口校驗(yàn)網(wǎng)絡(luò)喚醒源成功后,EcuM就會(huì)調(diào)用ComM_EcuM_WakeUpIndication請(qǐng)求通信,ComM在CommunicationAlllowed后就會(huì)調(diào)轉(zhuǎn)到Full Com狀態(tài)開啟網(wǎng)絡(luò)。
參考文章:AUTOSAR網(wǎng)絡(luò)通信問題分析
1.5診斷報(bào)文喚醒面臨的問題
我們的需求是:在ECU系統(tǒng)休眠后需要通過網(wǎng)絡(luò)管理報(bào)文和診斷報(bào)文喚醒網(wǎng)絡(luò),但是應(yīng)用報(bào)文不能喚醒網(wǎng)絡(luò)。
但是從上文中我們可以得知:
1)如果CanIf配置為所有報(bào)文可以校驗(yàn)通過,那么應(yīng)用報(bào)文也會(huì)通過校驗(yàn),從而喚醒網(wǎng)絡(luò)。
2)如果CanIf配置為只有NM報(bào)文可以通過校驗(yàn),那么診斷報(bào)文也就不能通過校驗(yàn), 從而診斷報(bào)文不能喚醒網(wǎng)絡(luò)。
3)只要ECU被喚醒后,因?yàn)槌绦蛞呀?jīng)跑起來了,理論上肯定可以讓診斷報(bào)文來喚醒網(wǎng)絡(luò)的,但是在AUTOSAR架構(gòu)下沒有提供這個(gè)配置,代碼框架已經(jīng)被限制,要實(shí)現(xiàn)這個(gè)功能就不知道在哪里實(shí)現(xiàn)。
也就是說,在AUTOSAR架構(gòu)下按通常配置是無法實(shí)現(xiàn)ECU系統(tǒng)休眠后需要通過網(wǎng)絡(luò)管理報(bào)文和診斷報(bào)文喚醒網(wǎng)絡(luò),但是應(yīng)用報(bào)文不能喚醒網(wǎng)絡(luò)的。
2.解決的辦法
如果能想辦法在EcuM調(diào)用CanIf_CheckValication的時(shí)候能讓診斷報(bào)文通過校驗(yàn)(NM報(bào)文也通過校驗(yàn),應(yīng)用報(bào)文不能通過校驗(yàn))就能解決這個(gè)問題。
審核編輯 :李倩
-
收發(fā)器
+關(guān)注
關(guān)注
10文章
3445瀏覽量
106140 -
AUTOSAR
+關(guān)注
關(guān)注
10文章
363瀏覽量
21672 -
ecu
+關(guān)注
關(guān)注
14文章
890瀏覽量
54623
原文標(biāo)題:ECU系統(tǒng)休眠后通過診斷報(bào)文喚醒ECU且喚醒網(wǎng)絡(luò)
文章出處:【微信號(hào):汽車電子嵌入式,微信公眾號(hào):汽車電子嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論