1. 簡介和功能概述
本文介紹瞭AUTOSAR基本軟件模塊以太網驅動程序(Ethernet Driver)的功能、API和配置。
在AUTOSAR分層軟件架構中,以太網驅動程序屬於微控制器抽象層(Microcontroller Abstraction Layer),或者更準確地說,屬於通信驅動程序(Communication Driver)。
這表明瞭以太網驅動程序的主要任務:
向上層以太網接口(Ethernet Interface)提供一個硬件獨立的接口,該接口由多個相等的控制器組成。該接口應適用於所有控制器。這樣,上層以太網接口可以通過統一的方式訪問底層總線系統。該接口提供瞭初始化、配置和數據傳輸功能。然而,以太網驅動程序的配置是總線特定的,因為它需要考慮到瞭通信控制器的特定特性。
單個以太網驅動程序(Ethernet Driver)模塊隻支持一種類型的控制器硬件,但可以支持多個相同類型的控制器。此外如果在托管模式(a managed mode),以太網驅動程序必須能夠與交換機驅動(Switch Driver)程序互相協作的。在這種情況下,可能需要對以太網幀進行特殊處理,以適應交換機設備。以太網驅動程序的前綴需要一個唯一的名稱空間。通過這個前綴以太網接口(Ethernet Interface)可以使用不同的以太網驅動程序來訪問不同的控制器類型。可以通過以太網接口的配置參數來決定使用哪個驅動程序訪問某個特定的控制器。
圖1.1描述瞭以太網堆棧的下半部分。一個以太網接口使用一個或多個以太網驅動程序訪問多個控制器。
註意:
以太網驅動程序是允許代碼模塊的通過目標代碼交付的(object code delivery),遵循one-fits-all的原則,即以太網接口(Ethernet Interface)的整個配置可以在不修改任何源代碼的情況下進行。因此,以太網驅動程序的配置可以在很大程度上無需對以太網驅動程序軟件有詳細的瞭解進行。
2. 首字母縮寫詞和縮寫詞
首字母縮寫詞和縮寫詞 | 含義 |
---|---|
EC | Ethernet controller |
Eth | Ethernet Driver (AUTOSAR BSW module) |
EthIf | Ethernet Interface (AUTOSAR BSW module) |
EthTrcv | Ethernet Transceiver Driver (AUTOSAR BSW module) |
ISR | Interrupt Service Routine |
MCG | Module Configuration Generator |
MII | Media Independent Interface (standardized Interface provided by Ethernet controllers to access Ethernet transceivers) |
TCP | Transmission Control Protocol |
UDP | User Datagram Protocol |
3. 相關的文檔
3.1. 輸入文檔
- List of Basic Software ModulesAUTOSAR_TR_BSWModuleList.pdf
- Layered Software ArchitectureAUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
- AUTOSAR General Requirements on Basic Software ModulesAUTOSAR_SRS_BSWGeneral.pdf
- Specification of CommunicationAUTOSAR_SWS_COM.pdf
- Requirements on Ethernet Support in AUTOSARAUTOSAR_SRS_Ethernet.pdf
- Specification of Ethernet InterfaceAUTOSAR_SWS_EthernetInterface.pdf
- Specification of Ethernet State ManagerAUTOSAR_SWS_EthernetStateManager.pdf
- Specification of Ethernet Transceiver DriverAUTOSAR_SWS_EthernetTransceiver.pdf
- Specification of Socket AdapterAUTOSAR_SWS_SocketAdapter.pdf
- Specification of UDP Network ManagementAUTOSAR_SWS_UDPNetworkManagement.pdf
- Specification of PDU RouterAUTOSAR_SWS_PDURouter.pdf
- BSW Scheduler SpecificationAUTOSAR_SWS_Scheduler.pdf
- Specification of ECU ConfigurationAUTOSAR_TPS_ECUConfiguration.pdf
- Specification of Memory MappingAUTOSAR_SWS_MemoryMapping.pdf
- Specification of Standard TypesAUTOSAR_SWS_StandardTypes.pdf
- Specification of Default Error TracerAUTOSAR_SWS_DefaultErrorTracer.pdf
- Specification of Diagnostics Event ManagerAUTOSAR_SWS_DiagnosticEventManager
- Specification of ECU State ManagerAUTOSAR_SWS_ECUStateManager.pdf
- General Specification of Basic Software ModulesAUTOSAR_SWS_BSWGeneral.pdf
3.2. 相關標準及規范
- IEEE 802.3-2006
- IEC 7498-1 The Basic Model, IEC Norm, 1994
- IETF RFC 2819
- IEEE Standard 802.1AS™- 30 of March 2011http://standards.ieee.org/getieee802/download/802.1AS-2011.pdf
3.3. 相關的規范
AUTOSAR提供瞭基礎軟件模塊[19](SWS BSW General)的通用規范,它也適用於以太網驅動程序。因此,AUTOSAR_SWS_BSWGeneral應該被認為是以太網驅動程序的附加和必需的規范。
4. 約束和假設
4.1. 限制
以太網驅動程序模塊隻能處理單個執行線程。執行本身不能被搶先執行。以太網驅動程序模塊也無法傳輸超過所使用控制器的可用緩沖區大小的數據。更長的數據必須使用Internet協議(IP)或傳輸控制協議(TCP)傳輸。
根據以太網硬件的不同,實現可能有必要在異步/同步行為方面偏離API規范。
4.2. 對汽車領域的適用性
以太網的基礎軟件模塊堆棧旨在用於需要高數據速率但不需要硬性的實時場景。當然它也可以用於要求較低的用例(即:低數據速率)。
5. 對其他模塊的依賴關系
本章節列出瞭與以太網驅動程序(Ethernet Driver)模塊交互的模塊。
5.1. 使用以太網驅動模塊的模塊:
- 以太網接口(EthIf)
- 以太網收發器驅動(EthTrcv)
5.2. 以太網驅動模塊需要使用的模塊:
- 基礎軟件調度器機制(BSW Scheduler mechanism),用於數據一致性和主函數處理。
5.3. 其他模塊相關模塊:
- 在某些系統上,以太網控制器可能與其他組件(如:MCU,Port)共享資源,並可能依賴於它們的配置。如果這些資源在其他模塊的范圍內(例如:PLL配置,內存映射等),以太網驅動模塊不負責配置這些組件,但需要它們的前期初始化。
6. 功能規范
6.1. 以太網基礎軟件堆棧(Ethernet BSW stack)
根據【圖7.1】所示,以太網基礎軟件模塊作為AUTOSAR分層軟件架構的一部分,也構成瞭分層軟件堆棧。圖7.1描述瞭以太網基礎軟件堆棧的基本結構。以太網接口模塊通過以太網驅動層訪問多個控制器,以太網驅動層可以由多個以太網驅動模塊組成。
此外,交換設備(Switch device)可能被連接到以太網驅動程序的專用控制器上。這個場景導致瞭交換機驅動程序和以太網驅動程序之間的額外交互【圖7.2】。以太網驅動程序要求交換機驅動程序進行特殊處理,以確保當前的以太網幀可以稍後在交換機中被管理。
6.1.1. 索引方案
以太網驅動程序的用戶使用如【圖7.3】所示的索引方案來識別控制器資源。
以太網驅動程序使用一個從零開始的索引來抽象上層軟件層的訪問。配置中的參數Eth_CtrlIdx對應於API中使用的參數CtrlIdx。
緩沖區索引(BufIdx)標識由以太網驅動程序API函數處理的以太網緩沖區。每個控制器的緩沖區由0到(n-1)的緩沖區索引標識,其中n是對應控制器處理的緩沖區的數量。緩沖區索引僅在元組(tuple)<**ctrlidx**, **bufidx**>內有效。BufIdx唯一標識用於以太網驅動程序的緩沖區。
6.2. Offloading
6.2.1. 協議校驗和的計算
對於傳輸,以太網控制器應根據以下配置使能計算協議校驗和(卸載)的硬件能力:
- 對於IPv4幀,如果EthCtrlEnableOffloadChecksumIPv4設置為TRUE。
- 對於ICMP幀,如果EthCtrlEnableOffloadChecksumICMP設置為TRUE。
- 對於TCP幀,如果EthCtrlEnableOffloadChecksumTCP設置為TRUE。
- 對於UDP幀,如果EthCtrlEnableOffloadChecksumUDP設置為TRUE。
在所有其他情況下,以太網控制器不應操作校驗和字段(checksum field)。
6.2.2. 丟棄幀
對於接收,以太網控制器根據以下配置使能丟棄協議校驗和不匹配的幀(卸載)的硬件能力:
- 對於IPv4幀,如果EthCtrlEnableOffloadChecksumIPv4設置為TRUE。
- 對於ICMP幀,如果EthCtrlEnableOffloadChecksumICMP設置為TRUE。
- 對於TCP幀,如果EthCtrlEnableOffloadChecksumTCP設置為TRUE。
- 對於UDP幀,如果EthCtrlEnableOffloadChecksumUDP設置為TRUE。在所有其他情況下,以太網控制器不應考慮協議校驗和字段的驗證。
6.3. 時間同步
全局時間接口可以用來實現時間同步功能(參見文檔[23])。
6.4. 發送數據
以下的情況,以太網軟件驅動應該調用EthIf_TxConfirmation函數, 並將結果設置為E_OK來表示傳輸成功:
- 從中斷例程(在中斷模式下)。
- 從輪詢模式下的Eth_TxConfirmation例程中(如果啟用瞭通知)。
以太網軟件驅動調用EthIf_TxConfirmation函數,並將結果設置為E_NOT_OK 來表示傳輸失敗。調用EthIf_TxConfirmation,並將結果設置為E_NOT_OK需要允許上層實現一個簡單的鎖定方案(simple locking scheme)。它可以依賴於這樣一個事實,每次調用Eth_Transmit時,EthIf_TxConfirmation將隨後被調用。
6.5. 接收數據
以下的情況,以太網軟件驅動應該調用EthIf_RxIndication來指示一個成功的接收:
- 從中斷例程(在中斷模式下)。
- 從Eth_Receive例程在輪詢模式下。
6.6. 交換機驅動程序管理API
以下函數需使用來通知交換機驅動程序,關於交換機管理需要的特殊處理(參見文檔AUTOSAR_SWS_EthernetInterface):
- EthSwt_EthRxProcessFrame()
- EthSwt_EthRxFinishedIndication()
- EthSwt_EthTxPrepareFrame()
- EthSwt_EthTxAdaptBufferLength()
- EthSwt_EthTxProcessFrame()
- EthSwt_EthTxFinishedIndication()
7. API規范
7.1. Eth_Init
void Eth_Init(
const Eth_ConfigType* CfgPtr )