AUTOSAR_SWS_EthernetDriver 中文翻译

文档编号:407 | 状态:Final | 发布于:AUTOSAR CP Release 4.4.0
所属标准:AUTOSAR Classic Platform | 文档责任方:AUTOSAR

本翻译覆盖原文档 1-81 页正文。原文为软件规范(SWS),定义 Ethernet Driver(以太网驱动)模块的 API、配置、错误处理——位于 MCAL 层。


1 引言与范围

Ethernet Driver(Eth)位于 MCAL 层,初始化并控制 Ethernet MAC 控制器。支持 100BASE-T1 / 1000BASE-T1 等车载 Ethernet PHY。提供帧收发、PHY 配置、时间戳(IEEE 1588 / 802.1AS)等服务。

2 缩略语

Eth / MAC / PHY / MII / GMII / RGMII / SGMII / TimeStamp / 1588 / 802.1AS / IRQ / DMA

3 相关文档

[1] AUTOSAR Layered Software Architecture
[2] AUTOSAR SWS BSW General
[3] AUTOSAR SWS Ethernet Interface
[4] AUTOSAR SRS Ethernet
[5] IEEE 802.1AS / IEEE 802.3 / IEEE 1588

4 约束与假设

Eth Driver 应:

5 依赖其他模块

Eth Driver 依赖:Dem(错误上报)/ MCU(时钟配置)/ Port(引脚复用)/ StbM(时间戳)。

6 功能规格

6.1 架构

Eth Driver 位于 MCAL 层,对下访问 MAC/PHY 寄存器,对上为 EthIf 提供 Eth_ControllerType、Eth_FrameType 等抽象。

6.2 初始化

Eth_Init 配置 MAC 控制器、PHY、中断、DMA;Eth_SetControllerMode 控制控制器状态(DOWN / ACTIVE / INIT / STANDBY / SLEEP)。

7 API 服务

7.1 初始化 / 关闭

void Eth_Init(const Eth_ConfigType* CfgPtr):初始化 Eth 驱动。
void Eth_DeInit(void):去初始化。

7.2 控制器模式

Std_ReturnType Eth_SetControllerMode(uint8 CtrlIdx, Eth_ModeType CtrlMode):设置控制器模式。
Std_ReturnType Eth_GetControllerMode(uint8 CtrlIdx, Eth_ModeType* CtrlModePtr):获取控制器模式。

7.3 PHY 配置

Std_ReturnType Eth_SetPhysAddr(uint8 CtrlIdx, const uint8* PhysAddrPtr):设置 MAC 地址。
void Eth_GetPhysAddr(uint8 CtrlIdx, uint8* PhysAddrPtr):获取 MAC 地址。
Std_ReturnType Eth_UpdatePhysAddrFilter(uint8 CtrlIdx, const uint8* PhysAddrPtr, Eth_FilterActionType Action):更新 MAC 过滤表。

7.4 帧传输 / 接收

Std_ReturnType Eth_Transmit(uint8 CtrlIdx, Eth_BufIdxType BufIdx, Eth_FrameType FrameType, uint16 Length, const uint8* DataPtr):发送帧。
void Eth_Receive(uint8 CtrlIdx, Eth_RxStatusType* RxStatusPtr):接收帧查询。
Std_ReturnType Eth_TxConfirmation(uint8 CtrlIdx):发送确认。
void Eth_GetCurrentTime(uint8 CtrlIdx, Eth_TimeStampType* TimeStampPtr):获取当前硬件时间。
void Eth_EnableEgressTimeStamp(uint8 CtrlIdx, Eth_BufIdxType BufIdx):使能出口时间戳。
void Eth_GetEgressTimeStamp(uint8 CtrlIdx, Eth_BufIdxType BufIdx, Eth_TimeStampType* TimeStampPtr):获取出口时间戳。
void Eth_GetIngressTimeStamp(uint8 CtrlIdx, Eth_DataType* DataPtr, Eth_TimeStampType* TimeStampPtr):获取入口时间戳。

7.5 状态 / 统计

Std_ReturnType Eth_GetCounterValues(uint8 CtrlIdx, Eth_CounterType* CounterPtr):获取统计计数器。
Std_ReturnType Eth_GetRxStats(uint8 CtrlIdx, Eth_RxStatsType* RxStatsPtr):获取接收统计。
Std_ReturnType Eth_GetTxStats(uint8 CtrlIdx, Eth_TxStatsType* TxStatsPtr):获取发送统计。
Std_ReturnType Eth_GetTxErrorCounterValues(uint8 CtrlIdx, Eth_TxErrorCounterValuesType* TxErrorCounterValuesPtr):获取发送错误计数。

8 配置

Eth 配置类:

9 错误处理

9.1 开发错误

ETH_E_UNINIT:模块未初始化。
ETH_E_PARAM_POINTER:参数指针为空。
ETH_E_PARAM:参数无效。
ETH_E_INV_CTRL_IDX:控制器索引无效。
ETH_E_INV_PARAM:参数组合无效。

9.2 运行时错误

ETH_E_BUSY:模块忙。
ETH_E_NO_BUFFER:无可用缓冲区。

9.3 扩展生产错误(上报 DEM)

ETH_E_ACCESS:硬件访问失败。
ETH_E_RX_FIFO_OVERFLOW:RX FIFO 溢出。
ETH_E_TX_FIFO_UNDERFLOW:TX FIFO 下溢。


校对记录

校对轮次:L1 自动校对(2026-06-13)