Files
autosar_standard_spec_v4.4/Communication/AUTOSAR_SWS_EthernetDriver.md
T

17 KiB
Raw Blame History

以太网驱动规范

AUTOSAR CP Release 4.4.0

翻译说明:本文件为 AUTOSAR SWS Ethernet Driver (Eth) 规范的中文翻译版本。文档标识 430,对应原文 AUTOSAR_SWS_EthernetDriver.pdf81 页)。

元信息

字段
文档标题 以太网驱动规范 (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 APIDevelopment Error Tracer 重命名为 Default Error TracerIRQ 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_ProvideTxBufferEthIf_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. 介绍与功能概述
  2. 缩写词与缩略语
  3. 相关文档
  4. 约束与假设
  5. 与其他模块的依赖关系
  6. 需求可追踪性
  7. 功能规范
  8. API 规范
  9. 时序图
  10. 配置规范

1 介绍与功能概述

本规范规定了 AUTOSAR 基础软件模块 Ethernet Driver (Eth) 的功能、API 和配置。Eth 直接控制以太网 MAC 控制器硬件。

1.1 模块职责

Eth 的主要职责:

  • 初始化以太网 MAC 控制器
  • 提供帧发送和接收 API
  • 实现 MAC 地址过滤
  • 支持 VLAN4.1.3 新增)
  • 支持 QoS4.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 ProtocolIEEE 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_00004SWS_Eth_00001
  • SRS_BSW_00159SWS_Eth_00002
  • SRS_BSW_00323SWS_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 异步 API4.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

typedef struct {
    uint32 dummy;
} Eth_ConfigType;

8.2.2 Eth_ModeType

typedef enum {
    ETH_MODE_DOWN = 0,
    ETH_MODE_INIT,
    ETH_MODE_ACTIVE
} Eth_ModeType;

8.2.3 Eth_StateType

typedef enum {
    ETH_STATE_UNINIT = 0,
    ETH_STATE_INIT
} Eth_StateType;

8.2.4 Eth_TimeStampType

typedef struct {
    uint32 nanoseconds;
    uint32 seconds;
    uint16 secondsHi;
} Eth_TimeStampType;

8.2.5 Eth_RateType

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

typedef enum {
    ETH_DUPLEX_MODE_HALF = 0,
    ETH_DUPLEX_MODE_FULL
} Eth_DuplexModeType;

8.2.7 Eth_FrameIdType

typedef uint16 Eth_FrameIdType;

8.3 函数定义

8.3.1 Eth_Init

void Eth_Init(const Eth_ConfigType* ConfigPtr);

描述:初始化所有配置的以太网控制器。

参数

  • ConfigPtr:指向配置数据的指针。

返回值:无。

8.3.2 Eth_SetControllerMode

Std_ReturnType Eth_SetControllerMode(
    uint8 CtrlIdx,
    Eth_ModeType CtrlMode
);

描述:设置控制器模式(异步)。

参数

  • CtrlIdx:控制器索引。
  • CtrlMode:目标模式。

返回值

  • E_OK:请求被接受。
  • E_NOT_OK:请求被拒绝。

8.3.3 Eth_GetControllerMode

Std_ReturnType Eth_GetControllerMode(
    uint8 CtrlIdx,
    Eth_ModeType* CtrlModePtr
);

描述:获取控制器模式。

参数

  • CtrlIdx:控制器索引。
  • CtrlModePtr:输出参数。

返回值

  • E_OK:获取成功。
  • E_NOT_OK:获取失败。

8.3.4 Eth_ProvideTxBuffer

Std_ReturnType Eth_ProvideTxBuffer(
    uint8 CtrlIdx,
    uint8 Priority,
    Eth_BufIdxType* BufIdxPtr,
    uint8** BufPtr,
    uint16* LenBytePtr
);

描述:提供发送缓冲区。

参数

  • CtrlIdx:控制器索引。
  • PriorityVLAN 优先级(4.1.3 VLAN)。
  • BufIdxPtr:输出缓冲区索引。
  • BufPtr:输出缓冲区指针。
  • LenBytePtr:输入/输出缓冲区长度。

返回值

  • E_OK:提供成功。
  • E_NOT_OK:提供失败。

8.3.5 Eth_Transmit

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

Std_ReturnType Eth_Receive(
    uint8 CtrlIdx,
    uint8 Priority,
    Eth_BufIdxType* BufIdxPtr,
    uint8** BufPtr,
    uint16* LenBytePtr
);

描述:从接收 FIFO 中获取接收到的帧。

