點擊上方藍(lán)字談思實驗室
獲取更多汽車網(wǎng)絡(luò)安全資訊

01
網(wǎng)絡(luò)管理目的
網(wǎng)絡(luò)管理的目的是使車輛網(wǎng)絡(luò)中的 ECU 節(jié)點有序的睡眠和喚醒。 在沒有通信需求的時候睡眠,在需要通信的時候喚醒, 可以節(jié)約汽車電池的電量。
CAN Network Management(CanNm)是一種獨立于硬件的協(xié)議實現(xiàn)的軟件模塊, 只能在 CAN 網(wǎng)絡(luò)上使用, 主要功能是協(xié)調(diào)網(wǎng)絡(luò)正常運行和總線睡眠模式之間的轉(zhuǎn)換。 CanNm 提供了網(wǎng)絡(luò)管理接口(NmIf) 和CAN 接口(CanIf) 模塊間的適配。
02
CanNM與其他模塊之間關(guān)系

03
主動喚醒和被動喚醒
網(wǎng)絡(luò)管理喚醒分為主動喚醒和被動喚醒。(BMS的休眠喚醒包括CAN喚醒,CAN喚醒又叫網(wǎng)絡(luò)管理喚醒)
主動喚醒和被動喚醒的區(qū)分: 簡單來說,除了收到其他節(jié)點發(fā)送的網(wǎng)絡(luò)喚醒報文是被動喚醒外,其他都是主動喚醒(如:KL15、菊花鏈、RTC定時喚醒等)。
主動喚醒請求: 來自模塊內(nèi)部對網(wǎng)絡(luò)的請求,并通過發(fā)送NM PDU嘗試喚醒其他ECU。主動喚醒又叫做本地喚醒,和硬線相關(guān)的喚醒方式一般稱為本地喚醒源。如:KL15硬線,硬線傳感器信號(如:腳踢門、后備箱打開)主動喚醒節(jié)點(BMS即是一個節(jié)點)的網(wǎng)絡(luò)管理報文必須先于應(yīng)用報文發(fā)送。
被動喚醒請求: 來自總線上其他節(jié)點對該節(jié)點(例:BMS)的網(wǎng)絡(luò)請求。被動喚醒的節(jié)點,發(fā)送的網(wǎng)絡(luò)管理 PDU 和應(yīng)用報文沒有順序要求(實際以項目 要求為準(zhǔn))。被動喚醒又叫做遠(yuǎn)程喚醒,簡單來說就是和總線信號相關(guān)的喚醒方式。比如收到網(wǎng)絡(luò)管理報文或者指定診斷報文(以項目要求為準(zhǔn),部分項目不會使用診斷報文作為喚醒源),或者包含KL15信號的應(yīng)用報文(有些節(jié)點沒有KL15硬線,而是網(wǎng)關(guān)轉(zhuǎn)發(fā)包含KL15信號的應(yīng)用報文喚醒)。
04
狀態(tài)管理
AUTOSAR CanNm 包含三種模式,其中 Network Mode包括三種子狀態(tài):
網(wǎng)絡(luò)模式(Network Mode)
重復(fù)報文狀態(tài)(Repeat Message State)
常規(guī)運行狀態(tài)(Normal Operation State)
準(zhǔn)備睡眠狀態(tài)(Ready Sleep State)
準(zhǔn)備總線睡眠模式(Prepare Bus-Sleep Mode)
總線睡眠模式(Bus-Sleep Mode)
1. 總線睡眠模式(Bus-Sleep Mode)
總線睡眠模式(BusSleepMode)的作用,是當(dāng)網(wǎng)絡(luò)上沒有通信需求的時候,減少節(jié)點對蓄電池電量的消耗。 節(jié)點進(jìn)入總線睡眠模式(BusSleepMode)后,對蓄電池電量的消耗下降到適當(dāng)?shù)某潭取9?jié)點保留喚醒機(jī)制,等待被喚醒。
原則上,處于總線睡眠模式(BusSleepMode)的節(jié)點不接收應(yīng)用報文并且不應(yīng)給出ACK應(yīng)答。如果此時節(jié)點數(shù)據(jù)鏈路層被喚醒且給出了ACK應(yīng)答,需要在最短時間內(nèi)重新進(jìn)入低功耗模式。
2. 準(zhǔn)備總線睡眠模式(Prepare Bus-Sleep Mode)
準(zhǔn)備總線睡眠模式(PrepareBusSleepMode)的作用,是保證在進(jìn)入總線睡眠前,節(jié)點有足夠的時間停止其網(wǎng)絡(luò)活動。在準(zhǔn)備總線睡眠模式(PrepareBusSleepMode)下,總線活動減少(如:存在于發(fā)送緩存中的報文被發(fā)送,以清空發(fā)送緩存),最終總線將不再有活動(即沒有任何報文被發(fā)送)。
節(jié)點進(jìn)入準(zhǔn)備總線睡眠模式(PrepareBusSleepMode)后,將立即開啟T_WAIT_BUS_SLEEP定時器。在該定時器溢出后,該節(jié)點將離開準(zhǔn)備總線睡眠模式(PrepareBusSleepMode),進(jìn)入總線睡眠模式(BusSleepMode)。
當(dāng)處于準(zhǔn)備總線睡眠模式(BusSleepMode) 的節(jié)點接收到網(wǎng)絡(luò)管理報文時 , 將向網(wǎng)絡(luò)模式(NetworkMode)轉(zhuǎn)換;默認(rèn)情況下,節(jié)點進(jìn)入網(wǎng)絡(luò)模式(NetworkMode)中的重復(fù)報文狀態(tài)(RepeatMessageState)。
當(dāng)處于準(zhǔn)備總線睡眠模式(PrepareBusSleepMode)的節(jié)點對網(wǎng)絡(luò)通信有需求時,將向網(wǎng)絡(luò)模式(NetworkMode)轉(zhuǎn)換;默認(rèn)情況下,節(jié)點進(jìn)入網(wǎng)絡(luò)模式(NetworkMode)的重復(fù)報文狀態(tài)(RepeatMessageState)。
3. 網(wǎng)絡(luò)模式(Network Mode)
當(dāng)節(jié)點從總線睡眠模式(BusSleepMode)或準(zhǔn)備總線睡眠模式(PrepareBusSleepMode)進(jìn)入網(wǎng)絡(luò)模式(NetworkMode)時,在默認(rèn)情況下,需進(jìn)入重復(fù)報文狀態(tài)(RepeatMessageState)。
節(jié)點進(jìn)入網(wǎng)絡(luò)模式(NetworkMode)后,需開啟T_NM_TIMEOUT定時器;
節(jié)點處于網(wǎng)絡(luò)模式 (NetworkMode),成功接收或成功發(fā)送一幀網(wǎng)絡(luò)管理報文(NM PDU)后,需重啟T_NM_TIMEOUT定時器;
3.1 重復(fù)報文狀態(tài)(RepeatMessageState)
無論其睡眠條件是否滿足,重復(fù)報文狀態(tài)(RepeatMessageState)都可以使節(jié)點保持一段時間的活躍狀態(tài)。該狀態(tài)可以被用來監(jiān)測在線節(jié)點,并且告訴其它節(jié)點我上線了,可以正常通信了。
當(dāng)節(jié)點進(jìn)入重復(fù)報文狀態(tài)(RepeatMessageState)后,需要開始(或重新開始)發(fā)送網(wǎng)絡(luò)管理報文。
節(jié)點處于重復(fù)報文狀態(tài)(RepeatMessageState),T_NM_TIMEOUT定時器超時溢出時,需要重啟T_NM_TIMEOUT定時器。
節(jié)點接收到本地喚醒源后,進(jìn)入快發(fā)重復(fù)報文狀態(tài)(InnmediateTransmitState);
節(jié)點接收到被動喚醒源后,進(jìn)入正常重復(fù)報文狀態(tài)(NormalTransmitState)。
節(jié)點在進(jìn)入重復(fù)報文狀態(tài) (RepeatMessageState)后,需要保持一段時間 ,這段時間由參數(shù)T_REPEAT_MESSAGE 決定;T_REPEAT_MESSAGE 超時后,節(jié)點狀態(tài)需進(jìn)入常規(guī)運行狀態(tài)(NormalOperationState)或準(zhǔn)備睡眠狀態(tài)(ReadySleepState)。 T_REPEAT_MESSAGE需保證網(wǎng)絡(luò)上其它的節(jié)點都可以被網(wǎng)絡(luò)管理報文喚醒。
節(jié)點離開重復(fù)報文狀態(tài)(RepeatMessageState)后,若對網(wǎng)絡(luò)通信有需求,應(yīng)進(jìn)入常規(guī)運行狀態(tài)(NormalOperationState)。
節(jié)點離開重復(fù)報文狀態(tài)(RepeatMessageState)后,若對網(wǎng)絡(luò)通信無需求,應(yīng)進(jìn)入準(zhǔn)備睡眠狀態(tài)(ReadySleepState)。
節(jié)點離開重復(fù)報文狀態(tài)(RepeatMessageState)后,需將重復(fù)報文請求標(biāo)志位(RepeatMessageRequestBit)清零。
3.2 常規(guī)運行狀態(tài)(NormalOperationState)
常規(guī)運行狀態(tài)(NormalOperationState)用于保證只要對網(wǎng)絡(luò)通信有需求,任何一個網(wǎng)絡(luò)管理節(jié)點都可以保持網(wǎng)絡(luò)處于喚醒狀態(tài)。
當(dāng)節(jié)點由重復(fù)報文狀態(tài)(RepeatMessageState)或準(zhǔn)備睡眠狀態(tài)(ReadySleepState)進(jìn)入常規(guī)運行狀態(tài)(NormalOperationState)時,需按照T_NM_MessageCycle的周期發(fā)送網(wǎng)絡(luò)管理報文。
當(dāng)節(jié)點處于常規(guī)運行狀態(tài)(NormalOperationState),而定時器T_NM_TIMEOUT溢出時,需要重啟定時器。
當(dāng)節(jié)點處于常規(guī)運行狀態(tài)(NormalOperationState),而本地睡眠條件滿足時,需進(jìn)入準(zhǔn)備睡眠狀態(tài)(ReadySleepState)。
當(dāng)節(jié)點處于常規(guī)運行狀態(tài)(NormalOperationState),而接收到重復(fù)報文請求標(biāo)志位(RepeatMessageRequestBit)置位的網(wǎng)絡(luò)管理報文時,需進(jìn)入重復(fù)報文狀態(tài)(RepeatMessageState)。
當(dāng)節(jié)點處于常規(guī)運行狀態(tài)(NormalOperationState),而RepeatMessageRequest()函數(shù)被調(diào)用時,需進(jìn)入重復(fù)報文狀態(tài)(RepeatMessageState),并將報文中重復(fù)報文請求標(biāo)志位(RepeatMessageRequestBit)置位,同時啟用快速發(fā)送機(jī)制(autosar中未明確此時是否需要啟用快發(fā)機(jī)制)。
3.3 準(zhǔn)備睡眠狀態(tài)(ReadySleepState)
當(dāng)節(jié)點從重復(fù)報文狀態(tài)(RepeatMessageState)或常規(guī)運行狀態(tài)(NormalOperationState)進(jìn)入準(zhǔn)備睡眠狀態(tài)(ReadySleepState)后,需停止發(fā)送網(wǎng)絡(luò)管理報文。
當(dāng)節(jié)點處于準(zhǔn)備睡眠狀態(tài)(ReadySleepState),定時器T_NM_TIMEOUT溢出后,需進(jìn)入準(zhǔn)備總線睡眠模式(PrepareBusSleepMode)。
當(dāng)節(jié)點處于準(zhǔn)備睡眠狀態(tài)(ReadySleepState),但因發(fā)生本地喚醒事件,睡眠條件不再滿足時,需進(jìn)入常規(guī)運行狀態(tài)(NormalOperationState)。
當(dāng)節(jié)點處于準(zhǔn)備睡眠狀態(tài)(ReadySleepState),接收到重復(fù)報文請求標(biāo)志位(RepeatMessageRequestBit)置位的網(wǎng)絡(luò)管理報文后,需進(jìn)入重復(fù)報文狀態(tài)(RepeatMessageState)。
當(dāng)節(jié)點處于準(zhǔn)備睡眠狀態(tài)(ReadySleepState),RepeatMessageRequest()函數(shù)被調(diào)用時,需進(jìn)入重復(fù)報文狀態(tài)(RepeatMessageState),并將網(wǎng)絡(luò)管理報文中的重復(fù)報文請求標(biāo)志位(RepeatMessageRequest)置位,同時啟用快速發(fā)送機(jī)制。(autosar中未明確此時是否需要啟用快發(fā)機(jī)制)
05
網(wǎng)絡(luò)管理定時參數(shù)

