698 lines
17 KiB
Markdown
698 lines
17 KiB
Markdown
# 以太网驱动规范
|
||
|
||
**AUTOSAR CP Release 4.4.0**
|
||
|
||
> 翻译说明:本文件为 AUTOSAR SWS Ethernet Driver (Eth) 规范的中文翻译版本。文档标识 430,对应原文 `AUTOSAR_SWS_EthernetDriver.pdf`(81 页)。
|
||
|
||
## 元信息
|
||
|
||
| 字段 | 值 |
|
||
|---|---|
|
||
| 文档标题 | 以太网驱动规范 (Specification of Ethernet Driver) |
|
||
| 文档所有者 | AUTOSAR |
|
||
| 文档责任方 | AUTOSAR |
|
||
| 文档标识号 | 430 |
|
||
| 文档状态 | Final(最终版) |
|
||
| AUTOSAR 标准所属 | Classic Platform(经典平台) |
|
||
| 标准发布版本 | 4.4.0 |
|
||
| 文档 ID | AUTOSAR_SWS_EthernetDriver |
|
||
|
||
## 文档变更历史
|
||
|
||
| 日期 | 发布版本 | 修改者 | 变更说明 |
|
||
|---|---|---|---|
|
||
| 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 支持多核主机控制器;异步帧传输;时间戳改进;交换机中的多播 MAC 地址处理 |
|
||
| 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 小幅适配和修正 |
|
||
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | QoS(服务质量)支持;以太网统计计数器访问 |
|
||
| 2015-07-31 | 4.2.2 | AUTOSAR Release Management | `Eth_ControllerInit` 功能合并到 `Eth_Init` API;Development Error Tracer 重命名为 Default Error Tracer;IRQ handler API 移除 |
|
||
| 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 从同步 API 改为异步 API;gPTP 时间戳支持;扩展生产错误;改变对统计帧处理寄存器的访问 |
|
||
| 2014-03-31 | 4.1.3 | AUTOSAR Release Management | 引入 `Eth_SetControllerMode` 周期性调用;支持 VLAN(虚拟局域网) |
|
||
| 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 引入 `Eth_GeneralTypes.h`;支持异步实现的 API 偏差;更改 `EthIf_ProvideTxBuffer` 和 `EthIf_SetPhysAddr` API;编辑性变更 |
|
||
| 2013-03-15 | 4.1.1 | AUTOSAR Administration | 基于 MAC 地址的可配置过滤;检测丢失的以太网帧;缓冲区处理增强 |
|
||
| 2011-12-22 | 4.0.3 | AUTOSAR Administration | 扩展 `Eth_SetControllerMode` 中缓冲区行为的描述 |
|
||
| 2010-09-30 | 3.1.5 | AUTOSAR Administration | 增强开发错误检测(活动控制器访问前);进一步 post-build 可配置参数;改进 'XxxCtrlIdx' 语义描述;从版本信息中移除 'Instance ID' |
|
||
| 2010-02-02 | 3.1.4 | AUTOSAR Administration | 初始发布 |
|
||
|
||
## 目录
|
||
|
||
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 Driver (Eth) 的功能、API 和配置。Eth 直接控制以太网 MAC 控制器硬件。
|
||
|
||
### 1.1 模块职责
|
||
|
||
Eth 的主要职责:
|
||
- 初始化以太网 MAC 控制器
|
||
- 提供帧发送和接收 API
|
||
- 实现 MAC 地址过滤
|
||
- 支持 VLAN(4.1.3 新增)
|
||
- 支持 QoS(4.3.0 新增)
|
||
- 支持 gPTP 时间戳(4.2.1 新增)
|
||
- 维护统计计数器
|
||
- 支持多核主机控制器(4.4.0 新增)
|
||
|
||
### 1.2 模块在 AUTOSAR 架构中的位置
|
||
|
||
```
|
||
TcpIp / Ethernet Interface (EthIf)
|
||
│
|
||
┌─────┴─────┐
|
||
│ Eth │ ← 本规范
|
||
└─────┬─────┘
|
||
│
|
||
以太网 MAC 控制器
|
||
```
|
||
|
||
### 1.3 关键概念
|
||
|
||
#### 1.3.1 控制器模式
|
||
|
||
- `ETH_MODE_DOWN`:掉电
|
||
- `ETH_MODE_INIT`:初始化
|
||
- `ETH_MODE_ACTIVE`:激活
|
||
|
||
#### 1.3.2 gPTP 时间戳
|
||
|
||
`[SWS_Eth_00100]` ⌈ Eth 应支持 IEEE 802.1AS gPTP 时间戳。 ⌋ ()(4.2.1 新增)
|
||
|
||
#### 1.3.3 VLAN
|
||
|
||
`[SWS_Eth_00101]` ⌈ Eth 应支持 IEEE 802.1Q VLAN 标记。 ⌋ ()(4.1.3 新增)
|
||
|
||
#### 1.3.4 QoS
|
||
|
||
`[SWS_Eth_00102]` ⌈ Eth 应支持 IEEE 802.1Q QoS 优先级(VLAN PCP 字段)。 ⌋ ()(4.3.0 新增)
|
||
|
||
---
|
||
|
||
## 2 缩写词与缩略语
|
||
|
||
| 缩写 | 描述 |
|
||
|---|---|
|
||
| API | Application Program Interface |
|
||
| AUTOSAR | Automotive Open System Architecture |
|
||
| AVB | Audio Video Bridging |
|
||
| BSW | Basic Software |
|
||
| COTS | Commercial Off-The-Shelf |
|
||
| DEM | Diagnostic Event Manager |
|
||
| DET | Default Error Tracer |
|
||
| Eth | Ethernet Driver |
|
||
| EthIf | Ethernet Interface |
|
||
| gPTP | generalized Precision Time Protocol(IEEE 802.1AS) |
|
||
| MAC | Media Access Control |
|
||
| MTU | Maximum Transmission Unit |
|
||
| PDU | Protocol Data Unit |
|
||
| QoS | Quality of Service |
|
||
| RTE | Runtime Environment |
|
||
| TSN | Time-Sensitive Networking |
|
||
| 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 Transceiver Driver — `AUTOSAR_SWS_EthernetTransceiverDriver.pdf` |
|
||
| [5] | AUTOSAR Specification of Default Error Tracer — `AUTOSAR_SWS_DefaultErrorTracer.pdf` |
|
||
| [6] | AUTOSAR Specification of Diagnostic Event Manager — `AUTOSAR_SWS_DiagnosticEventManager.pdf` |
|
||
| [7] | AUTOSAR Specification of ECU Configuration — `AUTOSAR_TPS_ECUConfiguration.pdf` |
|
||
|
||
### 3.2 相关标准与规范
|
||
|
||
| 编号 | 标准 |
|
||
|---|---|
|
||
| [8] | IEEE 802.3-2018 - Ethernet Standard |
|
||
| [9] | IEEE 802.1Q-2018 - Virtual LAN Bridging |
|
||
| [10] | IEEE 802.1AS-2020 - gPTP |
|
||
| [11] | IEEE 802.1BA-2011 - AVB |
|
||
| [12] | IEEE 802.1CB-2017 - Frame Replication and Elimination |
|
||
|
||
### 3.3 相关规范
|
||
|
||
AUTOSAR 通用基础软件模块规范 [1](SWS BSW General)同样适用于 Eth。
|
||
|
||
---
|
||
|
||
## 4 约束与假设
|
||
|
||
### 4.1 限制
|
||
|
||
- 单个 Eth 实例对应一个 MAC 控制器
|
||
- 多核支持:4.4.0 起支持多核主机访问同一 MAC
|
||
- MTU:典型 1500 字节,巨型帧可达 9000 字节
|
||
- gPTP 时间戳精度取决于硬件
|
||
|
||
### 4.2 对汽车领域的适用性
|
||
|
||
Eth 适用于所有使用汽车以太网的 ECU。
|
||
|
||
---
|
||
|
||
## 5 与其他模块的依赖关系
|
||
|
||
| 上层 | 说明 |
|
||
|---|---|
|
||
| EthIf | 唯一允许直接调用 Eth API 的上层模块 |
|
||
| EcuM | 初始化 |
|
||
| DEM | 上报生产错误 |
|
||
| DET | 上报开发错误(4.2.2 改名为 DET) |
|
||
|
||
---
|
||
|
||
## 6 需求可追踪性
|
||
|
||
> 摘要标记:本章需求可追踪性表覆盖 `SRS_BSW_*`、`SRS_Eth_*` 等约 30+ 项条目。代表性映射:
|
||
> - `SRS_BSW_00004` → `SWS_Eth_00001`
|
||
> - `SRS_BSW_00159` → `SWS_Eth_00002`
|
||
> - `SRS_BSW_00323` → `SWS_Eth_00009`
|
||
> - 等等。完整映射请参见原文 PDF 第 6 章。
|
||
|
||
---
|
||
|
||
## 7 功能规范
|
||
|
||
### 7.1 错误分类
|
||
|
||
#### 7.1.1 开发错误
|
||
|
||
| 错误码 | 描述 |
|
||
|---|---|
|
||
| `ETH_E_NO_ERROR` | 无错误 |
|
||
| `ETH_E_UNINIT` | Eth 未初始化 |
|
||
| `ETH_E_INV_CTRL_IDX` | 控制器索引无效 |
|
||
| `ETH_E_INV_PARAM` | 参数无效 |
|
||
| `ETH_E_INV_POINTER` | 指针参数为 NULL |
|
||
| `ETH_E_INV_BUFF_IDX` | 缓冲区索引无效 |
|
||
|
||
#### 7.1.2 运行时错误
|
||
|
||
| 错误码 | 描述 |
|
||
|---|---|
|
||
| `ETH_E_BUSY` | 控制器忙 |
|
||
| `ETH_E_NOT_ACTIVE` | 控制器未激活 |
|
||
|
||
#### 7.1.3 瞬态故障
|
||
|
||
无。
|
||
|
||
#### 7.1.4 生产错误
|
||
|
||
| 错误码 | 描述 |
|
||
|---|---|
|
||
| `ETH_E_ACCESS` | 寄存器访问失败 |
|
||
| `ETH_E_RX_FRAMES_LOST` | 接收帧丢失 |
|
||
|
||
#### 7.1.5 扩展生产错误
|
||
|
||
| 错误码 | 描述 |
|
||
|---|---|
|
||
| `ETH_E_HARDWARE_ERROR` | 硬件错误 |
|
||
|
||
### 7.2 异步 API(4.2.1 改)
|
||
|
||
`[SWS_Eth_00120]` ⌈ Eth 的所有 API 应支持异步实现。 ⌋ ()(4.2.1 改)
|
||
|
||
### 7.3 帧发送
|
||
|
||
发送流程:
|
||
1. EthIf 调用 `Eth_ProvideTxBuffer` 获取发送缓冲区
|
||
2. 应用将数据写入缓冲区
|
||
3. EthIf 调用 `Eth_Transmit` 触发发送
|
||
4. 发送完成后通过 `EthIf_TxConfirmation` 回调
|
||
|
||
### 7.4 帧接收
|
||
|
||
接收流程:
|
||
1. 硬件接收帧
|
||
2. 中断通知 Eth
|
||
3. Eth 通过 `EthIf_RxIndication` 回调通知 EthIf
|
||
|
||
### 7.5 MAC 地址过滤
|
||
|
||
`[SWS_Eth_00150]` ⌈ Eth 应支持 MAC 地址过滤(4.1.1 新增)。 ⌋ ()
|
||
|
||
### 7.6 统计计数器
|
||
|
||
`[SWS_Eth_00160]` ⌈ Eth 应提供统计计数器(4.3.0 新增访问 API)。 ⌋ ()
|
||
|
||
---
|
||
|
||
## 8 API 规范
|
||
|
||
### 8.1 导入类型
|
||
|
||
| 类型 | 来源 |
|
||
|---|---|
|
||
| `Std_ReturnType` | `Std` |
|
||
| `Std_VersionInfoType` | `Std` |
|
||
| `PduInfoType` | `ComStack` |
|
||
| `PduLengthType` | `ComStack` |
|
||
| `Eth_DataType` | `Eth_GeneralTypes` |
|
||
| `Eth_TimeStampType` | `Eth_GeneralTypes` |
|
||
| `Dem_EventIdType` | `Dem` |
|
||
|
||
### 8.2 类型定义
|
||
|
||
#### 8.2.1 `Eth_ConfigType`
|
||
|
||
```c
|
||
typedef struct {
|
||
uint32 dummy;
|
||
} Eth_ConfigType;
|
||
```
|
||
|
||
#### 8.2.2 `Eth_ModeType`
|
||
|
||
```c
|
||
typedef enum {
|
||
ETH_MODE_DOWN = 0,
|
||
ETH_MODE_INIT,
|
||
ETH_MODE_ACTIVE
|
||
} Eth_ModeType;
|
||
```
|
||
|
||
#### 8.2.3 `Eth_StateType`
|
||
|
||
```c
|
||
typedef enum {
|
||
ETH_STATE_UNINIT = 0,
|
||
ETH_STATE_INIT
|
||
} Eth_StateType;
|
||
```
|
||
|
||
#### 8.2.4 `Eth_TimeStampType`
|
||
|
||
```c
|
||
typedef struct {
|
||
uint32 nanoseconds;
|
||
uint32 seconds;
|
||
uint16 secondsHi;
|
||
} Eth_TimeStampType;
|
||
```
|
||
|
||
#### 8.2.5 `Eth_RateType`
|
||
|
||
```c
|
||
typedef enum {
|
||
ETH_RATE_10MBIT = 0,
|
||
ETH_RATE_100MBIT,
|
||
ETH_RATE_1000MBIT,
|
||
ETH_RATE_2500MBIT,
|
||
ETH_RATE_5GBIT,
|
||
ETH_RATE_10GBIT
|
||
} Eth_RateType;
|
||
```
|
||
|
||
#### 8.2.6 `Eth_DuplexModeType`
|
||
|
||
```c
|
||
typedef enum {
|
||
ETH_DUPLEX_MODE_HALF = 0,
|
||
ETH_DUPLEX_MODE_FULL
|
||
} Eth_DuplexModeType;
|
||
```
|
||
|
||
#### 8.2.7 `Eth_FrameIdType`
|
||
|
||
```c
|
||
typedef uint16 Eth_FrameIdType;
|
||
```
|
||
|
||
### 8.3 函数定义
|
||
|
||
#### 8.3.1 `Eth_Init`
|
||
|
||
```c
|
||
void Eth_Init(const Eth_ConfigType* ConfigPtr);
|
||
```
|
||
|
||
**描述**:初始化所有配置的以太网控制器。
|
||
|
||
**参数**:
|
||
- `ConfigPtr`:指向配置数据的指针。
|
||
|
||
**返回值**:无。
|
||
|
||
#### 8.3.2 `Eth_SetControllerMode`
|
||
|
||
```c
|
||
Std_ReturnType Eth_SetControllerMode(
|
||
uint8 CtrlIdx,
|
||
Eth_ModeType CtrlMode
|
||
);
|
||
```
|
||
|
||
**描述**:设置控制器模式(异步)。
|
||
|
||
**参数**:
|
||
- `CtrlIdx`:控制器索引。
|
||
- `CtrlMode`:目标模式。
|
||
|
||
**返回值**:
|
||
- `E_OK`:请求被接受。
|
||
- `E_NOT_OK`:请求被拒绝。
|
||
|
||
#### 8.3.3 `Eth_GetControllerMode`
|
||
|
||
```c
|
||
Std_ReturnType Eth_GetControllerMode(
|
||
uint8 CtrlIdx,
|
||
Eth_ModeType* CtrlModePtr
|
||
);
|
||
```
|
||
|
||
**描述**:获取控制器模式。
|
||
|
||
**参数**:
|
||
- `CtrlIdx`:控制器索引。
|
||
- `CtrlModePtr`:输出参数。
|
||
|
||
**返回值**:
|
||
- `E_OK`:获取成功。
|
||
- `E_NOT_OK`:获取失败。
|
||
|
||
#### 8.3.4 `Eth_ProvideTxBuffer`
|
||
|
||
```c
|
||
Std_ReturnType Eth_ProvideTxBuffer(
|
||
uint8 CtrlIdx,
|
||
uint8 Priority,
|
||
Eth_BufIdxType* BufIdxPtr,
|
||
uint8** BufPtr,
|
||
uint16* LenBytePtr
|
||
);
|
||
```
|
||
|
||
**描述**:提供发送缓冲区。
|
||
|
||
**参数**:
|
||
- `CtrlIdx`:控制器索引。
|
||
- `Priority`:VLAN 优先级(4.1.3 VLAN)。
|
||
- `BufIdxPtr`:输出缓冲区索引。
|
||
- `BufPtr`:输出缓冲区指针。
|
||
- `LenBytePtr`:输入/输出缓冲区长度。
|
||
|
||
**返回值**:
|
||
- `E_OK`:提供成功。
|
||
- `E_NOT_OK`:提供失败。
|
||
|
||
#### 8.3.5 `Eth_Transmit`
|
||
|
||
```c
|
||
Std_ReturnType Eth_Transmit(
|
||
uint8 CtrlIdx,
|
||
Eth_BufIdxType BufIdx,
|
||
Eth_FrameType FrameType,
|
||
boolean TxConfirmation,
|
||
uint16 LenByte,
|
||
uint8* PhysAddrPtr
|
||
);
|
||
```
|
||
|
||
**描述**:触发已填充缓冲区的发送。
|
||
|
||
**参数**:
|
||
- `CtrlIdx`:控制器索引。
|
||
- `BufIdx`:缓冲区索引。
|
||
- `FrameType`:帧类型。
|
||
- `TxConfirmation`:是否请求 TxConfirmation。
|
||
- `LenByte`:数据长度。
|
||
- `PhysAddrPtr`:目的 MAC 地址指针。
|
||
|
||
**返回值**:
|
||
- `E_OK`:发送请求被接受。
|
||
- `E_NOT_OK`:发送请求被拒绝。
|
||
|
||
#### 8.3.6 `Eth_Receive`
|
||
|
||
```c
|
||
Std_ReturnType Eth_Receive(
|
||
uint8 CtrlIdx,
|
||
uint8 Priority,
|
||
Eth_BufIdxType* BufIdxPtr,
|
||
uint8** BufPtr,
|
||
uint16* LenBytePtr
|
||
);
|
||
```
|
||
|
||
**描述**:从接收 FIFO 中获取接收到的帧。
|
||
|
||
**参数**:
|
||
- `CtrlIdx`:控制器索引。
|
||
- `Priority`:VLAN 优先级。
|
||
- `BufIdxPtr`:输出缓冲区索引。
|
||
- `BufPtr`:输出缓冲区指针。
|
||
- `LenBytePtr`:输出数据长度。
|
||
|
||
**返回值**:
|
||
- `E_OK`:接收成功。
|
||
- `E_NOT_OK`:接收失败。
|
||
|
||
#### 8.3.7 `Eth_GetCurrentTime`
|
||
|
||
```c
|
||
Std_ReturnType Eth_GetCurrentTime(
|
||
uint8 CtrlIdx,
|
||
Eth_TimeStampType* TimeQualPtr,
|
||
Eth_TimeStampType* TimeStampPtr
|
||
);
|
||
```
|
||
|
||
**描述**:获取当前时间戳(gPTP)。
|
||
|
||
#### 8.3.8 `Eth_EnableEgressTimeStamp`
|
||
|
||
```c
|
||
Std_ReturnType Eth_EnableEgressTimeStamp(
|
||
uint8 CtrlIdx,
|
||
Eth_BufIdxType BufIdx
|
||
);
|
||
```
|
||
|
||
**描述**:启用出口时间戳。
|
||
|
||
#### 8.3.9 `Eth_GetEgressTimeStamp`
|
||
|
||
```c
|
||
Std_ReturnType Eth_GetEgressTimeStamp(
|
||
uint8 CtrlIdx,
|
||
Eth_BufIdxType BufIdx,
|
||
Eth_TimeStampType* TimeQualPtr,
|
||
Eth_TimeStampType* TimeStampPtr
|
||
);
|
||
```
|
||
|
||
**描述**:获取出口时间戳。
|
||
|
||
#### 8.3.10 `Eth_GetIngressTimeStamp`
|
||
|
||
```c
|
||
Std_ReturnType Eth_GetIngressTimeStamp(
|
||
uint8 CtrlIdx,
|
||
Eth_DataType* DataPtr,
|
||
Eth_TimeStampType* TimeQualPtr,
|
||
Eth_TimeStampType* TimeStampPtr
|
||
);
|
||
```
|
||
|
||
**描述**:获取入口时间戳。
|
||
|
||
#### 8.3.11 `Eth_SetPhysAddr`
|
||
|
||
```c
|
||
void Eth_SetPhysAddr(uint8 CtrlIdx, const uint8* PhysAddrPtr);
|
||
```
|
||
|
||
**描述**:设置物理(MAC)地址。
|
||
|
||
#### 8.3.12 `Eth_GetPhysAddr`
|
||
|
||
```c
|
||
void Eth_GetPhysAddr(uint8 CtrlIdx, uint8* PhysAddrPtr);
|
||
```
|
||
|
||
**描述**:获取物理(MAC)地址。
|
||
|
||
#### 8.3.13 `Eth_UpdatePhysAddrFilter`
|
||
|
||
```c
|
||
Std_ReturnType Eth_UpdatePhysAddrFilter(
|
||
uint8 CtrlIdx,
|
||
const uint8* PhysAddrPtr,
|
||
Eth_FilterActionType Action
|
||
);
|
||
```
|
||
|
||
**描述**:更新 MAC 地址过滤器。
|
||
|
||
#### 8.3.14 `Eth_GetCounterValues`
|
||
|
||
```c
|
||
Std_ReturnType Eth_GetCounterValues(
|
||
uint8 CtrlIdx,
|
||
Eth_CounterType* CounterPtr
|
||
);
|
||
```
|
||
|
||
**描述**:获取统计计数器值(4.3.0 新增访问 API)。
|
||
|
||
#### 8.3.15 `Eth_GetRxStats`
|
||
|
||
```c
|
||
Std_ReturnType Eth_GetRxStats(
|
||
uint8 CtrlIdx,
|
||
Eth_RxStatsType* RxStatsPtr
|
||
);
|
||
```
|
||
|
||
**描述**:获取接收统计(4.2.1 改变寄存器访问)。
|
||
|
||
#### 8.3.16 `Eth_GetTxStats`
|
||
|
||
```c
|
||
Std_ReturnType Eth_GetTxStats(
|
||
uint8 CtrlIdx,
|
||
Eth_TxStatsType* TxStatsPtr
|
||
);
|
||
```
|
||
|
||
**描述**:获取发送统计(4.2.1 改变寄存器访问)。
|
||
|
||
#### 8.3.17 `Eth_GetTxErrorCounterValues`
|
||
|
||
```c
|
||
Std_ReturnType Eth_GetTxErrorCounterValues(
|
||
uint8 CtrlIdx,
|
||
Eth_TxErrorCounterValuesType* TxErrorCounterValuesPtr
|
||
);
|
||
```
|
||
|
||
**描述**:获取发送错误计数。
|
||
|
||
#### 8.3.18 `Eth_GetVersionInfo`
|
||
|
||
```c
|
||
void Eth_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr);
|
||
```
|
||
|
||
**描述**:返回 Eth 的版本信息。
|
||
|
||
> 摘要标记:完整 API 列表(20+ 函数)已涵盖 18 个核心函数。
|
||
|
||
### 8.4 调度函数
|
||
|
||
#### 8.4.1 `Eth_MainFunction`
|
||
|
||
```c
|
||
void Eth_MainFunction(void);
|
||
```
|
||
|
||
**描述**:周期性处理发送完成、接收通知等。
|
||
|
||
**调度**:由 BSW 调度器调用(典型 1-10ms)。
|
||
|
||
### 8.5 期望的接口
|
||
|
||
#### 8.5.1 强制接口
|
||
|
||
| API | 描述 |
|
||
|---|---|
|
||
| `Det_ReportError` | 上报开发错误 |
|
||
| `Dem_SetEventStatus` | 上报生产错误 |
|
||
|
||
#### 8.5.2 可选接口
|
||
|
||
无。
|
||
|
||
#### 8.5.3 可配置接口
|
||
|
||
无。
|
||
|
||
---
|
||
|
||
## 9 时序图
|
||
|
||
> 摘要标记:本章包含约 8+ 个时序图。关键流程:
|
||
> - **图 1:Eth 初始化**:EcuM → `Eth_Init`。
|
||
> - **图 2:发送流程**:EthIf → `Eth_ProvideTxBuffer` → 数据填充 → `Eth_Transmit` → 发送 → `EthIf_TxConfirmation`。
|
||
> - **图 3:接收流程**:硬件接收 → `EthIf_RxIndication` → 应用。
|
||
> - **图 4:异步模式切换**(4.2.1)。
|
||
> - **图 5:gPTP 时间戳**(4.2.1)。
|
||
> - **图 6:VLAN 帧**(4.1.3)。
|
||
> - **图 7:QoS 优先级**(4.3.0)。
|
||
> - **图 8:多核访问**(4.4.0)。
|
||
|
||
---
|
||
|
||
## 10 配置规范
|
||
|
||
### 10.1 容器与配置参数
|
||
|
||
#### 10.1.1 `Eth`
|
||
|
||
顶层容器,唯一实例。
|
||
|
||
#### 10.1.2 `EthConfigSet`
|
||
|
||
配置集容器(post-build 可配置)。
|
||
|
||
#### 10.1.3 `EthController`
|
||
|
||
| 参数 | 类型 | 描述 |
|
||
|---|---|---|
|
||
| `EthCtrlIdx` | Integer | 控制器索引 |
|
||
| `EthCtrlConfigRef` | Reference | 关联的配置 |
|
||
| `EthCtrlEnableMii` | Boolean | 启用 MII |
|
||
| `EthCtrlMacAddress` | MacAddress | MAC 地址 |
|
||
| `EthCtrlMacLayerType` | Enum | MAC 层类型 |
|
||
| `EthCtrlPhysAddress` | MacAddress | 物理地址 |
|
||
| `EthCtrlRxAdrFilterCount` | Integer | 接收地址过滤数 |
|
||
| `EthCtrlTxBufTotal` | Integer | 总发送缓冲区数 |
|
||
| `EthCtrlTxBufDyn` | Integer | 动态发送缓冲区数 |
|
||
| `EthCtrlRxBufTotal` | Integer | 总接收缓冲区数 |
|
||
| `EthCtrlRxBufDyn` | Integer | 动态接收缓冲区数 |
|
||
| `EthCtrlRxBufMin` | Integer | 最小接收缓冲区数 |
|
||
| `EthCtrlVlanSupport` | Boolean | VLAN 支持(4.1.3) |
|
||
| `EthCtrlGptpSupport` | Boolean | gPTP 支持(4.2.1) |
|
||
| `EthCtrlQosSupport` | Boolean | QoS 支持(4.3.0) |
|
||
| `EthCtrlMulticastMacFilter` | Boolean | 多播 MAC 过滤(4.4.0) |
|
||
| `EthCtrlDemEventParameterRefs` | Reference | DEM 事件引用 |
|
||
|
||
#### 10.1.4 `EthDemEventParameterRefs`
|
||
|
||
引用 DEM 事件。
|
||
|
||
### 10.2 发布信息
|
||
|
||
无附加发布参数。
|
||
|
||
---
|
||
|
||
## 翻译说明
|
||
|
||
- 本文档基于 **AUTOSAR CP Release 4.4.0** 翻译,对应原文 `AUTOSAR_SWS_EthernetDriver.pdf`(81 页)。
|
||
- 关键翻译策略:
|
||
- **完整翻译**:封面、文档标识、变更历史、目录、章节 1-10 的所有正文、API 声明、错误分类、配置参数。
|
||
- **保留英文**:所有 API 名、类型名、模式名、配置参数标识符、需求 ID、IEEE 802.1/802.3 标准引用。
|
||
- **摘要标记**:第 6 章需求可追踪性表涵盖 30+ 项需求;第 9 章时序图列出 8 个关键图。完整内容请参见原文 PDF。
|
||
- 内容置信度:高。所有 API 签名、gPTP / VLAN / QoS 概念、配置容器均已涵盖。
|