前言
如果當(dāng)前節(jié)點(diǎn)有網(wǎng)絡(luò)管理,我給的答案很明確,不是!之所以要寫這個(gè)主題,是因?yàn)閷?shí)際工作中,接觸的很多工程師對(duì)這兩個(gè)概念有點(diǎn)混淆,因此本文侃侃這兩個(gè)概念。注意,本文基于節(jié)點(diǎn)有網(wǎng)絡(luò)管理的前提進(jìn)行討論。
Autosar EcuM
Autosar的模塊劃分很細(xì),分工也很明確,也正因如此才使得軟件有了層次,即分層。同時(shí),也使得抽象模塊具有更好的跨平臺(tái)移植性。
這里說一下EcuM模塊,本文不講EcuM功能,但為什么提EcuM呢?EcuM即Ecu Manager,這樣直白的解釋,我們應(yīng)該清楚了,EcuM就是管理Ecu的。Autosar中,EcuM使用Phase、Mode、State表示Ecu各個(gè)狀態(tài),每個(gè)層級(jí)對(duì)內(nèi)對(duì)外可見性不同,EcuM狀態(tài)圖如下所示:
由上圖是不是可以看出什么?這既是我們常說的“
節(jié)點(diǎn)喚醒
說的更具體一點(diǎn)就是EcuM切換到Run Phase時(shí),節(jié)點(diǎn)喚醒。如果要從外部評(píng)判節(jié)點(diǎn)喚醒,就是外設(shè)功能供電且正常工作,可以在電源中看到電流達(dá)到正常的工作電流。但此時(shí)網(wǎng)絡(luò)喚醒了嗎?
Autosar xxNM
這里xx指總線類型,CAN/Flexray/Ethernet等。本例以CANNM為例討論。剛才提到EcuM進(jìn)入RUN Phase階段即我們常說的“節(jié)點(diǎn)喚醒”,和網(wǎng)絡(luò)喚醒等價(jià)嗎?說到這里,我們應(yīng)該都清楚了,這本就不是一回事。節(jié)點(diǎn)喚醒不能看作是網(wǎng)絡(luò)喚醒。而且Autosar也給了我們很明確的答案,不然為什么又會(huì)分出CANNM呢?
如上圖,這個(gè)答案給的是不是更明確一些,CANNM和EcuM干的就不是一件事,因此也就不能將兩者等價(jià)。由上圖可以看出,EcuM上電,網(wǎng)絡(luò)從Bus Sleep Mode切換到Network Mode需要有附加條件,一般是如下兩種情況滿足其一,第一有網(wǎng)絡(luò)主動(dòng)請(qǐng)求(CanNm_NetworkRequest()),第二網(wǎng)絡(luò)有被動(dòng)喚醒請(qǐng)求(CanNm_PassiveStartup())。如果沒有外部請(qǐng)求,網(wǎng)絡(luò)會(huì)一直在Bus Sleep Mode狀態(tài)呆著,如果用Canoe等設(shè)備監(jiān)控,可以看到當(dāng)前節(jié)點(diǎn)不發(fā)任何報(bào)文到總線上,只能接收總線報(bào)文(EcuM在RUN Phase階段時(shí))。
總結(jié)來說,就是EcuM處于RUN Phase階段是網(wǎng)絡(luò)能進(jìn)入Network Mode的充分必要條件。換成我們常說的就是:
節(jié)點(diǎn)喚醒是網(wǎng)絡(luò)喚醒的充分必要條件
說到這里我們應(yīng)該對(duì)這兩個(gè)概念有了一定認(rèn)知,如果當(dāng)前節(jié)點(diǎn)有網(wǎng)絡(luò)管理,且收到網(wǎng)絡(luò)管理報(bào)文喚醒網(wǎng)絡(luò),那么總線必須先有一幀報(bào)文喚醒Ecu,Ecu進(jìn)入了RUN Phase階段,收到的網(wǎng)絡(luò)管理報(bào)文才能送到上層模塊(如EcuM,BswM,ComM,NM等),進(jìn)而上層才能決定開啟通信,報(bào)文才能外發(fā)到總線。如果收到非網(wǎng)絡(luò)管理報(bào)文,Ecu會(huì)喚醒,也可以理解為Ecu被供電(主程序被周期調(diào)度),因?yàn)椴皇怯行拘言?,之后Ecu走下電流程。至于Ecu收到非網(wǎng)絡(luò)管理報(bào)文保持Ecu喚醒多久取決于系統(tǒng)需求。
審核編輯:劉清
-
電源
+關(guān)注
關(guān)注
184文章
17484瀏覽量
249155 -
CAN
+關(guān)注
關(guān)注
57文章
2694瀏覽量
463156 -
AUTOSAR
+關(guān)注
關(guān)注
10文章
349瀏覽量
21446
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論