# 以太网状态管理器规范 **AUTOSAR CP Release 4.4.0** > 翻译说明:本文件为 AUTOSAR SWS Ethernet State Manager (EthSM) 规范的中文翻译版本。文档标识 415,对应原文 `AUTOSAR_SWS_EthernetStateManager.pdf`(54 页)。 ## 元信息 | 字段 | 值 | |---|---| | 文档标题 | 以太网状态管理器规范 (Specification of Ethernet State Manager) | | 文档所有者 | AUTOSAR | | 文档责任方 | AUTOSAR | | 文档标识号 | 415 | | 文档状态 | Final(最终版) | | AUTOSAR 标准所属 | Classic Platform(经典平台) | | 标准发布版本 | 4.4.0 | | 文档 ID | AUTOSAR_SWS_EthernetStateManager | ## 文档变更历史 | 日期 | 发布版本 | 修改者 | 变更说明 | |---|---|---|---| | 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 错误分类已修正;编辑性变更 | | 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 默认错误已移除;编辑性变更 | | 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 移除 Set 和 Get Transceiver 模式功能;更正 `EthSM_TcpIpModeIndication` 回调返回值;统一主函数周期与其他模块一致;移除 Get current internal mode | | 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 统一时序图、网络状态机和功能描述;调试支持标记为已废弃;若 TcpIp 状态未被接受则上报 DET;适配 DET 重命名;错误处理:添加 Runtime Errors 和 Transient Faults 表 | | 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 从同步 API 改为异步 API;添加额外的回调函数;更改现有函数的行为;编辑性变更 | | 2014-03-31 | 4.1.3 | AUTOSAR Release Management | 超时后的纠正措施;从 `ETHSM_STATE_ONLINE` 出发的非互斥转换;编辑性变更 | | 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 全 com 请求优化;内部状态名标准化;若干接口的异步行为;澄清和修正;编辑性变更 | | 2013-03-15 | 4.1.1 | AUTOSAR Administration | 新状态机(新子状态、新状态条件、新 API);更新第 10 章;新增 Transceiver Link 关闭时的生产错误;一般性更新(修正和措辞) | | 2011-12-22 | 4.0.3 | AUTOSAR Administration | 更新第 10 章(参数调整) | | 2010-09-30 | 3.1.5 | AUTOSAR Administration | 修正 SW 模块版本信息的命名约定;修正第 10 章配置参数 `EthSMNetworkIndex`;从 `GetVersionId` 结构体中移除 InstanceID;添加额外回调函数 `SoAd_BusSM_ModeIndication` 在 EthTrcv 和 EthController 成功初始化后调用 | | 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 State Manager (EthSM) 的功能、API 和配置。EthSM 将 ComM 的通信模式请求映射到 TcpIp、Ethernet Interface、Ethernet Transceiver、Ethernet Switch(可选)的具体状态。 ### 1.1 模块职责 EthSM 的主要职责: - 接收 ComM 的网络模式请求 - 协调 TcpIp 模块的通信状态 - 监控以太网接口和收发器状态 - 向上层(ComM、SoAd)通知当前网络状态 - 处理多网络 ### 1.2 模块在 AUTOSAR 架构中的位置 ``` ComM (通信管理器) │ EthSM ← 本规范 │ ┌────┴────┬─────────┐ │ │ │ TcpIp EthIf EthTrcv / EthSwt │ │ │ └────┬────┴────┬────┘ │ │ TCP/IP 以太网硬件 ``` ### 1.3 关键概念 #### 1.3.1 状态机 EthSM 实现网络状态机: - `ETHSM_STATE_OFFLINE`:离线 - `ETHSM_STATE_WAIT_TRCVLINK`:等待收发器链路 - `ETHSM_STATE_WAIT_ONLINE`:等待在线 - `ETHSM_STATE_ONLINE`:在线 - `ETHSM_STATE_ONHOLD`:保持(4.2.1 新增) - `ETHSM_STATE_WAIT_OFFLINE`:等待离线 #### 1.3.2 商业现货(COTS)TCP/IP 栈支持 EthSM 支持 COTS TCP/IP 栈,通过 `EthSM_UseCsmIf` 配置参数控制。 --- ## 2 缩写词与缩略语 | 缩写 | 描述 | |---|---| | API | Application Program Interface | | AUTOSAR | Automotive Open System Architecture | | BSW | Basic Software | | ComM | Communication Manager | | COTS | Commercial Off-The-Shelf | | DEM | Diagnostic Event Manager | | DET | Default Error Tracer | | ECU | Electronic Control Unit | | EthIf | Ethernet Interface | | EthSM | Ethernet State Manager | | EthTrcv | Ethernet Transceiver Driver | | EthSwt | Ethernet Switch Driver | | NM | Network Management | | PDU | Protocol Data Unit | | RTE | Runtime Environment | | SoAd | Socket Adaptor | | TCP | Transmission Control Protocol | | TCP/IP | TCP over IP | | UDP | User Datagram Protocol | --- ## 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 COM Manager — `AUTOSAR_SWS_ComManager.pdf` | | [5] | AUTOSAR Specification of TCP/IP — `AUTOSAR_SWS_TcpIp.pdf` | | [6] | AUTOSAR Specification of Ethernet Interface — `AUTOSAR_SWS_EthernetInterface.pdf` | | [7] | AUTOSAR Specification of Ethernet Transceiver Driver — `AUTOSAR_SWS_EthernetTransceiverDriver.pdf` | | [8] | AUTOSAR Specification of Ethernet Switch Driver — `AUTOSAR_SWS_EthernetSwitchDriver.pdf` | | [9] | AUTOSAR Specification of Socket Adaptor — `AUTOSAR_SWS_SocketAdaptor.pdf` | | [10] | AUTOSAR Specification of Default Error Tracer — `AUTOSAR_SWS_DefaultErrorTracer.pdf` | | [11] | AUTOSAR Specification of Diagnostic Event Manager — `AUTOSAR_SWS_DiagnosticEventManager.pdf` | ### 3.2 相关规范 AUTOSAR 通用基础软件模块规范 [1](SWS BSW General)同样适用于 EthSM。 --- ## 4 约束与假设 ### 4.1 限制 - EthSM 的每个网络对应一个状态机实例。 - COTS TCP/IP 栈支持仅限于 4.2.2 及以上版本。 - 网络模式请求是异步的(4.2.1 改)。 ### 4.2 对汽车领域的适用性 EthSM 适用于所有使用以太网通信的汽车 ECU。 --- ## 5 与其他模块的依赖关系 | 上层 | 说明 | |---|---| | ComM | 通过 `ComM_NetworkMode` 等模式通知 ComM | | BswM | 通过 `BswM_EthSM_CurrentState` 通知 BswM | | 同一层 | 说明 | |---|---| | TcpIp | 接收 `TcpIp_TcpIpModeIndication` 等回调 | | EthIf | 接收 `EthIf_TrcvLinkStateChangeIndication` 等回调 | | 下层 | 说明 | |---|---| | 无 | | ### 5.1 文件结构 #### 5.1.1 代码文件结构 参见 SWS_BSWGeneral 第 5.1.6 节。 #### 5.1.2 版本检查 `[SWS_EthSM_00001]` ⌈ EthSM 模块应对所有导入的头文件执行版本检查。 ⌋ () --- ## 6 需求可追踪性 > 摘要标记:本章需求可追踪性表覆盖 `SRS_BSW_*`、`SRS_EthSM_*` 等约 30+ 项条目。代表性映射: > - `SRS_BSW_00004` → `SWS_EthSM_00001` > - `SRS_BSW_00159` → `SWS_EthSM_00002` > - `SRS_BSW_00323` → `SWS_EthSM_00008` > - `SRS_BSW_00406` → `SWS_EthSM_00009` > - `SRS_BSW_00407` → `SWS_EthSM_00011` > - `SRS_BSW_00450` → `SWS_EthSM_00012` > - 等等。完整映射请参见原文 PDF 第 6 章。 --- ## 7 功能规范 ### 7.1 网络通信模式请求的转换 EthSM 将 ComM 的模式请求转换为: - 对 TcpIp:`TcpIp_RequestComMode` - 对 EthIf / EthTrcv:模式切换(如 `NORMAL` / `DOWN`) ### 7.2 当前网络通信模式的输出 EthSM 通过 `BswM_EthSM_CurrentState` 通知 BswM 当前网络状态。 ### 7.3 外设控制 #### 7.3.1 以太网接口控制器 EthSM 不直接控制以太网控制器;通过 EthIf 间接控制。 ### 7.4 多网络 EthSM 支持多个网络实例,每个网络有独立的状态机。 ### 7.5 背景与基本原理 以太网通信栈的状态协调涉及多个模块(TcpIp、EthIf、EthTrcv)。EthSM 提供一个统一的接口来协调这些模块,使 ComM 无需了解以太网特定的细节。 ### 7.6 网络模式状态机 EthSM 状态机包含以下状态: | 状态 | 描述 | |---|---| | `ETHSM_STATE_OFFLINE` | 离线状态(初始) | | `ETHSM_STATE_WAIT_TRCVLINK` | 等待收发器链路 | | `ETHSM_STATE_WAIT_ONLINE` | 等待 TcpIp 进入 ONLINE | | `ETHSM_STATE_ONLINE` | 在线(正常运行) | | `ETHSM_STATE_ONHOLD` | 保持(链路变化暂时保持) | | `ETHSM_STATE_WAIT_OFFLINE` | 等待离线(关闭过程中) | #### 7.6.1 初始转换 `ETHSM_STATE_OFFLINE` → 收到 ComM 的 FullCom 请求 → `ETHSM_STATE_WAIT_TRCVLINK` #### 7.6.2 `WAIT_TRCVLINK` ↔ `OFFLINE` 链路失败时返回 `OFFLINE`。 #### 7.6.3 `WAIT_TRCVLINK` → `WAIT_ONLINE` 链路建立后请求 TcpIp 进入 ONLINE。 #### 7.6.4 `WAIT_ONLINE` → `OFFLINE` TcpIp 在超时内未进入 ONLINE 则返回 `OFFLINE`。 #### 7.6.5 `WAIT_ONLINE` ↔ `ONLINE` TcpIp 进入 ONLINE 后切换到 `ONLINE`;TcpIp 离开 ONLINE 则返回 `WAIT_TRCVLINK`。 #### 7.6.6 `ONLINE` → `WAIT_OFFLINE` 收到 ComM 的 NoCom 请求后请求 TcpIp 进入 OFFLINE。 #### 7.6.7 `WAIT_OFFLINE` → `OFFLINE` TcpIp 进入 OFFLINE 后切换到 `OFFLINE`。 #### 7.6.8 `ONLINE` ↔ `ONHOLD`(4.2.1 新增) 链路变化时进入 `ONHOLD`;链路恢复后返回 `ONLINE`。 #### 7.6.9 `ONHOLD` → `WAIT_TRCVLINK` 链路永久丢失时返回。 #### 7.6.10 `ONHOLD` → `OFFLINE` 链路长时间不可用时返回。 #### 7.6.11 状态转换信息 所有状态转换通过 `BswM_EthSM_CurrentState` 通知 BswM。 ### 7.7 错误通知 EthSM 通过 DEM 上报生产错误,通过 DET 上报开发错误(4.3.1 移除 DET)。 ### 7.8 错误分类 #### 7.8.1 开发错误 | 错误码 | 描述 | |---|---| | `ETHSM_E_NO_ERROR` | 无错误 | | `ETHSM_E_UNINIT` | EthSM 未初始化 | | `ETHSM_E_PARAM_NETWORK` | 网络参数无效 | | `ETHSM_E_PARAM_POINTER` | 指针参数为 NULL | | `ETHSM_E_INV_MODE` | 无效的模式 | #### 7.8.2 运行时错误 | 错误码 | 描述 | |---|---| | `ETHSM_E_TCPIP_STATE` | TcpIp 状态未接受 | #### 7.8.3 瞬态故障 无。 #### 7.8.4 生产错误 | 错误码 | 描述 | |---|---| | `ETHSM_E_TRCV_LINK_DOWN` | 收发器链路关闭 | #### 7.8.5 扩展生产错误 无。 ### 7.9 商业现货 TCP/IP 栈的使用 `[SWS_EthSM_00100]` ⌈ 当 `EthSM_UseCsmIf = TRUE` 时,EthSM 通过 CSM 接口控制 COTS TCP/IP 栈。 ⌋ () --- ## 8 API 规范 ### 8.1 导入类型 | 类型 | 来源 | |---|---| | `Std_ReturnType` | `Std` | | `Std_VersionInfoType` | `Std` | | `ComM_ModeType` | `ComM` | | `TcpIp_StateType` | `TcpIp` | | `EthTrcv_LinkStateType` | `EthTrcv` | ### 8.2 类型定义 #### 8.2.1 `EthSM_ConfigType` ```c typedef struct { uint32 dummy; } EthSM_ConfigType; ``` #### 8.2.2 `EthSM_NetworkModeStateType` ```c typedef enum { ETHSM_STATE_OFFLINE = 0, ETHSM_STATE_WAIT_TRCVLINK, ETHSM_STATE_WAIT_ONLINE, ETHSM_STATE_ONLINE, ETHSM_STATE_ONHOLD, ETHSM_STATE_WAIT_OFFLINE } EthSM_NetworkModeStateType; ``` ### 8.3 函数定义 #### 8.3.1 `EthSM_Init` ```c void EthSM_Init(const EthSM_ConfigType* ConfigPtr); ``` **描述**:初始化 EthSM。 **参数**: - `ConfigPtr`:指向配置数据的指针。 **返回值**:无。 #### 8.3.2 `EthSM_RequestComMode` ```c Std_ReturnType EthSM_RequestComMode( NetworkHandleType NetworkHandle, ComM_ModeType ComM_Mode ); ``` **描述**:请求网络通信模式(由 ComM 调用)。 **参数**: - `NetworkHandle`:网络句柄。 - `ComM_Mode`:通信模式。 **返回值**: - `E_OK`:请求成功。 - `E_NOT_OK`:请求失败。 #### 8.3.3 `EthSM_GetCurrentComMode` ```c Std_ReturnType EthSM_GetCurrentComMode( NetworkHandleType NetworkHandle, ComM_ModeType* ComM_ModePtr ); ``` **描述**:获取当前网络通信模式。 **参数**: - `NetworkHandle`:网络句柄。 - `ComM_ModePtr`:输出参数。 **返回值**: - `E_OK`:获取成功。 - `E_NOT_OK`:获取失败。 #### 8.3.4 `EthSM_GetVersionInfo` ```c void EthSM_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr); ``` **描述**:返回 EthSM 的版本信息。 **参数**: - `VersionInfoPtr`:输出版本信息指针。 **返回值**:无。 > 摘要标记:完整 API 列表(4.3.0 移除了 Set/Get Transceiver 模式和 GetCurrentInternalMode 后约 5 个核心函数)已涵盖。 ### 8.4 回调通知 #### 8.4.1 `EthSM_TcpIpModeIndication` ```c void EthSM_TcpIpModeIndication( TcpIp_StateType State, NetworkHandleType NetworkHandle ); ``` **描述**:由 TcpIp 调用,通知当前 TCP/IP 模式。 #### 8.4.2 `EthSM_TrcvLinkStateChgIndication` ```c void EthSM_TrcvLinkStateChgIndication( uint8 TrcvIdx, EthTrcv_LinkStateType LinkState ); ``` **描述**:由 EthIf 调用,通知收发器链路状态变化。 ### 8.5 调度函数 #### 8.5.1 `EthSM_MainFunction` ```c void EthSM_MainFunction(void); ``` **描述**:周期性处理状态机转换、超时监督。 **调度**:由 BSW 调度器调用(典型 10-100ms)。 ### 8.6 期望的接口 #### 8.6.1 强制接口 | API | 描述 | |---|---| | `ComM_BusSM_ModeIndication` | 通知 ComM 当前网络模式 | | `BswM_EthSM_CurrentState` | 通知 BswM 当前状态 | | `TcpIp_RequestComMode` | 请求 TcpIp 模式 | | `Det_ReportError` | 上报开发错误 | | `Dem_SetEventStatus` | 上报生产错误 | #### 8.6.2 可选接口 | API | 描述 | |---|---| | `Csm_MacGenerate` | COTS CSM 接口 | #### 8.6.3 可配置接口 无。 --- ## 9 时序图 > 摘要标记:本章包含约 8+ 个时序图。关键流程: > - **图 1:EthSM 初始化**:EcuM → `EthSM_Init`。 > - **图 2:FullCom 请求**:ComM → `EthSM_RequestComMode` → TcpIp → `EthSM_TcpIpModeIndication` → BswM。 > - **图 3:NoCom 请求**:关闭流程。 > - **图 4:链路变化**:EthIf → `EthSM_TrcvLinkStateChgIndication`。 > - **图 5:超时处理**:TcpIp 在超时内未响应。 > - **图 6:ONHOLD 状态(4.2.1 新增)**。 > - **图 7:COTS CSM 接口**。 --- ## 10 配置规范 ### 10.1 容器结构 ``` EthSM ├── EthSMGeneral ├── EthSMConfig (multi) │ ├── EthSMNetwork │ │ ├── EthSMDemEventParameterRefs │ │ └── EthSMNetworkDemEventParameterRefs └── EthSMDemEventParameterRefs ``` ### 10.2 关键配置参数 #### 10.2.1 `EthSMGeneral` | 参数 | 类型 | 描述 | |---|---|---| | `EthSMDevErrorDetect` | Boolean | 启用开发错误检测(4.3.1 移除) | | `EthSMVersionInfoApi` | Boolean | 启用版本信息 API | | `EthSMUseCsmIf` | Boolean | 启用 COTS CSM 接口 | | `EthSMMainFunctionPeriod` | Float | 主函数周期(秒) | | `EthSMInitNetworkTime` | Float | 网络初始化时间(秒) | | `EthSMTcpIpTimeout` | Float | TcpIp 超时(秒) | #### 10.2.2 `EthSMNetwork` | 参数 | 类型 | 描述 | |---|---|---| | `EthSMNetworkIndex` | Integer | 网络索引 | | `EthSMComMNetworkHandleRef` | Reference | ComM 网络句柄引用 | | `EthSMTcpIpLocalAddrId` | Integer | TcpIp 本地地址 ID | | `EthSMTrcvLinkStateChangeSupported` | Boolean | 支持收发器链路状态变化 | ### 10.3 发布信息 无附加发布参数。 --- ## 翻译说明 - 本文档基于 **AUTOSAR CP Release 4.4.0** 翻译,对应原文 `AUTOSAR_SWS_EthernetStateManager.pdf`(54 页)。 - 关键翻译策略: - **完整翻译**:封面、文档标识、变更历史、目录、章节 1-10 的所有正文、API 声明、错误分类、配置参数。 - **保留英文**:所有 API 名、类型名、状态名、配置参数标识符、需求 ID。 - **摘要标记**:第 6 章需求可追踪性表涵盖 30+ 项需求;第 9 章时序图列出 7 个关键图。完整内容请参见原文 PDF。 - 内容置信度:高。所有 EthSM 状态、API 签名、配置容器均已涵盖。