Files
autosar_standard_spec_v4.4/Communication/AUTOSAR_SWS_EthernetStateManager.md
T

554 lines
16 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 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 商业现货(COTSTCP/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+ 个时序图。关键流程:
> - **图 1EthSM 初始化**EcuM → `EthSM_Init`。
> - **图 2FullCom 请求**ComM → `EthSM_RequestComMode` → TcpIp → `EthSM_TcpIpModeIndication` → BswM。
> - **图 3NoCom 请求**:关闭流程。
> - **图 4:链路变化**EthIf → `EthSM_TrcvLinkStateChgIndication`。
> - **图 5:超时处理**:TcpIp 在超时内未响应。
> - **图 6ONHOLD 状态(4.2.1 新增)**。
> - **图 7COTS 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 签名、配置容器均已涵盖。