共同點:
1. 都屬於直接網絡管理(以下都是以直接網絡管理為例,autosar可以不是直接網絡管理)。
2. 網絡管理的目的都是協調各節點同步進入休眠及喚醒(主要是休眠)。
3. 都依靠特定的網絡管理CAN報文,每個節點的網絡管理ID都不一樣。
4. 喚醒方法相同,第一個喚醒的節點發送網絡管理幀即同時喚醒其它節點。
不同點:
1. 喚醒幀類型不一樣:
網絡喚醒后,OSEK要求節點發出的第一幀必須是Alive類型,不能是Ring, Limphome等。
AutoSar只要求是網絡管理幀就行,條件寬松。
2. 休眠的同步算法不一樣:
OSEK網絡管理使用令牌環機制,令牌從網絡地址低的節點傳到網絡地址高的節點,如果沒有更高的節點,就傳給最低地址節點。令牌環根據ECU的網絡地址建立。每個ECU都會接受網絡管理消息,只有和目的地址相同的一個節點才會得到令牌。
喚醒后建立邏輯環過程:
1) 控制器喚醒后想參與網絡的節點會先發Alive報文申請加入邏輯環。
2)邏輯環建成后,各節點按順序發Ring報文向后續節點傳遞“令牌”。
同步休眠過程:
1)如果邏輯環中有節點想休眠,就設置Ring報文中的Sleep.Ind指示位。
2)當邏輯環中所有的節點都設置了Sleep.Ind指示位,也意味着任何節點接收到所有其它節點的Sleep.Ind指示位。
3)邏輯環中所有的節點設置Sleep.Ack指示位
4)任何節點接收到所有其它的節點的Sleep.Ack指示位
5)所有節點同步進入等待睡眠狀態
6)tWaitBusSleep時間內沒有收到喚醒時間,所有節點同步進入睡眠狀態。
AutoSar基於分布式策略,每個節點根據通信系統中發送或者接收到的NM消息來執行自給自足的網絡活動。NM消息通過廣播發送,所有網絡中的所有節點都可以接收到。接收到NM消息表示發送這個NM消息的節點傾向保持網絡工作模式(NETWORK MODE)。如果有節點准備好進入總線睡眠模式 (BUS SLEEP MODE),它就停止發送NM消息,但是只要它還能夠接收到從其他節點發來的NM消息,它就延遲到總線睡眠模式的變遷。最終,在一定的時限內,由於不再接收到NM消息,每個節點都啟動到總線睡眠模式的變遷。如果網絡中的任何節點需要總線通信,它可以通過發送NM消息使網絡從來總線睡眠模式中喚醒。概括如下:
1) 每個網絡節點如果想保持總線通信,就會一直發送周期性的NM消息;如果它不再需要保持總線通信,它就不再發送NM消息。2) 如果總線通信已經被釋放,並且在配置的一段時間內沒有發送或者接收到NM消息,則執行到Bus-Sleep模式的轉移。
2. PDU結構不一樣
OSEK網絡幀PDU包括自己地址,目標地址(下一個令牌環目標),命令狀態,用戶選擇數據。而AutoSar網絡幀PDU只包括自己地址,少量控制信息,用戶選擇數據。內容簡單的多。
小結:
1. OSEK同步休眠時刻是所有節點都發送Ring請求休眠幀,且收到其它節點的Ring確認休眠幀。而AutoSar的同步休眠時刻是所有節點都停發NM幀,且不能收到其它節點的NM幀。比較而言,AutoSar要簡單一些。
2. OSEK令牌環中有一個節點異常,其它節點就要重新建立環才能維持正常網絡狀態,策略比較復雜。而AutoSar網絡管理中,一個節點異常時不影響其它節點的網絡狀態。比較而言,AutoSar要簡單一些。