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