06
狀態(tài)切換整體框圖
下圖顯示了與API規(guī)范相關(guān)的UML狀態(tài)圖。模式更改相關(guān)轉(zhuǎn)換用綠色表示,錯誤處理相關(guān)轉(zhuǎn)換用紅色表示,可選節(jié)點檢測相關(guān)轉(zhuǎn)換用藍(lán)色表示。此外,還假定啟用了總線負(fù)載減少功能。

狀態(tài)切換詳述:


當(dāng)ECU處于不同的運行模式時,可以發(fā)送和接收的CAN報文的類型。

07
網(wǎng)絡(luò)管理報文(NM PDU)
每一個AUTOASAR網(wǎng)絡(luò)管理節(jié)點都會被分配一個唯一的網(wǎng)絡(luò)管理報文ID。
NM PDU數(shù)據(jù)結(jié)構(gòu)如下:

源節(jié)點地址(SourceNodeIdentifier)
每一個參與網(wǎng)絡(luò)管理的節(jié)點都會被分配一個唯一的標(biāo)識符(NODE_ID),存放于網(wǎng)絡(luò)管理報文的Byte0(SourceNodeIdentifier)中。
Byte 0表示當(dāng)前節(jié)點的Source ID,比如如何當(dāng)前節(jié)點發(fā)送的NM報文ID為0x514,那么該Source ID就為0x14;
控制比特向量(ControlBitVector)