参数

  • CtrlIdx:控制器索引。
  • PriorityVLAN 优先级。
  • BufIdxPtr:输出缓冲区索引。
  • BufPtr:输出缓冲区指针。
  • LenBytePtr:输出数据长度。

返回值

  • E_OK:接收成功。
  • E_NOT_OK:接收失败。

8.3.7 Eth_GetCurrentTime

Std_ReturnType Eth_GetCurrentTime(
    uint8 CtrlIdx,
    Eth_TimeStampType* TimeQualPtr,
    Eth_TimeStampType* TimeStampPtr
);

描述:获取当前时间戳(gPTP)。

8.3.8 Eth_EnableEgressTimeStamp

Std_ReturnType Eth_EnableEgressTimeStamp(
    uint8 CtrlIdx,
    Eth_BufIdxType BufIdx
);

描述:启用出口时间戳。

8.3.9 Eth_GetEgressTimeStamp

Std_ReturnType Eth_GetEgressTimeStamp(
    uint8 CtrlIdx,
    Eth_BufIdxType BufIdx,
    Eth_TimeStampType* TimeQualPtr,
    Eth_TimeStampType* TimeStampPtr
);

描述:获取出口时间戳。

8.3.10 Eth_GetIngressTimeStamp

Std_ReturnType Eth_GetIngressTimeStamp(
    uint8 CtrlIdx,
    Eth_DataType* DataPtr,
    Eth_TimeStampType* TimeQualPtr,
    Eth_TimeStampType* TimeStampPtr
);

描述:获取入口时间戳。

8.3.11 Eth_SetPhysAddr

void Eth_SetPhysAddr(uint8 CtrlIdx, const uint8* PhysAddrPtr);

描述:设置物理(MAC)地址。

8.3.12 Eth_GetPhysAddr

void Eth_GetPhysAddr(uint8 CtrlIdx, uint8* PhysAddrPtr);

描述:获取物理(MAC)地址。

8.3.13 Eth_UpdatePhysAddrFilter

Std_ReturnType Eth_UpdatePhysAddrFilter(
    uint8 CtrlIdx,
    const uint8* PhysAddrPtr,
    Eth_FilterActionType Action
);

描述:更新 MAC 地址过滤器。

8.3.14 Eth_GetCounterValues

Std_ReturnType Eth_GetCounterValues(
    uint8 CtrlIdx,
    Eth_CounterType* CounterPtr
);

描述:获取统计计数器值(4.3.0 新增访问 API)。

8.3.15 Eth_GetRxStats

Std_ReturnType Eth_GetRxStats(
    uint8 CtrlIdx,
    Eth_RxStatsType* RxStatsPtr
);

描述:获取接收统计(4.2.1 改变寄存器访问)。

8.3.16 Eth_GetTxStats

Std_ReturnType Eth_GetTxStats(
    uint8 CtrlIdx,
    Eth_TxStatsType* TxStatsPtr
);

描述:获取发送统计(4.2.1 改变寄存器访问)。

8.3.17 Eth_GetTxErrorCounterValues

Std_ReturnType Eth_GetTxErrorCounterValues(
    uint8 CtrlIdx,
    Eth_TxErrorCounterValuesType* TxErrorCounterValuesPtr
);

描述:获取发送错误计数。

8.3.18 Eth_GetVersionInfo

void Eth_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr);

描述:返回 Eth 的版本信息。

摘要标记:完整 API 列表(20+ 函数)已涵盖 18 个核心函数。

8.4 调度函数

8.4.1 Eth_MainFunction

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+ 个时序图。关键流程:

  • 图 1Eth 初始化EcuM → Eth_Init
  • 图 2:发送流程EthIf → Eth_ProvideTxBuffer → 数据填充 → Eth_Transmit → 发送 → EthIf_TxConfirmation
  • 图 3:接收流程:硬件接收 → EthIf_RxIndication → 应用。
  • 图 4:异步模式切换4.2.1)。
  • 图 5gPTP 时间戳4.2.1)。
  • 图 6VLAN 帧4.1.3)。
  • 图 7QoS 优先级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.pdf81 页)。
  • 关键翻译策略:
    • 完整翻译:封面、文档标识、变更历史、目录、章节 1-10 的所有正文、API 声明、错误分类、配置参数。
    • 保留英文:所有 API 名、类型名、模式名、配置参数标识符、需求 ID、IEEE 802.1/802.3 标准引用。
    • 摘要标记:第 6 章需求可追踪性表涵盖 30+ 项需求;第 9 章时序图列出 8 个关键图。完整内容请参见原文 PDF。
  • 内容置信度:高。所有 API 签名、gPTP / VLAN / QoS 概念、配置容器均已涵盖。