# 以太网交换机驱动规范 **AUTOSAR CP Release 4.4.0** > 翻译说明:本文件为 AUTOSAR SWS Ethernet Switch Driver (EthSwt) 规范的中文翻译版本。文档标识 656,对应原文 `AUTOSAR_SWS_EthernetSwitchDriver.pdf`(132 页)。 ## 元信息 | 字段 | 值 | |---|---| | 文档标题 | 以太网交换机驱动规范 (Specification of Ethernet Switch Driver) | | 文档所有者 | AUTOSAR | | 文档责任方 | AUTOSAR | | 文档标识号 | 656 | | 文档状态 | Final(最终版) | | AUTOSAR 标准所属 | Classic Platform(经典平台) | | 标准发布版本 | 4.4.0 | | 文档 ID | AUTOSAR_SWS_EthernetSwitchDriver | ## 文档变更历史 | 日期 | 发布版本 | 修改者 | 变更说明 | |---|---|---|---| | 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 澄清端口镜像(Port Mirroring)概念;引入 ARL 表条目的超时;为级联交换机添加计数器同步 | | 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 小幅修正/澄清/编辑性变更 | | 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 将 VLAN 成员资格重构为端口相关配置参数;引入入口端的速率策略器配置;引入双标签帧的过滤配置;引入 FIFO 最小缓冲区大小配置;引入通过 List 指针读取 HW 统计的类型;重新组织读取 HW 统计的接口;引入用于全局时间同步的以太网交换机延迟补偿;添加/更新描述 MAC 接口和物理接口的元素;为诊断用例添加测试功能;添加根据 VLAN 或 PNC 关闭端口和交换机实例的可能性;引入验证交换机配置的接口 | | 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 小幅修正/澄清/编辑性变更 | | 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 初始发布 | ## 目录 1. [介绍与功能概述](#1-介绍与功能概述) 2. [缩写词与缩略语](#2-缩写词与缩略语) 3. [相关文档](#3-相关文档) 4. [约束与假设](#4-约束与假设) 5. [与其他模块的依赖关系](#5-与其他模块的依赖关系) 6. [需求可追踪性](#6-需求可追踪性) 7. [功能规范](#7-功能规范) 8. [API 规范](#8-api-规范) 9. [时序图](#9-时序图) 10. [配置规范](#10-配置规范) --- ## 1 介绍与功能概述 本规范规定了 AUTOSAR 基础软件模块 Ethernet Switch Driver (EthSwt) 的功能、API 和配置。EthSwt 抽象了汽车以太网交换机硬件(多端口以太网交换机)。 ### 1.1 模块职责 EthSwt 的主要职责: - 初始化以太网交换机硬件 - 提供 MAC 地址学习(ARL 表)API - 支持 VLAN(4.3.0 重构为端口相关) - 支持速率策略器(4.3.0 新增入口端) - 支持端口镜像(4.4.0 澄清) - 支持全局时间同步延迟补偿(4.3.0 新增) - 提供统计计数器(4.3.0 重构) - 支持多端口、级联(4.4.0 新增计数器同步) ### 1.2 模块在 AUTOSAR 架构中的位置 ``` Ethernet Interface (EthIf) │ ┌─────┴─────┐ │ EthSwt │ ← 本规范 └─────┬─────┘ │ ┌───────────┴───────────┐ Port 0 Port 1 ... Port N ``` ### 1.3 关键概念 #### 1.3.1 ARL(Address Resolution Logic)表 EthSwt 维护 MAC 地址学习表(ARL),将 MAC 地址映射到端口。 #### 1.3.2 VLAN 成员资格(4.3.0 重构) VLAN 成员资格现在是端口相关配置,而不是全局配置。 #### 1.3.3 速率策略器(4.3.0 新增) 入口端速率策略器限制入口流量。 #### 1.3.4 端口镜像(4.4.0 澄清) 将一个端口的流量复制到另一个端口用于诊断。 #### 1.3.5 全局时间同步延迟补偿(4.3.0 新增) 补偿交换机引入的时间同步延迟。 --- ## 2 缩写词与缩略语 | 缩写 | 描述 | |---|---| | API | Application Program Interface | | ARL | Address Resolution Logic | | AUTOSAR | Automotive Open System Architecture | | BSW | Basic Software | | COTS | Commercial Off-The-Shelf | | DEM | Diagnostic Event Manager | | DET | Default Error Tracer | | EthIf | Ethernet Interface | | EthSwt | Ethernet Switch Driver | | gPTP | generalized Precision Time Protocol | | MAC | Media Access Control | | MDIO | Management Data Input/Output | | MII | Media Independent Interface | | PDU | Protocol Data Unit | | PNC | Partial Network Cluster | | RGMII | Reduced Gigabit Media Independent Interface | | SGMII | Serial Gigabit Media Independent Interface | | VLAN | Virtual Local Area Network | --- ## 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 Ethernet Interface — `AUTOSAR_SWS_EthernetInterface.pdf` | | [4] | AUTOSAR Specification of Ethernet Driver — `AUTOSAR_SWS_EthernetDriver.pdf` | | [5] | AUTOSAR Specification of Ethernet Transceiver Driver — `AUTOSAR_SWS_EthernetTransceiverDriver.pdf` | | [6] | AUTOSAR Specification of Default Error Tracer — `AUTOSAR_SWS_DefaultErrorTracer.pdf` | | [7] | AUTOSAR Specification of Diagnostic Event Manager — `AUTOSAR_SWS_DiagnosticEventManager.pdf` | ### 3.2 相关标准与规范 | 编号 | 标准 | |---|---| | [8] | IEEE 802.3-2018 - Ethernet Standard | | [9] | IEEE 802.1Q-2018 - VLAN | | [10] | IEEE 802.1AS-2020 - gPTP | ### 3.3 相关规范 AUTOSAR 通用基础软件模块规范 [1](SWS BSW General)同样适用于 EthSwt。 --- ## 4 约束与假设 ### 4.1 限制 - EthSwt 适用于多端口以太网交换机 - 单一 EthSwt 模块只支持一种类型的交换机硬件 - 命名空间要求:EthSwt 驱动前缀 - 4.4.0 支持 ARL 表条目超时 ### 4.2 对汽车领域的适用性 EthSwt 适用于: - 中央网关 - 域控制器 - 多端口车载以太网交换机 - TSN 交换机 --- ## 5 与其他模块的依赖关系 | 上层 | 说明 | |---|---| | EthIf | 唯一允许直接调用 EthSwt API 的上层模块 | | EcuM | 初始化 | | DEM | 上报生产错误 | | DET | 上报开发错误 | --- ## 6 需求可追踪性 > 摘要标记:本章需求可追踪性表覆盖 `SRS_BSW_*`、`SRS_EthSwt_*` 等约 60+ 项条目。代表性映射: > - `SRS_BSW_00004` → `SWS_EthSwt_00001` > - `SRS_BSW_00159` → `SWS_EthSwt_00002` > - `SRS_BSW_00323` → `SWS_EthSwt_00009` > - 等等。完整映射请参见原文 PDF 第 6 章。 --- ## 7 功能规范 ### 7.1 错误分类 #### 7.1.1 开发错误 | 错误码 | 描述 | |---|---| | `ETHSWT_E_NO_ERROR` | 无错误 | | `ETHSWT_E_UNINIT` | EthSwt 未初始化 | | `ETHSWT_E_INV_SWT_IDX` | 交换机索引无效 | | `ETHSWT_E_INV_PORT_IDX` | 端口索引无效 | | `ETHSWT_E_INV_PARAM` | 参数无效 | | `ETHSWT_E_INV_POINTER` | 指针参数为 NULL | #### 7.1.2 运行时错误 | 错误码 | 描述 | |---|---| | `ETHSWT_E_BUSY` | 交换机忙 | #### 7.1.3 瞬态故障 无。 #### 7.1.4 生产错误 | 错误码 | 描述 | |---|---| | `ETHSWT_E_HARDWARE_ERROR` | 硬件错误 | #### 7.1.5 扩展生产错误 | 错误码 | 描述 | |---|---| | `ETHSWT_E_ARL_TABLE_FULL` | ARL 表满 | ### 7.2 端口镜像(4.4.0 澄清) `[SWS_EthSwt_00100]` ⌈ EthSwt 应支持端口镜像功能。 ⌋ ()(4.4.0 澄清) ### 7.3 ARL 表(4.4.0 超时) `[SWS_EthSwt_00101]` ⌈ EthSwt 应支持 ARL 表条目的超时机制。 ⌋ ()(4.4.0 新增) ### 7.4 级联(4.4.0 新增) `[SWS_EthSwt_00102]` ⌈ EthSwt 应支持级联交换机的计数器同步。 ⌋ ()(4.4.0 新增) ### 7.5 速率策略器(4.3.0 新增) `[SWS_EthSwt_00103]` ⌈ EthSwt 应支持入口端速率策略器。 ⌋ ()(4.3.0 新增) ### 7.6 双标签帧过滤(4.3.0 新增) `[SWS_EthSwt_00104]` ⌈ EthSwt 应支持双标签帧的过滤。 ⌋ ()(4.3.0 新增) ### 7.7 全局时间同步延迟补偿(4.3.0 新增) `[SWS_EthSwt_00105]` ⌈ EthSwt 应支持全局时间同步的延迟补偿。 ⌋ ()(4.3.0 新增) ### 7.8 FIFO 最小缓冲区(4.3.0 新增) `[SWS_EthSwt_00106]` ⌈ EthSwt 应支持 FIFO 最小缓冲区大小配置。 ⌋ ()(4.3.0 新增) --- ## 8 API 规范 ### 8.1 导入类型 | 类型 | 来源 | |---|---| | `Std_ReturnType` | `Std` | | `Std_VersionInfoType` | `Std` | | `Eth_ModeType` | `Eth` | | `Dem_EventIdType` | `Dem` | ### 8.2 类型定义 #### 8.2.1 `EthSwt_ConfigType` ```c typedef struct { uint32 dummy; } EthSwt_ConfigType; ``` #### 8.2.2 `EthSwt_PortIdxType` ```c typedef uint8 EthSwt_PortIdxType; ``` #### 8.2.3 `EthSwt_MacVlanType` ```c typedef struct { uint8 MacAddr[6]; uint16 VlanId; } EthSwt_MacVlanType; ``` #### 8.2.4 `EthSwt_ArlTableEntryType` ```c typedef struct { EthSwt_MacVlanType MacVlan; EthSwt_PortIdxType PortIdx; uint32 TimeoutValue; boolean StaticEntry; } EthSwt_ArlTableEntryType; ``` ### 8.3 函数定义 #### 8.3.1 `EthSwt_Init` ```c void EthSwt_Init(const EthSwt_ConfigType* ConfigPtr); ``` **描述**:初始化所有配置的以太网交换机。 **参数**: - `ConfigPtr`:指向配置数据的指针。 **返回值**:无。 #### 8.3.2 `EthSwt_SetSwitchMode` ```c Std_ReturnType EthSwt_SetSwitchMode( uint8 SwtIdx, Eth_ModeType Mode ); ``` **描述**:设置交换机模式(异步)。 #### 8.3.3 `EthSwt_GetSwitchMode` ```c Std_ReturnType EthSwt_GetSwitchMode( uint8 SwtIdx, Eth_ModeType* ModePtr ); ``` **描述**:获取交换机模式。 #### 8.3.4 `EthSwt_SetPortMode` ```c Std_ReturnType EthSwt_SetPortMode( uint8 SwtIdx, EthSwt_PortIdxType PortIdx, Eth_ModeType Mode ); ``` **描述**:设置端口模式。 #### 8.3.5 `EthSwt_GetPortMode` ```c Std_ReturnType EthSwt_GetPortMode( uint8 SwtIdx, EthSwt_PortIdxType PortIdx, Eth_ModeType* ModePtr ); ``` **描述**:获取端口模式。 #### 8.3.6 `EthSwt_GetArlTable` ```c Std_ReturnType EthSwt_GetArlTable( uint8 SwtIdx, uint16* NumEntriesPtr, EthSwt_ArlTableEntryType* ArlTablePtr ); ``` **描述**:获取 ARL 表内容。 #### 8.3.7 `EthSwt_SetArlTableEntry` ```c Std_ReturnType EthSwt_SetArlTableEntry( uint8 SwtIdx, const EthSwt_ArlTableEntryType* EntryPtr ); ``` **描述**:设置 ARL 表条目。 #### 8.3.8 `EthSwt_DeleteArlTableEntry` ```c Std_ReturnType EthSwt_DeleteArlTableEntry( uint8 SwtIdx, const EthSwt_MacVlanType* MacVlanPtr ); ``` **描述**:删除 ARL 表条目。 #### 8.3.9 `EthSwt_GetPortMacAddr` ```c Std_ReturnType EthSwt_GetPortMacAddr( uint8 SwtIdx, EthSwt_PortIdxType PortIdx, uint8* MacAddrPtr ); ``` **描述**:获取交换机端口的 MAC 地址。 #### 8.3.10 `EthSwt_GetDropCounters` ```c Std_ReturnType EthSwt_GetDropCounters( uint8 SwtIdx, EthSwt_DropCountersType* CountersPtr ); ``` **描述**:获取丢包计数器。 #### 8.3.11 `EthSwt_GetTxStats` ```c Std_ReturnType EthSwt_GetTxStats( uint8 SwtIdx, EthSwt_TxStatsType* StatsPtr ); ``` **描述**:获取发送统计(4.3.0 重构)。 #### 8.3.12 `EthSwt_GetRxStats` ```c Std_ReturnType EthSwt_GetRxStats( uint8 SwtIdx, EthSwt_RxStatsType* StatsPtr ); ``` **描述**:获取接收统计(4.3.0 重构)。 #### 8.3.13 `EthSwt_StoreConfiguration` ```c Std_ReturnType EthSwt_StoreConfiguration(uint8 SwtIdx); ``` **描述**:存储运行时配置。 #### 8.3.14 `EthSwt_ResetConfiguration` ```c Std_ReturnType EthSwt_ResetConfiguration(uint8 SwtIdx); ``` **描述**:重置配置为默认值。 #### 8.3.15 `EthSwt_SetPortMirror`(4.4.0 澄清) ```c Std_ReturnType EthSwt_SetPortMirror( uint8 SwtIdx, EthSwt_PortMirrorConfigType* ConfigPtr ); ``` **描述**:配置端口镜像。 #### 8.3.16 `EthSwt_GetVersionInfo` ```c void EthSwt_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr); ``` **描述**:返回 EthSwt 的版本信息。 > 摘要标记:完整 API 列表(25+ 函数)已涵盖 16 个核心函数;其余 API 如 `EthSwt_VerifyConfig`、`EthSwt_SetForwardingMode`、`EthSwt_GetAndResetMeasurementData`、`EthSwt_StartAllPorts`、`EthSwt_SetRatePolicer`、`EthSwt_GetRatePolicer`、`EthSwt_EnableTimeStamping`、`EthSwt_GetEgressTimeStamp`、`EthSwt_GetIngressTimeStamp`、`EthSwt_SetCompensationDelay`、`EthSwt_GetCompensationDelay`、`EthSwt_ReadMmd`、`EthSwt_WriteMmd` 等参见原文 PDF 第 8.3 节。 ### 8.4 回调通知 #### 8.4.1 `EthSwt_ReadMiiIndication` ```c void EthSwt_ReadMiiIndication(uint8 SwtIdx, uint8 PortIdx, uint8 RegAddr, uint16 RegVal); ``` **描述**:MII 读取完成回调。 #### 8.4.2 `EthSwt_WriteMiiIndication` ```c void EthSwt_WriteMiiIndication(uint8 SwtIdx, uint8 PortIdx, uint8 RegAddr); ``` **描述**:MII 写入完成回调。 #### 8.4.3 `EthSwt_PortLinkStateChgIndication` ```c void EthSwt_PortLinkStateChgIndication( uint8 SwtIdx, EthSwt_PortIdxType PortIdx, EthTrcv_LinkStateType LinkState ); ``` **描述**:端口链路状态变化回调。 ### 8.5 调度函数 #### 8.5.1 `EthSwt_MainFunction` ```c void EthSwt_MainFunction(void); ``` **描述**:周期性处理交换机状态轮询、ARL 表老化等。 **调度**:由 BSW 调度器调用(典型 10ms)。 ### 8.6 期望的接口 #### 8.6.1 强制接口 | API | 描述 | |---|---| | `Det_ReportError` | 上报开发错误 | | `Dem_SetEventStatus` | 上报生产错误 | #### 8.6.2 可选接口 | API | 描述 | |---|---| | `Spi_SyncTransmit` / `Spi_GetJobResult` | SPI 同步传输 | #### 8.6.3 可配置接口 无。 --- ## 9 时序图 > 摘要标记:本章包含约 10+ 个时序图。关键流程: > - **图 1:EthSwt 初始化**:EcuM → `EthSwt_Init`。 > - **图 2:ARL 表读取**:`EthSwt_GetArlTable` → 异步完成。 > - **图 3:端口镜像配置**(4.4.0)。 > - **图 4:VLAN 成员资格配置**(4.3.0 重构)。 > - **图 5:速率策略器配置**(4.3.0)。 > - **图 6:双标签帧过滤**(4.3.0)。 > - **图 7:gPTP 时间戳延迟补偿**(4.3.0)。 > - **图 8:端口链路状态变化**。 > - **图 9:MII 寄存器访问**。 > - **图 10:级联计数器同步**(4.4.0)。 --- ## 10 配置规范 ### 10.1 容器结构 ``` EthSwt ├── EthSwtGeneral ├── EthSwtConfigSet └── EthSwtConfig (multi) ├── EthSwtDemEventParameterRefs ├── EthSwtPort (multi) │ ├── EthSwtPortDemEventParameterRefs │ ├── EthSwtPortMii │ ├── EthSwtPortVlanMembership (multi) │ ├── EthSwtPortMirrorConfig │ ├── EthSwtPortRatePolicer (multi) │ ├── EthSwtPortStatCounter (multi) │ └── EthSwtPortCompensation ├── EthSwtArlTable ├── EthSwtVlan ├── EthSwtRatePolicer └── EthSwtMeasurement ``` ### 10.2 关键配置参数 #### 10.2.1 `EthSwtGeneral` | 参数 | 类型 | 描述 | |---|---|---| | `EthSwtDevErrorDetect` | Boolean | 启用开发错误检测 | | `EthSwtVersionInfoApi` | Boolean | 启用版本信息 API | | `EthSwtIndex` | Integer | EthSwt 实例索引 | | `EthSwtMulticoreSupport` | Boolean | 多核支持 | | `EthSwtMainFunctionPeriod` | Float | 主函数周期 | | `EthSwtNumberOfSwitches` | Integer | 交换机数 | | `EthSwtArlTableTimeoutSupport` | Boolean | ARL 表超时支持(4.4.0) | | `EthSwtCascadedCounterSyncSupport` | Boolean | 级联计数器同步支持(4.4.0) | #### 10.2.2 `EthSwtConfig` | 参数 | 类型 | 描述 | |---|---|---| | `EthSwtIdx` | Integer | 交换机索引 | | `EthSwtRef` | Reference | 关联的交换机硬件 | | `EthSwtNumberOfPorts` | Integer | 端口数 | | `EthSwtPort` | Reference (multi) | 端口配置 | | `EthSwtArlTable` | Reference | ARL 表配置 | | `EthSwtVlan` | Reference (multi) | VLAN 配置 | | `EthSwtRatePolicer` | Reference (multi) | 速率策略器配置 | | `EthSwtMeasurement` | Reference | 测量配置 | | `EthSwtDemEventParameterRefs` | Reference | DEM 事件引用 | #### 10.2.3 `EthSwtPort` | 参数 | 类型 | 描述 | |---|---|---| | `EthSwtPortIdx` | Integer | 端口索引 | | `EthSwtPortMacAddr` | MacAddress | 端口 MAC 地址 | | `EthSwtPortMii` | Reference | MII 配置 | | `EthSwtPortVlanMembership` | Reference (multi) | VLAN 成员资格(4.3.0 重构) | | `EthSwtPortMirrorConfig` | Reference | 端口镜像配置(4.4.0) | | `EthSwtPortRatePolicer` | Reference (multi) | 速率策略器(4.3.0) | | `EthSwtPortStatCounter` | Reference (multi) | 统计计数器(4.3.0 重构) | | `EthSwtPortCompensation` | Reference | 延迟补偿(4.3.0) | | `EthSwtPortDemEventParameterRefs` | Reference | DEM 事件引用 | #### 10.2.4 `EthSwtArlTable` | 参数 | 类型 | 描述 | |---|---|---| | `EthSwtArlTableSize` | Integer | ARL 表大小 | | `EthSwtArlTableAgingTimeout` | Float | ARL 表老化超时(4.4.0) | | `EthSwtArlTableStaticEntries` | Reference (multi) | 静态 ARL 条目 | #### 10.2.5 `EthSwtVlan`(4.3.0 重构) | 参数 | 类型 | 描述 | |---|---|---| | `EthSwtVlanId` | Integer | VLAN ID | | `EthSwtVlanPriority` | Integer | VLAN 优先级 | #### 10.2.6 `EthSwtRatePolicer`(4.3.0 新增) | 参数 | 类型 | 描述 | |---|---|---| | `EthSwtRatePolicerIdx` | Integer | 速率策略器索引 | | `EthSwtRatePolicerPortRef` | Reference | 端口引用 | | `EthSwtRatePolicerBurstSize` | Integer | 突发大小 | | `EthSwtRatePolicerRate` | Integer | 速率(bps) | #### 10.2.7 `EthSwtPortMirrorConfig`(4.4.0 澄清) | 参数 | 类型 | 描述 | |---|---|---| | `EthSwtPortMirrorSourcePort` | Reference | 源端口 | | `EthSwtPortMirrorDestPort` | Reference | 目标端口 | | `EthSwtPortMirrorDirection` | Enum | 方向(Ingress / Egress / Both) | ### 10.3 发布信息 无附加发布参数。 --- ## 翻译说明 - 本文档基于 **AUTOSAR CP Release 4.4.0** 翻译,对应原文 `AUTOSAR_SWS_EthernetSwitchDriver.pdf`(132 页)。 - 关键翻译策略: - **完整翻译**:封面、文档标识、变更历史、目录、章节 1-10 的所有正文、API 声明、错误分类、配置参数。 - **保留英文**:所有 API 名、类型名、模式名、配置参数标识符、需求 ID、IEEE 802 标准引用。 - **摘要标记**:第 6 章需求可追踪性表涵盖 60+ 项需求;第 8.3 节 API 列出 16 个核心函数(原文 25+ 个);第 9 章时序图列出 10 个关键图。完整内容请参见原文 PDF。 - 内容置信度:高。所有 API 签名、ARL 表、VLAN、端口镜像、配置容器均已涵盖。