Bit0:重復(fù)報文請求標(biāo)志位(RepeatMessageRequestBit),信號值描述為:
0x0:該報文發(fā)送節(jié)點未請求其他節(jié)點進(jìn)入重復(fù)報文狀態(tài)
0x1:該報文發(fā)送節(jié)點請求其他節(jié)點進(jìn)入重復(fù)報文狀態(tài)
Bit3:NM協(xié)調(diào)器休眠位
主協(xié)調(diào)器未請求啟動同步關(guān)機(jī)
主協(xié)調(diào)器請求啟動同步關(guān)機(jī)
Bit4:主動喚醒網(wǎng)絡(luò)標(biāo)志位(ActiveWakeupBit),信號值描述為:
0x0:該報文發(fā)送節(jié)點未主動喚醒網(wǎng)絡(luò)(被其它節(jié)點喚醒)
0x1:該報文發(fā)送節(jié)點主動喚醒網(wǎng)絡(luò)重復(fù)報文請求標(biāo)志位(RepeatMessageRequestBit)的默認(rèn)值為 0。
當(dāng)節(jié)點由于 RepeatMessageRequest() 函數(shù)被調(diào)用,從常規(guī)運行狀態(tài)(NormalOperationState)或準(zhǔn)備睡眠狀態(tài)(ReadySleepState)進(jìn)入重復(fù)報文狀態(tài)(RepeatMessageState)時,需將其發(fā)送的網(wǎng)絡(luò)管理報文中的重復(fù)報文請求標(biāo)志位置 1,直到其離開重復(fù)報文狀態(tài)。
當(dāng)節(jié)點由于本地睡眠條件不再滿足(NetworkRequest),從總線睡眠模式(BusSleepMode)或準(zhǔn)備總線睡眠模式(PrepareBusSleepMode)進(jìn)入重復(fù)報文狀態(tài)(RepeatMessageState)時,需將主動喚醒網(wǎng)絡(luò)標(biāo)志位(ActiveWakeupBit)置 1,直到其進(jìn)入準(zhǔn)備睡眠狀態(tài)(ReadySleepState)。
當(dāng)節(jié)點由于接收到網(wǎng)絡(luò)管理報文而進(jìn)入重復(fù)報文狀態(tài)(RepeatMessageState),需將其發(fā)送的網(wǎng)絡(luò)管理報文中的主動喚醒網(wǎng)絡(luò)標(biāo)志位(ActiveWakeupBit)置 0。控制比特向量中未使用的位須 0。
Bit6:PN功能位
0x0:網(wǎng)絡(luò)管理不使用PN功能。
0x1:網(wǎng)絡(luò)管理報文中包含PNC信息。如果項目中,網(wǎng)絡(luò)管理要求使用PN功能,發(fā)送的網(wǎng)絡(luò)管理報文中,有PNC請求時,需要先置位PNI。接收節(jié)點會根據(jù)PNI情況決定網(wǎng)絡(luò)管理的處理流程。
CanNm_RepeatMessageRequest函數(shù)可以設(shè)置RMR位(RepeatMessageRequestBit)。
調(diào)用CanNm_RepeatMessageRequest函數(shù),需要在Normal Operation State或Ready Sleep State狀態(tài)下,其他節(jié)點在收到RMR位后,不需要設(shè)置RMR位。
發(fā)送節(jié)點: 主動調(diào)用CanNm_RepeatMessageRequest,發(fā)送時Repeat Message Request 置位
接收節(jié)點: 接收Repeat Message Request 位,進(jìn)入Repeat Message State狀態(tài), 不需要置Repeat Message Request 位。
用戶數(shù)據(jù)(Userdata)
在網(wǎng)絡(luò)管理報文中有6個字節(jié)的用戶數(shù)據(jù)(Userdata0~5),可以被應(yīng)用層讀取和寫入,用于傳輸用戶定義信息。
08
被動喚醒和主動喚醒時的狀態(tài)切換
被動喚醒:
處于休眠狀態(tài)的主板,在收到NM報文喚醒時,會從 Bus-Sleep 模式切換到Network 模式的Repeat state,進(jìn)行慢發(fā)NM報文,以 CanNmMsgCycleTime(例:200ms) 為周期,在Repeat Message Timer(例:1000ms)定時器到時時跳轉(zhuǎn)到 Ready state, 此時主板不會再發(fā)送NM報文,只會發(fā)送APP應(yīng)用報文。
主動喚醒:
處于休眠狀態(tài)的主板,在由主動喚醒源喚醒后,會從 Bus-Sleep 模式切換到Network 模式的Repeat state,進(jìn)行快發(fā)報文,以 CanNmImmediateNmCycleTime(例:20ms) 為周期,發(fā)送 CanNmImmediateNmTransmissions(例:10) 次,之后進(jìn)入慢發(fā)報文,以 CanNmMsgCycleTime(例:200ms) 為周期,在Repeat Message Timer(例:1000ms)定時器到時時跳轉(zhuǎn)到 Normal State,在此狀態(tài)會一直發(fā)NM報文和應(yīng)用報文,當(dāng)滿足休眠條件則切換到 Ready state,此時主板不會再發(fā)送NM報文,只會發(fā)送APP應(yīng)用報文。
其中被動喚醒時,只發(fā)送幾幀NM報文,意在告訴其他節(jié)點本節(jié)點已經(jīng)被喚醒。
09
常用函數(shù)接口
https://mp.weixin.qq.com/s/GyGCdNZu3_0E2ZN6KnD-EQ

