Files
autosar_standard_spec_v4.4/Communication/AUTOSAR_SWS_EthernetSwitchDriver.md
T

674 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 以太网交换机驱动规范
**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 ARLAddress 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+ 个时序图。关键流程:
> - **图 1EthSwt 初始化**EcuM → `EthSwt_Init`。
> - **图 2ARL 表读取**`EthSwt_GetArlTable` → 异步完成。
> - **图 3:端口镜像配置**4.4.0)。
> - **图 4VLAN 成员资格配置**4.3.0 重构)。
> - **图 5:速率策略器配置**(4.3.0)。
> - **图 6:双标签帧过滤**4.3.0)。
> - **图 7gPTP 时间戳延迟补偿**4.3.0)。
> - **图 8:端口链路状态变化**。
> - **图 9MII 寄存器访问**。
> - **图 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、端口镜像、配置容器均已涵盖。