AUTOSAR 網絡管理接口(Nm)詳解
目錄
- 1. 概述
- 1.1. 網絡管理接口的作用
- 1.2. 網絡管理接口的特點
- 2. 網絡管理接口架構
- 2.1. 架構概覽
- 2.2. 模塊交互關系
- 3. 網絡管理狀態機
- 3.1. 狀態定義
- 3.2. 狀態轉換
- 4. 協調算法
- 4.1. 協調關閉流程
- 4.2. 同步點機制
- 4.3. 協調關閉中斷處理
- 5. 網絡管理交互序列
- 5.1. 網絡啟動流程
- 5.2. 網絡關閉流程
- 5.3. 協調關閉流程
- 6. 配置模型
- 6.1. 配置結構
- 6.2. 配置參數
- 7. 總結
- 7.1. 網絡管理接口的優勢
- 7.2. 應用場景
1. 概述
1.1. 網絡管理接口的作用
AUTOSAR網絡管理接口(Nm)是AUTOSAR通信棧中的一個關鍵組件,它為不同總線類型的網絡管理提供了統一的接口。網絡管理接口的主要作用包括:
- 提供統一的API接口,屏蔽不同總線類型網絡管理的差異
- 管理網絡的啟動和關閉過程
- 協調多個網絡的關閉過程,確保系統有序地進入低功耗模式
- 支持網絡喚醒功能,使系統能夠從低功耗模式恢復
1.2. 網絡管理接口的特點
網絡管理接口具有以下特點:
- 通用性:支持多種總線類型,包括CAN、FlexRay、以太網等
- 可配置性:提供豐富的配置選項,滿足不同應用場景的需求
- 協調功能:支持多網絡協調關閉,確保系統有序進入低功耗模式
- 狀態管理:提供完整的網絡狀態管理機制
- 可擴展性:支持通過CDD(Complex Device Driver)擴展支持其他網絡管理協議
2. 網絡管理接口架構
2.1. 架構概覽
AUTOSAR網絡管理接口位于通信管理(ComM)和總線特定網絡管理模塊(如CanNm、FrNm等)之間,作為一個通用接口層,提供統一的API。
2.2. 模塊交互關系
網絡管理接口與其他模塊的交互關系如下:
-
向上接口:
- 向ComM提供網絡狀態通知和網絡管理服務
- 接收來自ComM的網絡請求和釋放命令
-
向下接口:
- 調用總線特定網絡管理模塊(CanNm、FrNm、UdpNm、J1939Nm等)的API
- 接收來自總線特定網絡管理模塊的狀態通知
-
橫向接口:
- 支持通過CDD擴展其他網絡管理協議(如OSEK NM)
網絡管理接口通過這種分層架構,實現了對不同總線類型網絡管理的統一抽象,簡化了上層應用的開發。
3. 網絡管理狀態機
3.1. 狀態定義
網絡管理接口定義了一個狀態機來管理網絡狀態。狀態機包含以下狀態:
網絡管理狀態機包含以下主要狀態:
-
NM_STATE_BUS_SLEEP
:- 總線睡眠狀態,網絡處于低功耗模式
- 此狀態下無通信活動
- 系統初始化后默認進入此狀態
-
NM_STATE_PREPARE_BUS_SLEEP
:- 準備總線睡眠狀態
- 等待進入睡眠模式的超時
- 可被網絡請求或接收到的NM消息中斷
-
NM_STATE_READY_SLEEP
:- 準備睡眠狀態
- 節點已準備好進入睡眠,但等待其他節點也準備好
-
NM_STATE_NORMAL_OPERATION
:- 正常運行狀態
- 網絡完全激活,支持正常通信
-
NM_STATE_REPEAT_MESSAGE
:- 重復消息狀態
- 節點重復發送NM消息,確保網絡激活
-
NM_STATE_SYNCHRONIZE
:- 同步狀態
- 用于網絡同步過程
3.2. 狀態轉換
狀態機的主要轉換包括:
-
網絡啟動轉換:
- 從
NM_STATE_BUS_SLEEP
到NM_STATE_REPEAT_MESSAGE
:通過Nm_NetworkRequest
或被動喚醒觸發 - 從
NM_STATE_BUS_SLEEP
到NM_STATE_NORMAL_OPERATION
:通過Nm_PassiveStartUp
觸發
- 從
-
網絡關閉轉換:
- 從
NM_STATE_NORMAL_OPERATION
到NM_STATE_READY_SLEEP
:通過Nm_NetworkRelease
且所有節點準備睡眠觸發 - 從
NM_STATE_READY_SLEEP
到NM_STATE_PREPARE_BUS_SLEEP
:當所有節點準備睡眠時觸發 - 從
NM_STATE_PREPARE_BUS_SLEEP
到NM_STATE_BUS_SLEEP
:超時后觸發
- 從
-
中斷關閉轉換:
- 從
NM_STATE_PREPARE_BUS_SLEEP
到NM_STATE_REPEAT_MESSAGE
:通過Nm_NetworkRequest
或接收到NM消息觸發 - 從
NM_STATE_READY_SLEEP
到NM_STATE_REPEAT_MESSAGE
:通過Nm_NetworkRequest
觸發 - 從
NM_STATE_READY_SLEEP
到NM_STATE_NORMAL_OPERATION
:接收到無睡眠指示的NM消息觸發
- 從
-
其他轉換:
- 從
NM_STATE_NORMAL_OPERATION
到NM_STATE_REPEAT_MESSAGE
:通過Nm_RepeatMessageRequest
觸發 - 從
NM_STATE_REPEAT_MESSAGE
到NM_STATE_NORMAL_OPERATION
:重復消息完成后觸發 - 從
NM_STATE_SYNCHRONIZE
到NM_STATE_NORMAL_OPERATION
:同步完成后觸發
- 從
4. 協調算法
4.1. 協調關閉流程
網絡管理接口提供了協調關閉功能,用于協調多個網絡的關閉過程,確保系統有序地進入低功耗模式。
協調關閉流程的主要步驟包括:
-
觸發協調關閉:
- ComM請求網絡釋放,調用
Nm_NetworkRelease
- Nm檢查是否為協調網絡
- ComM請求網絡釋放,調用
-
計算全局協調時間:
- 全局協調時間 = 所有協調網絡中最大的關閉時間
- 確保所有網絡有足夠的時間完成關閉過程
-
同步點處理:
- 如果配置為使用同步點,等待同步網絡的同步點
- 同步點通過
Nm_SynchronizationPoint
回調函數通知 - 如果未配置使用同步點,立即開始協調關閉
-
并行關閉處理:
- 啟動協調關閉定時器
- 并行處理多個網絡的關閉流程
- 每個網絡等待全局協調時間
- 所有網絡同時進入準備睡眠狀態
-
完成關閉:
- 所有網絡進入總線睡眠狀態
- 系統進入低功耗模式
4.2. 同步點機制
同步點機制用于確保協調關閉過程的同步性,特別是在處理非確定性總線時。同步點的主要特點包括:
-
同步網絡配置:
- 每個協調集群只能配置一個網絡作為同步網絡
- 同步網絡通過
NmSynchronizingNetwork
參數配置
-
同步點通知:
- 同步網絡在適當的時間點調用
Nm_SynchronizationPoint
回調 - 回調函數通知協調器開始協調關閉過程
- 同步網絡在適當的時間點調用
-
同步用例:
- 同步命令:所有網絡同時收到關閉命令
- 同步啟動:協調關閉過程同時啟動
- 同步網絡睡眠:所有網絡同時進入睡眠狀態
4.3. 協調關閉中斷處理
協調關閉過程可能會被網絡喚醒中斷。中斷處理的主要步驟包括:
-
檢測喚醒:
- 檢查是否發生網絡喚醒事件
- 喚醒事件可能來自外部喚醒或協調喚醒
-
中斷處理:
- 如果發生喚醒,中斷協調關閉流程
- 重新激活所有協調網絡
- 恢復正常通信
-
繼續關閉:
- 如果未發生喚醒,繼續協調關閉流程
- 完成網絡關閉過程
5. 網絡管理交互序列
5.1. 網絡啟動流程
網絡啟動流程的主要步驟包括:
-
啟動請求:
- ComM調用
Nm_NetworkRequest
請求啟動網絡 - Nm接收請求并處理
- ComM調用
-
總線特定處理:
- Nm調用相應的總線特定網絡管理模塊(如
CanNm_NetworkRequest
) - 總線特定模塊發送NM消息激活網絡
- Nm調用相應的總線特定網絡管理模塊(如
-
狀態通知:
- 總線特定模塊進入重復消息狀態
- 通過
Nm_NetworkMode
回調通知網絡已激活 - Nm將通知轉發給ComM(
ComM_Nm_NetworkMode
)
5.2. 網絡關閉流程
網絡關閉流程的主要步驟包括:
-
關閉請求:
- ComM調用
Nm_NetworkRelease
請求關閉網絡 - Nm接收請求并處理
- ComM調用
-
總線特定處理:
- Nm調用相應的總線特定網絡管理模塊(如
CanNm_NetworkRelease
) - 總線特定模塊設置睡眠指示位
- 發送帶睡眠指示的NM消息
- Nm調用相應的總線特定網絡管理模塊(如
-
準備睡眠:
- 總線特定模塊等待所有節點準備睡眠
- 通過
Nm_PrepareBusSleepMode
回調通知準備進入睡眠模式 - Nm將通知轉發給ComM(
ComM_Nm_PrepareBusSleepMode
)
-
進入睡眠:
- 總線特定模塊等待超時
- 通過
Nm_BusSleepMode
回調通知已進入睡眠模式 - Nm將通知轉發給ComM(
ComM_Nm_BusSleepMode
)
5.3. 協調關閉流程
協調關閉流程的主要步驟包括:
-
協調關閉請求:
- ComM對多個通道調用
Nm_NetworkRelease
- Nm計算全局協調時間
- ComM對多個通道調用
-
并行處理:
- Nm對多個通道調用總線特定的NetworkRelease函數
- 總線特定模塊等待全局協調時間
-
同步通知:
- 所有通道同時通過回調函數通知狀態變化
- 包括
PrepareBusSleepMode
和BusSleepMode
通知 - Nm將通知轉發給ComM
-
完成關閉:
- 所有網絡同時進入總線睡眠狀態
- 系統進入低功耗模式
6. 配置模型
6.1. 配置結構
網絡管理接口的配置模型定義了如何配置網絡管理功能。
配置模型的主要結構包括:
-
Nm
:- 頂層配置容器
- 包含
NmGeneral
、NmGlobalConfig
和多個NmChannelConfig
-
NmGeneralType
:- 通用配置參數
- 包括錯誤檢測、版本信息API和主函數周期
-
NmGlobalConfigType
:- 全局配置參數
- 包括主函數周期時間、全局協調時間和協調同步支持
-
NmChannelConfigType
:- 通道配置參數
- 每個通道對應一個網絡接口
- 可配置為不同的總線類型和功能
-
NmCoordinationSyncSupportType
:- 協調同步支持配置
- 用于配置網絡協調功能
- 包括協調集群索引、活動協調器標志和同步網絡標志
-
NmBusNmType
:- 總線類型枚舉
- 支持CAN、FlexRay、UDP、J1939和本地NM
6.2. 配置參數
網絡管理接口的主要配置參數包括:
-
通用參數:
NmDevErrorDetect
:是否啟用開發錯誤檢測NmVersionInfoApi
:是否支持版本信息APINmMainFunctionPeriod
:主函數周期時間
-
全局參數:
NmCycletimeMainFunction
:主函數調用周期NmGlobalCoordinatorTime
:全局協調時間NmCoordinationSynchronizationSupport
:是否支持協調同步
-
通道參數:
NmChannelId
:通道IDNmBusType
:總線類型(CAN、FlexRay、UDP、J1939或本地NM)NmNodeDetectionEnabled
:是否啟用節點檢測NmNodeIdEnabled
:是否啟用節點IDNmRepeatMessageSupport
:是否支持重復消息NmUserDataSupport
:是否支持用戶數據NmComUserDataSupport
:是否支持COM用戶數據NmPduRxIndicationEnabled
:是否啟用PDU接收指示NmRemoteSleepIndEnabled
:是否啟用遠程睡眠指示NmBusSynchronizationEnabled
:是否啟用總線同步NmCoordinationSupport
:是否支持協調NmStateChangeIndEnabled
:是否啟用狀態變化指示NmCarWakeUpRxEnabled
:是否啟用車輛喚醒接收
-
協調同步參數:
NmCoordClusterIndex
:協調集群索引NmActiveCoordinator
:是否為活動協調器NmSynchronizingNetwork
:是否為同步網絡
7. 總結
7.1. 網絡管理接口的優勢
AUTOSAR網絡管理接口具有以下優勢:
- 統一接口:提供統一的API,簡化上層應用開發
- 可配置性:豐富的配置選項,滿足不同應用場景需求
- 協調功能:支持多網絡協調關閉,確保系統有序進入低功耗模式
- 可擴展性:支持通過CDD擴展其他網絡管理協議
- 標準化:符合AUTOSAR標準,確保不同供應商組件的互操作性
7.2. 應用場景
網絡管理接口適用于以下應用場景:
-
多網絡ECU:
- 管理多個網絡接口的ECU
- 協調多個網絡的關閉過程
-
低功耗管理:
- 需要精確控制網絡進入和退出低功耗模式的系統
- 支持部分網絡喚醒功能
-
網關應用:
- 連接多個網絡的網關ECU
- 協調不同網絡的狀態
-
分布式系統:
- 多ECU分布式系統
- 需要協調多個ECU的網絡狀態