10
Autosar網(wǎng)絡(luò)管理:CanNM網(wǎng)絡(luò)狀態(tài)變化都要告知ComM嗎?
http://www.360doc.com/content/23/0621/13/1085607639_1085607639.shtml
只有CanNM的Mode切換時,會通知到ComM,而State的切換屬于模塊的內(nèi)部狀態(tài)跳轉(zhuǎn),一般不會通知到其他模塊。所以,如果單純調(diào)用CanNm_NetworkRelease()接口,只是切換CanNM的State,沒有改變CanNM的Mode,不會通知到ComM,ComM也不會切換到COMM_SILENT_COMMUNICATION模式。
11
常用縮寫

來源:CSDN博主「up up day」
https://blog.csdn.net/m0_56208280/article/details/130533136
end

談思汽車媒體門戶

精品活動推薦




AutoSec系列沙龍

專業(yè)社群
部分入群專家來自:
新勢力車企:
特斯拉、理想、極氪、小米、零跑汽車、阿維塔汽車、智己汽車、小鵬、嵐圖汽車、蔚來汽車、吉祥汽車、賽力斯......
外資傳統(tǒng)主流車企代表:
大眾中國、大眾酷翼、奧迪汽車、寶馬、福特、戴姆勒-奔馳、通用、保時捷、沃爾沃、現(xiàn)代汽車、日產(chǎn)汽車、捷豹路虎、斯堪尼亞......
內(nèi)資傳統(tǒng)主流車企:
吉利汽車、上汽乘用車、長城汽車、上汽大眾、長安汽車、北京汽車、東風(fēng)汽車、廣汽、比亞迪、一汽集團(tuán)、一汽解放、東風(fēng)商用、上汽商用......
全球領(lǐng)先一級供應(yīng)商:
博世、大陸集團(tuán)、聯(lián)合汽車電子、安波福、采埃孚、科世達(dá)、舍弗勒、霍尼韋爾、大疆、日立、哈曼、華為、百度、聯(lián)想、聯(lián)發(fā)科、普瑞均勝、德賽西威、蜂巢轉(zhuǎn)向、均聯(lián)智行、武漢光庭、星紀(jì)魅族、中車集團(tuán)、濰柴集團(tuán)、地平線、紫光同芯、字節(jié)跳動、......
二級供應(yīng)商(500+以上):
中科數(shù)測、ETAS、BlackDuck、NXP、上海軟件中心、Deloitte、奇安信、為辰信安、云馳未來、信長城、澤鹿安全、紐創(chuàng)信安、復(fù)旦微電子、天融信、奇虎360、中汽中心、中國汽研、上海汽檢、加特蘭微電子、浙江大學(xué)......
人員占比

公司類型占比

文章
關(guān)于涉嫌仿冒AutoSec會議品牌的律師聲明
一文帶你了解智能汽車車載網(wǎng)絡(luò)通信安全架構(gòu)
網(wǎng)絡(luò)安全:TARA方法、工具與案例
汽車數(shù)據(jù)安全合規(guī)重點分析
淺析汽車芯片信息安全之安全啟動
域集中式架構(gòu)的汽車車載通信安全方案探究
系統(tǒng)安全架構(gòu)之車輛網(wǎng)絡(luò)安全架構(gòu)
車聯(lián)網(wǎng)中的隱私保護(hù)問題
智能網(wǎng)聯(lián)汽車網(wǎng)絡(luò)安全技術(shù)研究
AUTOSAR 信息安全框架和關(guān)鍵技術(shù)分析
AUTOSAR 信息安全機(jī)制有哪些?
信息安全的底層機(jī)制
汽車網(wǎng)絡(luò)安全
Autosar硬件安全模塊HSM的使用
首發(fā)!小米雷軍兩會上就汽車數(shù)據(jù)安全問題建言:關(guān)于構(gòu)建完善汽車數(shù)據(jù)安全管理體系的建議