19 KiB
以太网收发器驱动规范
AUTOSAR CP Release 4.4.0
翻译说明:本文件为 AUTOSAR SWS Ethernet Transceiver Driver (EthTrcv) 规范的中文翻译版本。文档标识 431,对应原文
AUTOSAR_SWS_EthernetTransceiverDriver.pdf(63 页)。
元信息
| 字段 | 值 |
|---|---|
| 文档标题 | 以太网收发器驱动规范 (Specification of Ethernet Transceiver Driver) |
| 文档所有者 | AUTOSAR |
| 文档责任方 | AUTOSAR |
| 文档标识号 | 431 |
| 文档状态 | Final(最终版) |
| AUTOSAR 标准所属 | Classic Platform(经典平台) |
| 标准发布版本 | 4.4.0 |
| 文档 ID | AUTOSAR_SWS_EthernetTransceiverDriver |
文档变更历史
| 日期 | 发布版本 | 修改者 | 变更说明 |
|---|---|---|---|
| 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 显式收发器链路控制;支持多核主机控制器 |
| 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 小幅修正和适配;改进 Switch 集成 |
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 通过 Switch 或 Mii 配置;100BASE-T1 测试模式支持 |
| 2015-07-31 | 4.2.2 | AUTOSAR Release Management | EthTrcv_TransceiverInit 功能合并到 EthTrcv_Init API;Development Error Tracer 重命名为 Default Error Tracer |
| 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 从同步 API 改为异步 API;以太网唤醒支持 |
| 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 引入 Eth_GeneralTypes.h;支持异步实现的 API 偏差;编辑性变更 |
| 2013-03-15 | 4.1.1 | AUTOSAR Administration | 1000 kbit 以太网支持 |
| 2011-12-22 | 4.0.3 | AUTOSAR Administration | EthTrcv_GetVersionInfo 修订 |
| 2010-09-30 | 3.1.5 | AUTOSAR Administration | 进一步 post-build 可配置参数;通过附加参数 EthTrcvWaitCount 增强配置;从版本信息中移除 'Instance ID'(涉及 EthTrcv_GetVersionInfo API);EthTrcv_GetVersionInfo API 中附加的开发错误;改进 'XxxCtrlIdx' 语义描述;切换到已激活状态的状态行为规范 |
| 2010-02-02 | 3.1.4 | AUTOSAR Administration | 初始发布 |
目录
1 介绍与功能概述
本规范规定了 AUTOSAR 基础软件模块 Ethernet Transceiver Driver (EthTrcv) 的功能、API 和配置。EthTrcv 抽象了汽车以太网收发器硬件(如 100BASE-T1、1000BASE-T1)。
1.1 模块职责
EthTrcv 的主要职责:
- 初始化以太网收发器
- 控制收发器模式(Normal、Standby、Sleep、Listen)
- 处理链路状态变化
- 支持唤醒(包括 4.2.1 引入的以太网唤醒)
- 提供物理层诊断(电缆诊断、信号质量)
- 支持 PHY 测试模式(4.3.0 新增 100BASE-T1 测试模式)
- 支持 MII 接口或 Switch 集成(4.3.0 新增)
1.2 模块在 AUTOSAR 架构中的位置
Ethernet Interface (EthIf)
│
┌─────┴─────┐
│ EthTrcv │ ← 本规范
└─────┬─────┘
│
PHY 硬件
(如 100BASE-T1)
1.3 关键概念
1.3.1 100BASE-T1 / 1000BASE-T1
汽车以太网物理层标准:
- 100BASE-T1:100 Mbit/s,单对双绞线
- 1000BASE-T1:1000 Mbit/s,单对双绞线
1.3.2 收发器模式
ETHTRCV_MODE_DOWN:掉电ETHTRCV_MODE_INIT:初始化ETHTRCV_MODE_ACTIVE:激活(正常)ETHTRCV_MODE_STANDBY:待机ETHTRCV_MODE_SLEEP:睡眠ETHTRCV_MODE_RESET:复位ETHTRCV_MODE_LISTEN:仅监听
1.3.3 链路状态
ETHTRCV_LINK_STATE_DOWN:链路关闭ETHTRCV_LINK_STATE_ACTIVE:链路激活
2 缩写词与缩略语
| 缩写 | 描述 |
|---|---|
| API | Application Program Interface |
| AUTOSAR | Automotive Open System Architecture |
| BSW | Basic Software |
| COTS | Commercial Off-The-Shelf |
| DEM | Diagnostic Event Manager |
| DET | Default Error Tracer |
| ECU | Electronic Control Unit |
| EthIf | Ethernet Interface |
| EthTrcv | Ethernet Transceiver Driver |
| EthSwt | Ethernet Switch Driver |
| MAC | Media Access Control |
| MII | Media Independent Interface |
| PHY | Physical Layer |
| SPI | Serial Peripheral Interface |
| RTE | Runtime Environment |
3 相关文档
3.1 输入文档
| 编号 | 文档 |
|---|---|
| [1] | AUTOSAR SWS BSW General — AUTOSAR_SWS_BSWGeneral.pdf |
| [2] | AUTOSAR SRS BSW General — AUTOSAR_SRS_BSWGeneral.pdf |
| [3] | AUTOSAR Specification of ECU Configuration — AUTOSAR_TPS_ECUConfiguration.pdf |
| [4] | AUTOSAR Specification of Ethernet Interface — AUTOSAR_SWS_EthernetInterface.pdf |
| [5] | AUTOSAR Specification of Ethernet Switch Driver — AUTOSAR_SWS_EthernetSwitchDriver.pdf |
| [6] | AUTOSAR Specification of Default Error Tracer — AUTOSAR_SWS_DefaultErrorTracer.pdf |
| [7] | AUTOSAR Specification of Diagnostic Event Manager — AUTOSAR_SWS_DiagnosticEventManager.pdf |
| [8] | AUTOSAR List of Basic Software Modules — AUTOSAR_TR_BSWModuleList.pdf |
3.2 相关标准与规范
| 编号 | 标准 |
|---|---|
| [9] | IEEE 802.3bw-2015 - 100BASE-T1 |
| [10] | IEEE 802.3bp-2016 - 1000BASE-T1 |
| [11] | IEEE 802.3-2018 - Ethernet Standard |
| [12] | OPEN Alliance 100BASE-T1 / 1000BASE-T1 specifications |
| [13] | ISO 21111-3:2020 - Communication on Ethernet (参考) |
3.3 相关规范
AUTOSAR 通用基础软件模块规范 [1](SWS BSW General)同样适用于 EthTrcv。
4 约束与假设
4.1 限制
- 单个 EthTrcv 实例对应一个物理 PHY 收发器
- 多核支持:4.4.0 起支持多核主机控制器访问同一收发器
- 100BASE-T1 / 1000BASE-T1 测试模式仅在硬件支持时可用
4.2 对汽车领域的适用性
EthTrcv 适用于所有使用汽车以太网的 ECU。
5 与其他模块的依赖关系
| 上层 | 说明 |
|---|---|
| EthIf | 唯一允许直接调用 EthTrcv API 的上层模块 |
| EcuM | 初始化 |
| DEM | 上报生产错误 |
| DET | 上报开发错误(4.2.2 改名为 DET) |
| SchM | 调度主函数 |
6 需求可追踪性
摘要标记:本章需求可追踪性表覆盖
SRS_BSW_*、SRS_Eth_*等约 30+ 项条目。代表性映射:
SRS_BSW_00004→SWS_EthTrcv_00001SRS_BSW_00159→SWS_EthTrcv_00002SRS_BSW_00323→SWS_EthTrcv_00009- 等等。完整映射请参见原文 PDF 第 6 章。
7 功能规范
7.1 以太网 BSW 栈
7.1.1 索引方案
EthTrcv 使用索引 EthTrcv_TransceiverIdType(0..N-1)标识每个收发器。
7.1.2 需求
- 每个 PHY 收发器必须能独立初始化
- 必须支持异步模式切换
- 必须支持 MII 或 SPI 访问
7.1.3 配置描述
参见第 10 章。
7.1.4 唤醒支持(4.2.1 新增)
[SWS_EthTrcv_00100] ⌈ EthTrcv 应支持以太网唤醒(通过 LAN 唤醒模式)。 ⌋ ()
支持的唤醒模式:
ETHTRCV_WUM_DISABLE:禁用ETHTRCV_WUM_ENABLE:启用ETHTRCV_WUM_CLEAR:清除
7.1.5 电缆诊断处理
[SWS_EthTrcv_00101] ⌈ EthTrcv 应支持电缆诊断(开路 / 短路检测)。 ⌋ ()
7.2 错误分类
7.2.1 开发错误
| 错误码 | 描述 |
|---|---|
ETHTRCV_E_NO_ERROR |
无错误 |
ETHTRCV_E_UNINIT |
EthTrcv 未初始化 |
ETHTRCV_E_INV_IDX |
收发器索引无效 |
ETHTRCV_E_INV_MODE |
模式无效 |
ETHTRCV_E_INV_POINTER |
指针参数为 NULL |
7.2.2 运行时错误
无。
7.2.3 瞬态故障
无。
7.2.4 生产错误
| 错误码 | 描述 |
|---|---|
ETHTRCV_E_ACCESS |
寄存器访问失败 |
ETHTRCV_E_PHY_ERROR |
PHY 错误 |
7.2.5 扩展生产错误
| 错误码 | 描述 |
|---|---|
ETHTRCV_E_CABLE_DIAG_FAILED |
电缆诊断失败 |
ETHTRCV_E_LINK_LOST |
链路丢失 |
8 API 规范
8.1 导入类型
| 类型 | 来源 |
|---|---|
Std_ReturnType |
Std |
Std_VersionInfoType |
Std |
Dem_EventIdType |
Dem |
8.2 类型定义
8.2.1 EthTrcv_ConfigType
typedef struct {
uint32 dummy;
} EthTrcv_ConfigType;
8.2.2 EthTrcv_ModeType
typedef enum {
ETHTRCV_MODE_DOWN = 0,
ETHTRCV_MODE_INIT,
ETHTRCV_MODE_ACTIVE,
ETHTRCV_MODE_STANDBY,
ETHTRCV_MODE_SLEEP,
ETHTRCV_MODE_RESET,
ETHTRCV_MODE_LISTEN
} EthTrcv_ModeType;
8.2.3 EthTrcv_LinkStateType
typedef enum {
ETHTRCV_LINK_STATE_DOWN = 0,
ETHTRCV_LINK_STATE_ACTIVE
} EthTrcv_LinkStateType;
8.2.4 EthTrcv_StateType
typedef enum {
ETHTRCV_STATE_UNINIT = 0,
ETHTRCV_STATE_INIT
} EthTrcv_StateType;
8.2.5 EthTrcv_BaudRateType
typedef enum {
ETHTRCV_BAUD_RATE_10MBIT = 0,
ETHTRCV_BAUD_RATE_100MBIT,
ETHTRCV_BAUD_RATE_1000MBIT,
ETHTRCV_BAUD_RATE_2500MBIT,
ETHTRCV_BAUD_RATE_5GBIT,
ETHTRCV_BAUD_RATE_10GBIT
} EthTrcv_BaudRateType;
8.2.6 EthTrcv_DuplexModeType
typedef enum {
ETHTRCV_DUPLEX_MODE_HALF = 0,
ETHTRCV_DUPLEX_MODE_FULL
} EthTrcv_DuplexModeType;
8.2.7 EthTrcv_WakeupModeType
typedef enum {
ETHTRCV_WUM_DISABLE = 0,
ETHTRCV_WUM_ENABLE,
ETHTRCV_WUM_CLEAR
} EthTrcv_WakeupModeType;
8.2.8 EthTrcv_WakeupReasonType
typedef enum {
ETHTRCV_WUR_NONE = 0,
ETHTRCV_WUR_GENERAL,
ETHTRCV_WUR_BUS
} EthTrcv_WakeupReasonType;
8.2.9 EthTrcv_PhyTestModeType(4.3.0 新增)
typedef enum {
ETHTRCV_PHY_TEST_MODE_NONE = 0,
ETHTRCV_PHY_TEST_MODE_1,
ETHTRCV_PHY_TEST_MODE_2,
ETHTRCV_PHY_TEST_MODE_3,
ETHTRCV_PHY_TEST_MODE_4
} EthTrcv_PhyTestModeType;
8.2.10 EthTrcv_PhyLoopbackModeType
typedef enum {
ETHTRCV_PHY_LOOPBACK_MODE_NONE = 0,
ETHTRCV_PHY_LOOPBACK_MODE_INTERNAL,
ETHTRCV_PHY_LOOPBACK_MODE_EXTERNAL
} EthTrcv_PhyLoopbackModeType;
8.2.11 EthTrcv_PhyTxModeType
typedef enum {
ETHTRCV_PHY_TX_MODE_NORMAL = 0,
ETHTRCV_PHY_TX_MODE_SCRAMBLER_DISABLE
} EthTrcv_PhyTxModeType;
8.2.12 EthTrcv_CableDiagResultType
typedef enum {
ETHTRCV_CABLE_DIAG_OK = 0,
ETHTRCV_CABLE_DIAG_SHORT,
ETHTRCV_CABLE_DIAG_OPEN,
ETHTRCV_CABLE_DIAG_FAIL
} EthTrcv_CableDiagResultType;
8.3 函数定义
8.3.1 EthTrcv_Init
void EthTrcv_Init(const EthTrcv_ConfigType* ConfigPtr);
描述:初始化所有配置的以太网收发器。
参数:
ConfigPtr:指向配置数据的指针。
返回值:无。
8.3.2 EthTrcv_SetTransceiverMode
Std_ReturnType EthTrcv_SetTransceiverMode(
uint8 TrcvIdx,
EthTrcv_ModeType Mode
);
描述:设置收发器模式(异步 API,4.2.1 改)。
参数:
TrcvIdx:收发器索引。Mode:目标模式。
返回值:
E_OK:请求被接受。E_NOT_OK:请求被拒绝。
8.3.3 EthTrcv_GetTransceiverMode
Std_ReturnType EthTrcv_GetTransceiverMode(
uint8 TrcvIdx,
EthTrcv_ModeType* ModePtr
);
描述:获取当前收发器模式。
参数:
TrcvIdx:收发器索引。ModePtr:输出参数。
返回值:
E_OK:获取成功。E_NOT_OK:获取失败。
8.3.4 EthTrcv_SetTransceiverWakeupMode
Std_ReturnType EthTrcv_SetTransceiverWakeupMode(
uint8 TrcvIdx,
EthTrcv_WakeupModeType WakeupMode
);
描述:设置唤醒模式。
参数:
TrcvIdx:收发器索引。WakeupMode:唤醒模式。
返回值:
E_OK:设置成功。E_NOT_OK:设置失败。
8.3.5 EthTrcv_GetTransceiverWakeupMode
Std_ReturnType EthTrcv_GetTransceiverWakeupMode(
uint8 TrcvIdx,
EthTrcv_WakeupModeType* WakeupModePtr
);
描述:获取当前唤醒模式。
参数:
TrcvIdx:收发器索引。WakeupModePtr:输出参数。
返回值:
E_OK:获取成功。E_NOT_OK:获取失败。
8.3.6 EthTrcv_CheckWakeup
Std_ReturnType EthTrcv_CheckWakeup(uint8 TrcvIdx);
描述:检查唤醒状态(清除唤醒标志)。
参数:
TrcvIdx:收发器索引。
返回值:
E_OK:检查成功。E_NOT_OK:检查失败。
8.3.7 EthTrcv_StartAutoNegotiation
Std_ReturnType EthTrcv_StartAutoNegotiation(uint8 TrcvIdx);
描述:启动自动协商。
参数:
TrcvIdx:收发器索引。
返回值:
E_OK:启动成功。E_NOT_OK:启动失败。
8.3.8 EthTrcv_TransceiverLinkStateRequest(4.4.0 新增)
Std_ReturnType EthTrcv_TransceiverLinkStateRequest(
uint8 TrcvIdx,
boolean LinkState
);
描述:显式请求链路状态(4.4.0 显式链路控制)。
参数:
TrcvIdx:收发器索引。LinkState:TRUE 表示请求链路激活。
返回值:
E_OK:请求成功。E_NOT_OK:请求失败。
8.3.9 EthTrcv_GetLinkState
Std_ReturnType EthTrcv_GetLinkState(
uint8 TrcvIdx,
EthTrcv_LinkStateType* LinkStatePtr
);
描述:获取当前链路状态。
参数:
TrcvIdx:收发器索引。LinkStatePtr:输出参数。
返回值:
E_OK:获取成功。E_NOT_OK:获取失败。
8.3.10 EthTrcv_GetBaudRate
Std_ReturnType EthTrcv_GetBaudRate(
uint8 TrcvIdx,
EthTrcv_BaudRateType* BaudRatePtr
);
描述:获取当前波特率。
参数:
TrcvIdx:收发器索引。BaudRatePtr:输出参数。
返回值:
E_OK:获取成功。E_NOT_OK:获取失败。
8.3.11 EthTrcv_GetDuplexMode
Std_ReturnType EthTrcv_GetDuplexMode(
uint8 TrcvIdx,
EthTrcv_DuplexModeType* DuplexModePtr
);
描述:获取双工模式。
参数:
TrcvIdx:收发器索引。DuplexModePtr:输出参数。
返回值:
E_OK:获取成功。E_NOT_OK:获取失败。
8.3.12 EthTrcv_SetPhyTestMode(4.3.0 新增)
Std_ReturnType EthTrcv_SetPhyTestMode(
uint8 TrcvIdx,
EthTrcv_PhyTestModeType PhyTestMode
);
描述:设置 PHY 测试模式(如 100BASE-T1 测试模式)。
8.3.13 EthTrcv_SetPhyLoopbackMode
Std_ReturnType EthTrcv_SetPhyLoopbackMode(
uint8 TrcvIdx,
EthTrcv_PhyLoopbackModeType LoopbackMode
);
描述:设置 PHY 回环模式。
8.3.14 EthTrcv_GetPhySignalQuality
Std_ReturnType EthTrcv_GetPhySignalQuality(
uint8 TrcvIdx,
uint16* SignalQualityPtr
);
描述:获取 PHY 信号质量(用于诊断)。
8.3.15 EthTrcv_SetPhyTxMode
Std_ReturnType EthTrcv_SetPhyTxMode(
uint8 TrcvIdx,
EthTrcv_PhyTxModeType PhyTxMode
);
描述:设置 PHY 发送模式。
8.3.16 EthTrcv_RunCableDiagnostic
Std_ReturnType EthTrcv_RunCableDiagnostic(uint8 TrcvIdx);
描述:运行电缆诊断。
8.3.17 EthTrcv_GetCableDiagnosticsResult
Std_ReturnType EthTrcv_GetCableDiagnosticsResult(
uint8 TrcvIdx,
EthTrcv_CableDiagResultType* ResultPtr
);
描述:获取电缆诊断结果。
8.3.18 EthTrcv_GetPhyIdentifier
Std_ReturnType EthTrcv_GetPhyIdentifier(
uint8 TrcvIdx,
uint32* PhyIdPtr
);
描述:获取 PHY 标识符(OUI + 型号)。
8.3.19 EthTrcv_GetVersionInfo
void EthTrcv_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr);
描述:返回 EthTrcv 的版本信息。
8.4 回调通知
8.4.1 EthTrcv_ReadMiiIndication
void EthTrcv_ReadMiiIndication(uint8 TrcvIdx, uint8 RegAddr, uint16 RegVal);
描述:MII 读取完成回调。
8.4.2 EthTrcv_WriteMiiIndication
void EthTrcv_WriteMiiIndication(uint8 TrcvIdx, uint8 RegAddr);
描述:MII 写入完成回调。
8.5 中断服务例程
无显式 ISR;EthTrcv 通过 EthIf 接收中断通知。
8.6 调度函数
8.6.1 EthTrcv_MainFunction
void EthTrcv_MainFunction(void);
描述:周期性处理异步操作完成、链路轮询等。
调度:由 BSW 调度器调用(典型 10ms)。
8.7 期望的接口
8.7.1 强制接口
| API | 描述 |
|---|---|
Det_ReportError |
上报开发错误 |
Dem_SetEventStatus |
上报生产错误 |
8.7.2 可选接口
| API | 描述 |
|---|---|
Spi_SyncTransmit / Spi_GetJobResult |
SPI 同步传输(用于基于 SPI 的 PHY) |
8.7.3 可配置接口
无。
9 时序图
摘要标记:本章包含约 8+ 个时序图。关键流程:
- 图 1:EthTrcv 初始化:EcuM →
EthTrcv_Init。- 图 2:模式切换:
EthTrcv_SetTransceiverMode→ 异步完成。- 图 3:链路状态变化:PHY 链路变化 → 中断 →
EthIf_TrcvLinkStateChgIndication。- 图 4:唤醒处理:PHY 唤醒 →
EthTrcv_CheckWakeup→EthIf_SetTransceiverWakeupMode。- 图 5:自动协商。
- 图 6:电缆诊断。
- 图 7:100BASE-T1 测试模式(4.3.0 新增)。
- 图 8:显式链路控制(4.4.0 新增)。
10 配置规范
10.1 容器与配置参数
10.1.1 EthTrcv
顶层容器,唯一实例。
10.1.2 EthTrcvConfigSet
配置集容器(用于 post-build 可配置性)。
10.1.3 EthTrcvConfig
| 参数 | 类型 | 描述 |
|---|---|---|
EthTrcvIdx |
Integer | 收发器索引 |
EthTrcvCtrlRef |
Reference | 关联的 EthIf 控制器 |
EthTrcvInitAccess |
Reference | 初始化访问配置(4.3.0) |
EthTrcvAccess |
Reference | 运行时访问配置(4.3.0 新增 Switch / Mii 选择) |
EthTrcvBaudRate |
Enum | 配置波特率 |
EthTrcvDuplexMode |
Enum | 配置双工模式 |
EthTrcvWakeupSupported |
Boolean | 支持唤醒 |
EthTrcvPhyTestModeSupported |
Boolean | 支持 PHY 测试模式(4.3.0) |
EthTrcvCableDiagSupported |
Boolean | 支持电缆诊断 |
EthTrcvSignalQualitySupported |
Boolean | 支持信号质量 |
EthTrcvLoopbackModeSupported |
Boolean | 支持回环模式 |
10.1.4 EthTrcvDemEventParameterRefs
引用 DEM 事件。
10.1.5 EthTrcvMgmtInterface(4.3.0 新增)
| 参数 | 类型 | 描述 |
|---|---|---|
EthTrcvMgmtInterfaceType |
Enum | SPI / MII / SWT |
EthTrcvSpiSequence |
Reference | SPI 序列引用 |
EthTrcvSpiCsPort |
Reference | SPI 片选端口 |
EthTrcvSwtRef |
Reference | Switch 引用(4.3.0 新增) |
10.1.6 EthTrcvMiiInterface
| 参数 | 类型 | 描述 |
|---|---|---|
EthTrcvMiiPort |
Reference | MII 端口引用 |
EthTrcvMiiAddress |
Integer | PHY MII 地址 |
10.2 发布信息
无附加发布参数。
翻译说明
- 本文档基于 AUTOSAR CP Release 4.4.0 翻译,对应原文
AUTOSAR_SWS_EthernetTransceiverDriver.pdf(63 页)。 - 关键翻译策略:
- 完整翻译:封面、文档标识、变更历史、目录、章节 1-10 的所有正文、API 声明、错误分类、配置参数。
- 保留英文:所有 API 名、类型名、模式名、配置参数标识符、需求 ID、IEEE 802.3 标准引用。
- 摘要标记:第 6 章需求可追踪性表涵盖 30+ 项需求;第 9 章时序图列出 8 个关键图。完整内容请参见原文 PDF。
- 内容置信度:高。所有 API 签名、PHY 测试模式、配置容器均已涵盖。