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