最近在學(xué)習(xí)AUTOSAR Network Management,所以記下詳細(xì)筆記,也分享一下學(xué)習(xí)過程。 有什么不對的地方還請大神指正。
概述 AUTOSAR CanNm是基于權(quán)利分散的直接網(wǎng)絡(luò)管理。每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的狀態(tài)只取決于該節(jié)點(diǎn)接收到和發(fā)送的NMPDUs。 AUTOSAR CanNM的核心思想主要?dú)w納為以下兩條: 1. 如果節(jié)點(diǎn)需要保持通信,則節(jié)點(diǎn)需要周期的發(fā)送NMPDUs,否則停止發(fā)送NMPDUs 2. 如果總線上的所有節(jié)點(diǎn)不需要使用總線,那么總線上過了一段時(shí)間沒有NMPDUs時(shí),則會(huì)進(jìn)入Bus-Sleep Mode。
工作模式和狀態(tài)
CanNm一共有三個(gè)工作模式 1. Network Mode 2. PrepareBus-Sleep Mode 3. Bus-Sleep Mode 模式的改變應(yīng)該通過回調(diào)函數(shù)通知上層。三種模式的切換關(guān)系見下圖:
下面單獨(dú)說每種模式
Network Mode Network Mode又包括三個(gè)內(nèi)部狀態(tài) 1. Repeat Message State
下圖為三種狀態(tài)的切換圖
Repeat Message State 這個(gè)模式被用來確保從Bus-Sleep or Prepare Bus-Sleep到Network Mode的節(jié)點(diǎn)被總線上面其他節(jié)點(diǎn)發(fā)現(xiàn)。這個(gè)狀態(tài)可以用來檢測總線上的節(jié)點(diǎn)。
Normal Operation State 這個(gè)狀態(tài)可以保持總線處于喚醒狀態(tài)。從Ready sleep state進(jìn)入這個(gè)狀態(tài)的時(shí)候應(yīng)該發(fā)送NMPDUs。
ReadySleep State 這個(gè)狀態(tài)是為了如果本節(jié)點(diǎn)已經(jīng)準(zhǔn)備釋放總線,而其他節(jié)點(diǎn)還需要使用總線的時(shí)候,在這個(gè)狀態(tài)下等待其他總線上的節(jié)點(diǎn)進(jìn)入Perpere Bus-Sleep Mode。進(jìn)入這個(gè)狀態(tài)之后,CanNm模塊應(yīng)該停止NMPDUs的傳送。
PrepareBus-Sleep Mode
這個(gè)狀態(tài)是為了等待總線上的所有節(jié)點(diǎn)能夠在進(jìn)入Bus-Sleep Mode之前,有時(shí)間停止節(jié)點(diǎn)的active狀態(tài)如清空隊(duì)列中為發(fā)送的報(bào)文。在Prepare Bus –Sleep Mode下,所有節(jié)點(diǎn)都靜默下來。 當(dāng)節(jié)點(diǎn)進(jìn)入PrepareBus Mode時(shí),應(yīng)該通知上層應(yīng)用。通過配置CANNM_WAIT_BUS_SLEEP_TIME參數(shù),可以改變節(jié)點(diǎn)在PrepareBus-Sleep Mode停留的時(shí)間,在這段時(shí)間之后節(jié)點(diǎn)將會(huì)進(jìn)入其他狀態(tài)。 在Prepare Bus-Sleep Mode下面接收到NMPDU或者被上層應(yīng)用請求通信時(shí),節(jié)點(diǎn)將進(jìn)入Network Mode中的Normal operation State。
Bus-SleepMode
Bus-Sleep Mode的目的是當(dāng)沒有消息被傳送的時(shí)候可以減少能量的消耗。在Bus-Sleep Mode下面,節(jié)點(diǎn)可以被喚醒(如本地喚醒源和CAN線喚醒源)。CANNM_TIMEOUT_TIME+CANNM_WAIT_BUS_SLEEP_TIME兩個(gè)參數(shù)在整個(gè)總線上面的節(jié)點(diǎn)都應(yīng)該時(shí)一樣的配置,保證了總線上的節(jié)點(diǎn)能夠統(tǒng)一的進(jìn)行休眠。 當(dāng)進(jìn)入Bus-Sleep Mode時(shí)候,應(yīng)該通知上層應(yīng)用。 在Bus-Sleep Mode下,如果成功接收到NMPDU,CAN NM模塊應(yīng)該調(diào)用Nm_NetworkStartIndication。 如果CanNm_PassiveStartUp被調(diào)用,則CAN NM模塊進(jìn)入Network Mode 中的Repeat Message State。 |
|