正文
正如我們了解的CanIf模塊一樣,作為CAN收發器,CAN控制器的統一上層ECU抽象,能夠讓我們實現CanIf上層的應用模塊與底層硬件解耦,大大增加了軟件的可移植性。
針對車載以太網而言也是同樣的道理,AUTOSAR組織按照同樣的方法論實現了車載以太網協議棧的軟件架構分布,其中EthIf與CanIf作用與地位相當,都是為了實現底層硬件如以太網控制器與以太網收發器的上層抽象,便于軟硬件解耦,大大提高了軟件的可復用度。
接下來將從AUTOSAR EthIf模塊的層次關系,主體功能以及常用函數接口三個方面展開給大家進行講解。
模塊層次關系
按照AUTOSAR標準文檔規范,有關EthIf模塊在整個軟件架構的具體位置描述如下圖1所示:
圖1 EthIf與以太網協議棧關系
如上圖所示,可以得出如下幾個基本結論:
一個以太網協議棧中可以存在多家供應商的以太網控制器,同時針對每家供應商的控制器進行單獨控制,互不影響;
同一供應商的以太網控制器可以存在多個,但使用的以太網控制器驅動可以僅使用同一套;
上述三家不同供應商的以太網驅動作為標準AUTOSAR MCAL的一部分,能夠完全實現與底層硬件的解耦;
以太網控制器關系
針對多家供應商以太網控制器并存的情況,AUTOSAR EthIf模塊基于該種情況來實現了統一管理與實現,能夠大大提高同一驅動的復用效率。
如下圖2所示,明確表示出了針對以太網控制器不同的前提下EthIf軟件模塊與以太網控制器驅動兩者如何進行Mapping的關系。
通過分析發現,它們兩者之間具備如下的索引Mapping 關系,該Mapping關系將能夠保證EthIf模塊能夠唯一,準確的控制各個控制器模塊,具體的Mapping規則如下:
EthIf 軟件模塊針對每一個以太網控制器在其內部進行全局唯一的編號索引,索引從0開始,如EthIf_CtrlIdx所表示的編號所示,全局唯一;
針對同一類型的以太網控制器,對應的以太網驅動在其軟件內部模塊進行從0開始的索引編號,如下圖具備兩個相同類型的以太網控制器,因此索引編號分別為0與1,與EthIf模塊的全局唯一索引并不沖突;
針對不同類型的以太網控制器,其對應的驅動模塊在其內部對應的索引也應該從0開始,無論是否并存其他類型的以太網驅動;
圖2 EthIf模塊與以太網控制器關系
以太網收發器關系
如下圖3所示,以太網收發器與EthIf模塊存在如下相應的Mapping關系,具體可以總結為如下幾點:
同一類型的以太網收發器可以使用同一個以太網收發器驅動(簡稱Phy驅動);
不同類型的以太網收發器應采用不同的以太網收發器驅動;
圖3 EthIf模塊與以太網收發器驅動關系
如下圖4所示,對照以太網控制器與EthIf的關系,同理可以看出以太網收發器與EthIf之間的index Mapping關系:
在以太網收發器驅動如果存在多個相同類型的收發器,應當在其內部按照從0開始進行編號表示其唯一性;
圖3 以太網收發器編號關系
以太網Switch關系
如下圖4所示為以太網Switch與EthIf之間的Index關系:
針對相同類型以太網網關都使用同一驅動;
同一以太網網關內部的Port也會按照index從0開始計數,不同以太網網關內部的Port編號彼此獨立,互不干擾;
圖4 以太網Switch編號關系
模塊主體功能
對于AUTOSAR標準中的EthIf模塊作為底層硬件驅動的抽象層,具備如下幾個基本功能:
完成通信初始化功能,為數據收發創造基礎條件;
具備數據發送功能,提供接口給到上層應用來實現數據的正常發送;
具備數據接收功能,提供接口給到上層應用來實現數據的正常接收;
具備底層Phy Link狀態變化管理功能,能夠及時監控底層Phy的狀態;
接下來將從EthIf模塊的上述四個基本功能展開進行講述,讓大家進一步了解EthIf模塊的基本工作原理。
通信初始化功能
如下圖5所示,描述了EthIf與底層驅動建立通信的必要前提,即需要通過調用EthIf_Init函數來實現Eth控制器與Eth收發器的初始化;
圖5 Eth硬件初始化過程
如下圖6所示描述了EthSM,EthIf,Eth,EthTrcv四者之間的關系,EthSM通過調用EthIf模塊的函數EthIf_SetControllerMode來實現以太網控制器的初始化,同時Eth模塊將通過回調函數將是否初始化成功的標志告知EthSM模塊。
緊接著EthSM將調用EthIf模塊的函數EthIf_SetTransceiverMode函數來實現Eth收發器的初始化,Eth收發器通過回調函數將初始化是否成功的標志告知EthSM模塊;
圖6 EthIf模塊通信初始化過程
數據發送功能
EthIf模塊的數據發送功能分為兩者模式,一種是Polling模式,另外一種就是Interrupt模式,一般而言都優先采用中斷模式來滿足系統實時性要求。
如下圖7為Polling模式,在Polling模式中可以看到在EthIf_MainfunctionTx函數中會去輪詢是否發送成功的標志,這個也是Polling模式的典型特征。
Polling模式
圖7 EthIf數據發送Polling模式
Interrupt模式
如下圖8所示為以太網數據發送的中斷模式,中斷模式相比Polling模式可以看出并沒有使用到EthIf_MainfunctionTx函數,而是使用Eth模塊的中斷函數來確認發送是否成功。
圖8 EthIf模塊數據發送中斷模式
數據接收功能
同理相比數據發送功能,EthIf模塊的數據接收功能也可以分為Polling模式與中斷模式兩種,如下圖9所示為EthIf模塊的數據接收Polling模式。
如下圖9所示,如果EthIf模塊數據接收采用Polling模式,那么就需要使用到EthIf_MainfunctionRx函數,在該函數中去調用EthIf_RxIndication來告知上層數據已成功被接收,使用該模式會大大降低數據接收效率,一般接收優先采用中斷模式。
Polling模式
圖9 EthIf模塊數據接收Polling模式
Interrupt模式
如下圖10所示為EthIf模塊的數據接收中斷功能,在該模式中可以看到通過Eth模塊通過中斷函數來進而告知上層數據已被接收。
圖10 EthIf模塊數據接收中斷模式
Link狀態變化管理功能
如下圖11所示,描述了在EthIf_MainfunctionRx函數中通過調用EthTrcv模塊的EthTrcv_GetLinkState來告知上層應用收發器罪行的Link狀態。
圖11 EthIf模塊Link狀態變化監控
VLAN支持
EthIf模塊必須支持VLAN功能,該模式將會將VLAN歸為虛擬控制器這一類,以太網驅動以及以太網收發器將僅針對真實的控制器與收發器,不考慮VLAN這一特性。
如果沒有有效的VLAN ID設置,那么虛擬控制器將表示沒有打上標簽的VLAN,同時EthIf模塊將使用Eth 驅動提供的Buffer來支持VLAN功能。
Wake up支持
EthIf模塊須通過配置EthIfWakeUpSupport來實現,同時Wakeup有效的前提是底層的以太網收發器(Phy)需要支持休眠喚醒功能才行。
常用函數接口
為了便于大家調試方便,小T將EthIf模塊常用的函數總結歸納如下:
圖12 常用函數接口說明
審核編輯:劉清
-
AUTOSAR
+關注
關注
10文章
363瀏覽量
21769 -
ecu
+關注
關注
14文章
892瀏覽量
54716 -
CAN收發器
+關注
關注
3文章
166瀏覽量
25718 -
車載以太網
+關注
關注
18文章
226瀏覽量
23069
原文標題:車載以太網基礎篇之EthIf
文章出處:【微信號:智能汽車電子與軟件,微信公眾號:智能汽車電子與軟件】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論