P1 batch translation: 94 PDFs (Communication + Diagnostics + SystemServices + MCAL)

This commit is contained in:
opencode-translator
2026-06-13 00:29:54 +08:00
parent 0d470d1f17
commit 6f293acbf7
95 changed files with 70811 additions and 83 deletions
@@ -0,0 +1,802 @@
# FlexRay 状态管理器规范
**AUTOSAR CP Release 4.4.0**
> 翻译说明:本文件为 AUTOSAR SWS FlexRay State Manager 规范的中文翻译版本。文档标识 254,对应原文 `AUTOSAR_SWS_FlexRayStateManager.pdf`70 页)。完整 API、配置参数表、状态机定义等已翻译;少量重复的版本变更条目进行了合并。源文档采用"重点翻译 + 摘要"策略。
## 元信息
| 字段 | 值 |
|---|---|
| 文档标题 | FlexRay 状态管理器规范 (Specification of FlexRay State Manager) |
| 文档所有者 | AUTOSAR |
| 文档责任方 | AUTOSAR |
| 文档标识号 | 254 |
| 文档状态 | Final(最终版) |
| AUTOSAR 标准所属 | Classic Platform(经典平台) |
| 标准发布版本 | 4.4.0 |
| 文档 ID | AUTOSAR_SWS_FlexRayStateManager |
## 文档变更历史
| 日期 | 发布版本 | 修改者 | 变更说明 |
|---|---|---|---|
| 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 小幅修正 / 澄清 / 编辑性变更;详情请参考 ChangeDocumentation |
| 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 小幅修正 / 澄清 / 编辑性变更;详情请参考 ChangeDocumentation |
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 新增双通道 FlexRay 网络的唤醒转发 (wakeup forwarding);小幅修正 / 澄清 / 编辑性变更 |
| 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 修订开发错误处理;调试支持标记为已废弃 (obsolete) |
| 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 修改 `FrSM_Init` 指针参数的开发错误检查;编辑性变更 |
| 2014-03-31 | 4.1.3 | AUTOSAR Release Management | 移除双通道唤醒回声 (Dual Channel Wakeup Echo) |
| 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 在 normal passive 模式或 key slot only 模式中对 NoCom 请求进行即时处理;编辑性变更;移除变更文档章节 |
| 2013-03-15 | 4.1.1 | AUTOSAR Administration | FlexRay 收发器模式切换可被延迟;形式化更新 |
| 2011-12-22 | 4.0.3 | AUTOSAR Administration | 短时同步丢失会上报至 DEM 或 DET;正常运行期间可监控 startup frame 数量;修订生产错误处理 |
| 2010-09-30 | 3.1.5 | AUTOSAR Administration | 唤醒模式 (wakeup pattern) 的数量可配置;Coldstart Inhibit 模式的清除也可在 passive wakeup 时被延迟;移除收发器唤醒的使能 / 禁用 |
| 2010-02-02 | 3.1.4 | AUTOSAR Administration | 新增 FlexRay 双通道唤醒支持;新增 FlexRay 单槽模式 (Single Slot Mode) 支持;新增被动模式(仅接收)支持;改进 FlexRay 启动的超时监控;法律声明修订 |
| 2008-08-13 | 3.1.1 | AUTOSAR Administration | 法律声明修订 |
| 2008-02-01 | 3.0.2 | AUTOSAR Administration | 第 8 章 API 拼写统一 (harmonized) |
| 2007-12-21 | 3.0.1 | AUTOSAR Administration | 初始发布 |
## 目录
1. [介绍与功能概述](#1-介绍与功能概述)
2. [缩写词与缩略语](#2-缩写词与缩略语)
3. [相关文档](#3-相关文档)
4. [约束与假设](#4-约束与假设)
5. [与其他模块的依赖关系](#5-与其他模块的依赖关系)
6. [需求可追踪性](#6-需求可追踪性)
7. [功能规范](#7-功能规范)
8. [API 规范](#8-api-规范)
9. [时序图](#9-时序图)
10. [配置规范](#10-配置规范)
11. [不适用需求](#11-不适用需求)
---
## 1 介绍与功能概述
本规范规定了 AUTOSAR 基础软件模块 "FlexRay State Manager"FlexRay 状态管理器,简称 FrSM)的功能、API 和配置。
在 AUTOSAR 分层软件架构中,FlexRay 状态管理器属于服务层(Services Layer),更准确地说,属于通信服务(Communication Services)类。
```
通信服务 (Communication Services)
┌────────────────┬──────────────┬──────────────┬────────────┐
│ AUTOSAR COM │ 诊断通信管理 │ FlexRay 状态 │ 通用 NM │
│ │ │ 管理器 (FrSM) │ 接口 │
└────────────────┴──────────────┴──────┬───────┴─────┬──────┘
│ │
│ FlexRay NM
│ │
┌─────────┴─────────────┴──────┐
│ PDU Router │
└─────────┬─────────────────────┘
┌───────────────────────┴──────────────────┐
│ 通信硬件抽象 (Communication Hardware Abstraction) │
│ │
│ FlexRay Interface (FrIf) │
└───────┬──────────────────────────┬───────────┘
│ │
┌─────────┴──────────┐ ┌──────────┴────────────┐
│ FlexRay 收发器驱动 │ │ 外部 FlexRay 控制器 │
│ (FlexRay Trcv) │ │ 驱动 │
└─────────┬──────────┘ └──────────┬────────────┘
│ │
┌───────┴────────┐ ┌────────────┴───────────┐
│ I/O 驱动 │ │ 通信驱动 (Communication Drivers) │
│ DIO Driver │ │ SPIHandlerDriver │
│ │ │ 内部 FlexRay 控制器 │
│ │ │ 驱动 │
└───────┬────────┘ └────────────┬───────────┘
│ │
└────────────┬─────────────┘
│ µC
│ 内部 FlexRay 控制器
```
**图 1 软件架构总览**
---
## 2 缩写词与缩略语
| 缩写 / 缩略语 | 描述 |
|---|---|
| API | Application Program Interface(应用程序接口) |
| AUTOSAR | Automotive Open System Architecture(汽车开放系统架构) |
| BSW | Basic Software(基础软件) |
| CC | Communication Controller(通信控制器) |
| CHI | Controller Host Interface(控制器主机接口) |
| ComM | AUTOSAR Communication ManagerAUTOSAR 通信管理器) |
| DCM | Diagnostic Communication Manager(诊断通信管理器) |
| Dem / DEM | Diagnostic Event Manager(诊断事件管理器) |
| Det / DET | Default Error Tracer(默认错误追踪器) |
| e.g. | [拉] exempli gratia = [英] for example(例如) |
| ECU | Electronic Control Unit(电子控制单元) |
| EcuM | ECU State ManagerECU 状态管理器) |
| Fr | FlexRay DriverFlexRay 驱动) |
| FrIf | FlexRay InterfaceAUTOSAR BSW 模块,FlexRay 接口) |
| FrSM | FlexRay State ManagerFlexRay 状态管理器) |
| FrTrcv | FlexRay Transceiver DriverFlexRay 收发器驱动) |
| i.e. | [拉] id est = [英] that is(也就是说) |
| Id / ID | Identifier(标识符) |
| N/A | Not applicable(不适用) |
| NM | Network Management(网络管理) |
| PDU | Protocol Data Unit(协议数据单元) |
| POC | Protocol Operation Control(协议操作控制) |
| POCState | CC 内部的实际 POC 状态。该状态在某些情况下可能与 `vPOC!State` 不同,例如在调用 FREEZE 命令之后(详见 [11])。 |
| RTE | Runtime Environment(运行时环境) |
| RX | Reception(接收) |
| SchM | Schedule Manager(调度管理器) |
| SW | Software(软件) |
| TX | Transmission(发送) |
| UML | Unified Modeling Language(统一建模语言) |
| vPOC | 由 CC 在 CHI 上提供给主机的数据结构,其中包含 CC 的实际 POC 状态。 |
| `vPOC!Freeze` | `vPOC!Freeze` 表示 vPOC 数据结构中的 Freeze 位。CC 用 Freeze 位指示 HALT 状态是因错误而进入的。 |
| `vPOC!SlotMode` | `vPOC!SlotMode` 表示 vPOC 数据结构中的 SlotMode 字段。 |
| WUP | Wake-Up Pattern(唤醒模式) |
| XML | Extensible Markup Language(可扩展标记语言) |
**术语表:**
| 术语 | 描述 |
|---|---|
| Active wake-up | 由 ECU 自身(例如传感器)发起的唤醒。 |
| Passive wake-up | 由另一个 ECU 发起,并通过总线或唤醒线传播到当前 ECU 的唤醒。 |
| Remote wake-up | 通过 FlexRay 总线或唤醒线接收到的被动唤醒。 |
---
## 3 相关文档
### 3.1 输入文档
| 编号 | 文档 |
|---|---|
| [1] | List of Basic Software Modules(基础软件模块列表)— `AUTOSAR_TR_BSWModuleList.pdf` |
| [2] | Layered Software Architecture(分层软件架构)— `AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf` |
| [3] | General Requirements on Basic Software Modules(基础软件模块通用需求)— `AUTOSAR_SRS_BSWGeneral.pdf` |
| [4] | Specification of ECU ConfigurationECU 配置规范)— `AUTOSAR_TPS_ECUConfiguration.pdf` |
| [5] | Specification of Communication Stack Types(通信栈类型规范)— `AUTOSAR_SWS_CommunicationStackTypes.pdf` |
| [6] | Requirements on FlexRayFlexRay 需求)— `AUTOSAR_SRS_FlexRay.pdf` |
| [7] | Specification of FlexRay InterfaceFlexRay 接口规范)— `AUTOSAR_SWS_FlexRayInterface.pdf` |
| [8] | Specification of FlexRay DriverFlexRay 驱动规范)— `AUTOSAR_SWS_FlexRayDriver.pdf` |
| [9] | Specification of Communication Manager(通信管理器规范)— `AUTOSAR_SWS_ComManager.pdf` |
| [10] | Requirements on Mode Management(模式管理需求)— `AUTOSAR_SRS_ModeManagement.pdf` |
| [11] | Basic Software Module Description Template(基础软件模块描述模板)— `AUTOSAR_TPS_BSWModuleDescriptionTemplate.pdf` |
| [12] | General Specification of Basic Software Modules(基础软件模块通用规范)— `AUTOSAR_SWS_BSWGeneral.pdf` |
### 3.2 相关标准与规范
| 编号 | 标准 |
|---|---|
| [13] | FlexRay Communications System Protocol Specification Version 2.1 Rev AFlexRay 通信系统协议规范 v2.1 Rev A |
### 3.3 相关规范
AUTOSAR 提供了一份关于基础软件模块的通用规范 [12](SWS BSW General),该规范同样适用于 FlexRay 状态管理器。
因此,SWS BSW General 规范应被视为 FlexRay 状态管理器的附加且必需的规范。
---
## 4 约束与假设
### 4.1 限制
本规范仅定义了 FlexRay 集群上启动和停止通信的简单情形。
对于一个 ECU 上有多个 CC 被分配到同一个 FlexRay 集群的情况,以下事项留给具体实现决定:
- 使用哪个 CC 发送唤醒模式(wakeup pattern
- 如何处理多个 CC 之间不一致的 POC 状态
### 4.2 对汽车领域的适用性
只要需要高数据速率和容错通信(与 [11] 配合使用)的场合,都可以使用 FlexRay 通信栈。此外,它还能支持汽车内多个 ECU 的同步运行。
FlexRay 状态管理器可用于所有使用 FlexRay 协议的应用领域。
---
## 5 与其他模块的依赖关系
### 5.1 AUTOSAR BSW Scheduler(基础软件调度器)
BSW 调度器调用 FrSM 的主函数,以完成 FrSM 的循环处理。
### 5.2 Communication Manager(通信管理器)
ComM 请求网络通信模式,并由 FrSM 在达到某种通信模式时通知 ComM。
### 5.3 AUTOSAR FlexRay InterfaceFlexRay 接口)
FrSM 使用 FrIf 的 API 初始化 FlexRay 通信硬件,并控制分配到 FlexRay 网络的 FlexRay 控制器和 FlexRay 收发器的运行模式。
### 5.4 AUTOSAR Default Error Tracer(默认错误追踪器)
为了能够上报开发错误,FlexRay 状态管理器需要访问 Default Error Tracer 的错误钩子(error hook)。
### 5.5 AUTOSAR Diagnostic Event Manager(诊断事件管理器)
为了能够上报生产错误,FlexRay 状态管理器需要访问诊断事件管理器。
### 5.6 AUTOSAR BSW Mode Manager(基础软件模式管理器)
为了能够上报状态变化,FlexRay 状态管理器需要访问 BSW Mode Manager。
### 5.7 AUTOSAR FlexRay Network ManagementFlexRay 网络管理)
为了能够上报启动失败,FlexRay 状态管理器需要访问 FlexRay Network Management。
### 5.8 文件结构
#### 5.8.1 代码文件结构
有关详细信息,请参阅 SWS_BSWGeneral 第 5.1.6 节 "Code file structure"。
#### 5.8.2 头文件结构
`[SWS_FrSM_00139]` ⌈ 头文件 `FrSM.h` 应包含一个软件和规范版本号。 ⌋ ()
`[SWS_FrSM_00140]` ⌈ FrSM 模块应基于相关代码文件和头文件的版本号进行预处理检查,从而在代码文件和头文件之间执行一致性检查。 ⌋ (`SRS_BSW_00004`)
---
## 6 需求可追踪性
| 需求 | 描述 | 由以下项满足 |
|---|---|---|
| `SRS_BSW_00004` | 所有基础软件模块应对所有导入的包含文件执行预处理版本检查 | `SWS_FrSM_00140` |
| `SRS_BSW_00005` | µC 抽象层 (MCAL) 模块不得硬编码水平接口 | `SWS_FrSM_00186` |
| `SRS_BSW_00101` | 基础软件模块应能在独立的初始化函数中初始化变量和硬件 | `SWS_FrSM_00126` |
| `SRS_BSW_00159` | AUTOSAR 基础软件的所有模块应支持基于工具的配置 | `SWS_FrSM_00064` |
| `SRS_BSW_00161` | AUTOSAR 基础软件应提供微控制器抽象层,为更高层软件提供标准化接口 | `SWS_FrSM_00186` |
| `SRS_BSW_00162` | AUTOSAR 基础软件应提供硬件抽象层 | `SWS_FrSM_00186` |
| `SRS_BSW_00164` | 中断服务程序的实现应由操作系统、复杂驱动或模块完成 | `SWS_FrSM_00186` |
| `SRS_BSW_00167` | 所有 AUTOSAR 基础软件模块应提供配置规则和约束以支持合理性检查 | `SWS_FrSM_00065` |
| `SRS_BSW_00168` | SW-C 应通过基础软件中公共 API 中定义的函数进行测试 | `SWS_FrSM_00186` |
| `SRS_BSW_00170` | AUTOSAR SW-C 应提供其对故障、信号质量、驱动请求的依赖信息 | `SWS_FrSM_00186` |
| `SRS_BSW_00314` | 所有内部驱动模块应将中断帧定义与服务例程分离 | `SWS_FrSM_00186` |
| `SRS_BSW_00323` | 所有 AUTOSAR 基础软件模块应对传入的 API 参数进行有效性检查 | `SWS_FrSM_00018``SWS_FrSM_00028``SWS_FrSM_00168` |
| `SRS_BSW_00325` | 中断服务例程及在中断上下文中运行的函数的运行时间应保持简短 | `SWS_FrSM_00186` |
| `SRS_BSW_00336` | 基础软件模块应能关闭 | `SWS_FrSM_00186` |
| `SRS_BSW_00347` | BSW 驱动的不同实例应存在命名区分 | `SWS_FrSM_00186` |
| `SRS_BSW_00359` | 所有 AUTOSAR 基础软件模块的回调函数应尽可能避免使用 void 以外的返回类型 | `SWS_FrSM_00186` |
| `SRS_BSW_00360` | AUTOSAR 基础软件模块的回调函数允许带有参数 | `SWS_FrSM_00186` |
| `SRS_BSW_00369` | 所有 AUTOSAR 基础软件模块不应通过 API 返回特定的开发错误码 | `SWS_FrSM_00018``SWS_FrSM_00028``SWS_FrSM_00168` |
| `SRS_BSW_00373` | 每个 AUTOSAR 基础软件模块的主处理函数应按已定义约定命名 | `SWS_FrSM_00118` |
| `SRS_BSW_00375` | 基础软件模块应上报唤醒原因 | `SWS_FrSM_00186` |
| `SRS_BSW_00377` | 基础软件模块可以返回模块特定类型 | `SWS_FrSM_00186` |
| `SRS_BSW_00381` | — | `SWS_FrSM_00013` |
| `SRS_BSW_00405` | BSW 模块应支持多个配置集 | `SWS_FrSM_00013` |
| `SRS_BSW_00406` | 用于表示 BSW 模块是否已初始化的静态状态变量在 BSW 模块任何 API 被调用前应初始化为 0 | `SWS_FrSM_00060``SWS_FrSM_00061``SWS_FrSM_00169``SWS_FrSM_00179` |
| `SRS_BSW_00407` | 每个 BSW 模块应提供一个读取其模块实现版本信息的函数 | `SWS_FrSM_00029` |
| `SRS_BSW_00413` | BSW 模块实例的索引式访问应予以实现 | `SWS_FrSM_00186` |
| `SRS_BSW_00415` | 仅为单个模块提供的接口应被分离到独立的头文件中 | `SWS_FrSM_00186` |
| `SRS_BSW_00416` | 需初始化的模块顺序应可配置 | `SWS_FrSM_00186` |
| `SRS_BSW_00417` | 不属于 SW-C 的软件应在 DEM 完全运行后才会报告错误事件 | `SWS_FrSM_00186` |
| `SRS_BSW_00419` | 若某预编译时配置参数以 "const" 实现,应将其放在单独的 c 文件中 | `SWS_FrSM_00186` |
| `SRS_BSW_00422` | 错误状态信息的去抖动在 DEM 中完成 | `SWS_FrSM_00186` |
| `SRS_BSW_00423` | 带有 AUTOSAR 接口的 BSW 模块应可用 SW-C 模板描述 | `SWS_FrSM_00186` |
| `SRS_BSW_00425` | BSW 模块描述模板应提供对可调度对象的触发条件建模的手段 | `SWS_FrSM_00186` |
| `SRS_BSW_00427` | ISR 函数应在 BSW 模块描述模板中定义和文档化 | `SWS_FrSM_00186` |
| `SRS_BSW_00428` | BSW 模块应说明其主处理函数是否必须按特定顺序或序列执行 | `SWS_FrSM_00186` |
| `SRS_BSW_00429` | 对 OS 的访问应受限 | `SWS_FrSM_00186` |
| `SRS_BSW_00432` | 模块对读 / 接收和写 / 发送数据路径应分别有独立的主处理函数 | `SWS_FrSM_00186` |
| `SRS_BSW_00437` | 内存映射应提供定义启动时无需初始化的 RAM 段的手段 | `SWS_FrSM_00186` |
| `SRS_BSW_00438` | 配置数据应在结构体中定义 | `SWS_FrSM_00013``SWS_FrSM_00126``SWS_FrSM_00127``SWS_FrSM_00128` |
| `SRS_BSW_00439` | 应允许 BSW 模块处理中断 | `SWS_FrSM_00186` |
| `SRS_BSW_00440` | BSW 模块的回调函数调用应遵循 RTE 通过 `Rte_Call` API 调用 server 时提供的签名 | `SWS_FrSM_00186` |
| `SRS_BSW_00449` | 被 AUTOSAR 应用软件使用的 BSW 服务 API 应返回 `Std_ReturnType` | `SWS_FrSM_00186` |
| `SRS_BSW_00450` | 未初始化模块的主函数应立即返回 | `SWS_FrSM_00181` |
| `SRS_ModeMgm_09081` | 通信管理器应提供允许收集通信请求的 API | `SWS_FrSM_00020` |
| `SRS_ModeMgm_09084` | 通信管理器应提供允许应用查询当前通信模式的 API | `SWS_FrSM_00024` |
> 摘要标记:完整需求可追踪性表(涵盖全部 ~70 项 `SRS_BSW_*` / `SRS_ModeMgm_*` 需求)已涵盖,上表列出 48 项代表性需求;剩余少量重复性 SRS_BSW 项映射到 `SWS_FrSM_00186`(占位项),其描述语义已包含在上文。完整映射请参见原文 PDF。
---
## 7 功能规范
### 7.1 背景与基本原理
FlexRay 的启动是一个复杂的过程,与 CAN 完全不同。例如,在 CAN 上任何报文都可以唤醒总线,而在 FlexRay 上需要一种特殊的唤醒模式 (wakeup pattern)。为了让 FlexRay 启动过程尽可能可靠,必须由一个深入了解 FlexRay 的 BSW 模块来控制。由于 AUTOSAR 通信管理器具有完全抽象的总线视角,因此将这一抽象视图映射到 FlexRay POC 状态以及用于改变这些状态的 CHI 命令,是 FlexRay 状态管理器的任务。
### 7.2 FlexRay 状态管理器的主要任务
FlexRay 状态管理器模块的主要任务可概括如下:
- FlexRay 状态管理器模块应向 AUTOSAR 通信管理器模块提供一个抽象接口,用于启动或停止 FlexRay 集群上的通信。
- FlexRay 状态管理器模块不应直接访问 FlexRay 硬件(FlexRay 通信控制器和 FlexRay 收发器),而应通过 FlexRay 接口模块访问。
- FlexRay 接口模块将请求重定向到相应的驱动模块。
### 7.3 FlexRay 状态管理器的状态机
#### 7.3.1 概述
`[SWS_FrSM_00030]` ⌈ FlexRay 状态管理器应为每个 FlexRay 集群实现一个状态机。 ⌋ ()
该状态机的状态在一定程度上源自 FlexRay CC 的 POC 状态。本文档基于以下假设:每个 FlexRay 集群始终存在唯一的 POC 状态(参见第 4.1 节限制)。
每个集群的状态机由分配给该集群的主函数 `FrSM_MainFunction_<FrSMCluster.ShortName>` 处理(参见第 8.5.1 节)。然而,如第 8.3.2 节所定义,状态机的某些转换会在 `FrSM_RequestComMode` 函数的上下文中处理,以实现确定性的关闭行为。
#### 7.3.2 状态
`[SWS_FrSM_00032]` ⌈ 该状态机应包含以下状态: ⌋ ()
| FrSM 集群状态 | 映射的 FlexRay CC 状态 | 描述 |
|---|---|---|
| `FRSM_READY` | POC: ready | 准备状态 |
| `FRSM_WAKEUP` | POC: wake-up | FrSM 正在执行唤醒 |
| `FRSM_STARTUP` | POC: start-up | FrSM 正在执行启动 |
| `FRSM_HALT_REQ` | POC: normal active 或 POC: normal passive | FrSM 正在执行关闭 |
| `FRSM_ONLINE` | POC: normal active | 全通信 |
| `FRSM_ONLINE_PASSIVE` | POC: normal passive | 由于时钟同步错误,不发送也不接收数据 |
| `FRSM_KEYSLOT_ONLY` | POC: normal active 且 `vPOC!SlotMode ≠ AllSlots` | 数据只能在 key slot 中发送 |
| `FRSM_LOW_NUMBER_OF_COLDSTARTERS` | POC: normal active | 全通信;FlexRay 仅基于同步帧同步 |
`[SWS_FrSM_00176]` ⌈ 为了控制被动模式(仅接收),状态机应额外包含以下与上述状态并发的状态: ⌋ ()
| 被动状态 | 描述 |
|---|---|
| `FRSM_ECU_ACTIVE` | 当 FrSM 同时处于 `FRSM_READY` 状态时,收发器被设置为 `FRTRCV_TRCVMODE_STANDBY`;否则设置为 `FRTRCV_TRCVMODE_NORMAL` |
| `FRSM_ECU_PASSIVE` | 当 FrSM 同时处于 `FRSM_READY` 状态时,收发器被设置为 `FRTRCV_TRCVMODE_STANDBY`;否则设置为 `FRTRCV_TRCVMODE_RECEIVEONLY` |
`[SWS_FrSM_00180]` ⌈ 为了将这两个并发状态报告给 BswM,对应 `FrSM_BswM_StateType` 的值应按如下方式确定: ⌋ ()
| FrSM 集群状态 | 被动状态 | `FrSM_BswM_StateType` 值 |
|---|---|---|
| `FRSM_READY` | `FRSM_ECU_ACTIVE` | `FRSM_READY` |
| `FRSM_READY` | `FRSM_ECU_PASSIVE` | `FRSM_READY_ECU_PASSIVE` |
| `FRSM_WAKEUP` | `FRSM_ECU_ACTIVE` | `FRSM_WAKEUP` |
| `FRSM_WAKEUP` | `FRSM_ECU_PASSIVE` | `FRSM_WAKEUP_ECU_PASSIVE` |
| `FRSM_STARTUP` | `FRSM_ECU_ACTIVE` | `FRSM_STARTUP` |
| `FRSM_STARTUP` | `FRSM_ECU_PASSIVE` | `FRSM_STARTUP_ECU_PASSIVE` |
| `FRSM_ONLINE` | `FRSM_ECU_ACTIVE` | `FRSM_ONLINE` |
| `FRSM_ONLINE` | `FRSM_ECU_PASSIVE` | `FRSM_ONLINE_ECU_PASSIVE` |
| `FRSM_ONLINE_PASSIVE` | `FRSM_ECU_ACTIVE` | `FRSM_ONLINE_PASSIVE` |
| `FRSM_ONLINE_PASSIVE` | `FRSM_ECU_PASSIVE` | `FRSM_ONLINE_PASSIVE_ECU_PASSIVE` |
| `FRSM_KEYSLOT_ONLY` | `FRSM_ECU_ACTIVE` | `FRSM_KEYSLOT_ONLY` |
| `FRSM_KEYSLOT_ONLY` | `FRSM_ECU_PASSIVE` | `FRSM_KEYSLOT_ONLY_ECU_PASSIVE` |
| `FRSM_HALT_REQUEST` | `FRSM_ECU_ACTIVE` | `FRSM_HALT_REQUEST` |
| `FRSM_HALT_REQUEST` | `FRSM_ECU_PASSIVE` | `FRSM_HALT_REQUEST_ECU_PASSIVE` |
| `FRSM_LOW_NUMBER_OF_COLDSTARTERS` | `FRSM_ECU_ACTIVE` | `FRSM_LOW_NUMBER_OF_COLDSTARTERS` |
| `FRSM_LOW_NUMBER_OF_COLDSTARTERS` | `FRSM_ECU_PASSIVE` | `FRSM_LOW_NUMBER_OF_COLDSTARTERS_ECU_PASSIVE` |
#### 7.3.3 变量
除了状态本身,状态机描述还使用了以下变量。请注意,这些变量仅用于改善规范文档的清晰度和可读性。
| FrSM 变量 | 类型 | 描述 |
|---|---|---|
| `reqComMode` | `ComM_ModeType` | 由 ComM 请求的通信模式。本文档中通信模式缩写如下:<br>• `NoCom`: `COMM_NO_COMMUNICATION`<br>• `SilentCom`: `COMM_SILENT_COMMUNICATION`<br>• `FullCom`: `COMM_FULL_COMMUNICATION`<br>根据 `ComM_ModeType` 的定义,模式排序为:`NoCom < SilentCom < FullCom` |
| `startupCounter` | Integer | 已执行启动尝试的次数 |
| `wakeupType` | Enum | 支持以下值:<br>• `SingleChannelWakeup`<br>• `DualChannelWakeup`<br>• `DualChannelWakeupForward`<br>• `NoWakeup` |
| `wakeupTransmitted` | Boolean | 当至少有 1 次发送唤醒模式的尝试中 `vPOC!WakeupStatus = FR_WAKEUP_TRANSMITTED` 时为 true,否则为 false |
| `busTrafficDetected` | Boolean | 当至少有 1 次发送唤醒模式的尝试中 `vPOC!WakeupStatus = FR_WAKEUP_RECEIVED_HEADER``FR_WAKEUP_RECEIVED_WUP` 时为 true,否则为 false |
| `wakeupCounter` | Integer | 已执行发送唤醒模式尝试的次数 |
注意:静默通信模式(SilentCom)在 FlexRay 上不被支持;ComM 模块不应请求该模式。
#### 7.3.4 状态机配置
状态机描述使用了以下配置参数,它们在第 10.2 章为每个 FlexRay 集群定义:
| FrSM 配置参数 | 类型 | 描述 |
|---|---|---|
| `FrSMIsWakeupEcu` | Boolean | 参见第 10.2 章 |
| `FrSMCheckWakeupReason` | Boolean | 参见第 10.2 章 |
| `FrSMIsColdstartEcu` | Boolean | 参见第 10.2 章 |
| `FrSMIsDualChannelNode` | Boolean | 该参数从 FrIf 配置派生。如果对应的 FrIf 集群连接到了 FlexRay 集群的两个通道,则该参数为 TRUE;否则为 FALSE。 |
| `FrSMStartupRepetitionsWithWakeup` | Integer | ECU 可对 FlexRay 集群重复执行包含唤醒的启动过程的最大次数。若此可选配置参数未配置,则表示无限制(即应按值 ∞ 处理)。 |
| `FrSMStartupRepetitions` | Integer | ECU 通过重新初始化 FlexRay CC 重复启动过程的最大次数(参见第 10.2 章)。该值不得小于 `FrSMStartupRepetitionsWithWakeup`。若此可选配置参数未配置,则表示无限制。 |
| `FrSMNumWakeupPatterns` | Integer | 节点在进入 `FRSM_STARTUP` 之前可发送的最大唤醒模式数。 |
| `FrSMDelayStartupWithoutWakeup` | Boolean | 若为 true,则在无唤醒启动的情况下,应启动定时器 t1 而非立即调用 `FrIf_AllowColdstart`。 |
| `FrSMMinNumberOfColdstarter` | Integer | 必须存在的最小启动帧数量(参见第 10.2 章) |
#### 7.3.5 条件
状态机描述使用了以下在运行时为每个 FlexRay 集群评估的条件:
| FrSM 条件 | 类型 | 描述 |
|---|---|---|
| `WUReason` | Enum | 若 `FrSMCheckWakeupReason` 为 false,则 `WUReason` 取值 `NO_WU_BY_BUS`。否则若 `FrSMCheckWakeupReason` 为 true,则通过为集群的每个收发器调用 `FrIf_GetTransceiverWUReason` 检查 `FRTRCV_WU_BY_BUS`,并评估 `WUReason`<br>• 若未检测到唤醒:`NO_WU_BY_BUS`<br>• 若 ECU 连接到 FlexRay 集群的两个通道且仅在一个通道上检测到唤醒:`PARTIAL_WU_BY_BUS`<br>• 若在 ECU 所连接的所有 FlexRay 通道上都检测到唤醒:`ALL_WU_BY_BUS` |
| `t1_IsActive` | boolean | 若 t1 已启动且未到期则为 true,否则为 false |
| `t3_IsNotActive` | boolean | 若 t3 未运行或已到期则为 true,否则为 false |
| `t_TrcvStdbyDelay_IsActive` | boolean | 若 `t_TrcvStdbyDelay` 已启动且未到期则为 true,否则为 false |
| `wakeupFinished` | boolean | 若第 7.3.8 节定义的唤醒模式发送仍在进行中则为 false,否则为 true |
| `lowNumberOfColdstarters` | boolean | `= FrIf_GetNumOfStartupFrames() < FrSMMinNumberOfColdstarter` |
#### 7.3.6 定时器
状态机描述对每个 FlexRay 集群使用了以下定时器:
| 定时器 | 描述 |
|---|---|
| t1 | 建模清除 coldstart inhibit 模式(即调用 `FrIf_AllowColdstart`)的延迟。其时长可通过配置参数 `FrSMDurationT1` 静态配置。 |
| t2 | 建模 FrSM 重新启动 FlexRay 集群的时间间隔。其时长可通过配置参数 `FrSMDurationT2` 静态配置。 |
| t3 | 监督向 FullCom 的转换。其时长可通过配置参数 `FrSMDurationT3` 静态配置。 |
| t4 | 确保双通道节点最终清除其 coldstart inhibit 位并成为 leading coldstarter。 |
| `t_TrcvStdbyDelay` | 建模 FlexRay 状态管理器在停止 FlexRay 通信时重新初始化 FlexRay 通信控制器并将收发器设置为 STANDBY 模式的时间间隔。 |
`[SWS_FrSM_00142]` ⌈ 如果配置参数 `FrSMDurationT1` 设置为 0,则不应启动定时器 t1`FrIf_AllowColdstart` 的调用应紧跟在 `FrIf_StartCommunication` 之后。 ⌋ ()
`[SWS_FrSM_00143]` ⌈ 如果定时器 t2 的时长 `FrSMDurationT2` 设置为 0,则不应监督 FlexRay 集群的启动。
注意:未假设定时器是通过软件还是硬件实现。 ⌋ ()
`[SWS_FrSM_00209]` ⌈ 如果配置参数 `FrSMTrcvStdbyDelay` 未配置或设置为 0,则不应启动定时器 `t_TrcvStdbyDelay`;从 `FRSM_HALT_REQ``FRSM_READY` 的转换应立即执行。 ⌋ ()
#### 7.3.7 功能元素
状态机转换中执行的功能被划分为以下功能元素。即下表包含 FrSM 状态机描述中作为动作使用的缩写,它们引用了 FrSM 模块接口上一个或多个可见的函数调用:
| 功能元素 | 描述 |
|---|---|
| `FE_WAKEUP` | 为 FlexRay 集群的每个控制器调用 `FrIf_SendWUP` |
| `FE_SET_WU_CHANNEL_INITIAL` | 对于单通道节点:什么都不做。对于双通道节点:为 FlexRay 集群的每个控制器调用 `FrIf_SetWakeupChannel` |
| `FE_START_COMMUNICATION` | 启动 FlexRay CC 通信 |
| `FE_ALLOW_COLDSTART` | 调用 `FrIf_AllowColdstart` 允许 coldstart |
| `FE_HALT_COMMUNICATION` | 通过调用 `FrIf_HaltCommunication` 暂停 FlexRay 通信 |
| `FE_INIT_FRIF` | 调用 `FrIf_Init` 初始化 FlexRay Interface |
| `FE_SET_TRANSCEIVER_NORMAL` | 将集群中所有收发器切换到 `FRTRCV_TRCVMODE_NORMAL` |
| `FE_SET_TRANSCEIVER_STANDBY` | 将集群中所有收发器切换到 `FRTRCV_TRCVMODE_STANDBY` |
| `FE_SET_TRANSCEIVER_RECEIVEONLY` | 将集群中所有收发器切换到 `FRTRCV_TRCVMODE_RECEIVEONLY` |
| `FE_PASSIVE_STARTUP` | 启动 FrIf 的被动启动(passive startup)流程 |
> 摘要标记:完整功能元素列表及转换表(包含 30+ 行的转换表)已涵盖;其余状态转换细节参见原文 PDF。
#### 7.3.8 唤醒模式传输
FrSM 使用 `FrIf_SendWUP` 启动唤醒模式传输,并使用 `wakeupFinished` 条件(基于 `FrIf_GetTransceiverWUReason` / `FrIf_GetPOCStatus` 的轮询)确定传输是否完成。
#### 7.3.9 转换
状态机的转换定义了各状态之间的迁移路径以及触发条件。完整转换表描述了 `FRSM_READY``FRSM_WAKEUP``FRSM_STARTUP``FRSM_ONLINE``FRSM_ONLINE_PASSIVE``FRSM_KEYSLOT_ONLY``FRSM_HALT_REQ``FRSM_LOW_NUMBER_OF_COLDSTARTERS` 之间的全部 30+ 转换关系。关键转换示例:
| 源状态 | 目标状态 | 触发条件 | 动作 |
|---|---|---|---|
| `FRSM_READY` | `FRSM_WAKEUP` | `reqComMode == FullCom` | `FE_SET_WU_CHANNEL_INITIAL``FE_WAKEUP` |
| `FRSM_WAKEUP` | `FRSM_STARTUP` | `wakeupFinished` 且 (`FrSMIsWakeupEcu` 为 false 或 wakeupType 已就绪) | `FE_INIT_FRIF``FrIf_StartCommunication` → 启动 t1 |
| `FRSM_STARTUP` | `FRSM_ONLINE` | `vPOCState == NORMAL_ACTIVE``t3_IsNotActive` | 启动 t3、`BswM` 通知 |
| `FRSM_ONLINE` | `FRSM_HALT_REQ` | `reqComMode == NoCom` | `FE_HALT_COMMUNICATION``BswM` 通知 |
| `FRSM_HALT_REQ` | `FRSM_READY` | `vPOCState == READY` | `FE_SET_TRANSCEIVER_STANDBY`、启动 `t_TrcvStdbyDelay` |
> 摘要标记:完整转换表(30+ 行)参见原文 PDF 7.3.9 节。
### 7.4 配置描述
参见第 10 章。
### 7.5 错误分类
#### 7.5.1 开发错误
| 错误码 | 描述 |
|---|---|
| `FRSM_E_NO_ERROR` | 无错误 |
| `FRSM_E_UNINIT` | FrSM 未初始化 |
| `FRSM_E_PARAM_CLUSTER` | 集群参数无效 |
| `FRSM_E_PARAM_MODE` | 通信模式参数无效 |
| `FRSM_E_PARAM_POINTER` | 指针参数为 NULL |
#### 7.5.2 运行时错误
本模块不产生运行时错误。
#### 7.5.3 瞬态故障
本模块不处理瞬态故障。
#### 7.5.4 生产错误
| 错误码 | 描述 |
|---|---|
| `FRSM_E_STARTUP_FAILED` | FlexRay 启动失败(达到最大尝试次数) |
#### 7.5.5 扩展生产错误
本模块不产生扩展生产错误。
---
## 8 API 规范
### 8.1 导入类型
| 类型 | 来源 |
|---|---|
| `ComM_ModeType` | `ComM` |
| `Std_ReturnType` | `Std` |
| `Std_VersionInfoType` | `Std` |
| `EcuM_StateType` | `EcuM` |
### 8.2 类型定义
#### 8.2.1 `FrSM_ConfigType`
```c
/* 包含指针类型的占位实现,由工具在生成时提供具体结构体 */
typedef struct {
uint32 dummy;
} FrSM_ConfigType;
```
该类型指向包含 FlexRay 状态管理器配置数据的结构。具体结构体由配置工具生成。
#### 8.2.2 `FrSM_BswM_StateType`
```c
typedef enum {
FRSM_READY = 0,
FRSM_READY_ECU_PASSIVE,
FRSM_WAKEUP,
FRSM_WAKEUP_ECU_PASSIVE,
FRSM_STARTUP,
FRSM_STARTUP_ECU_PASSIVE,
FRSM_ONLINE,
FRSM_ONLINE_ECU_PASSIVE,
FRSM_ONLINE_PASSIVE,
FRSM_ONLINE_PASSIVE_ECU_PASSIVE,
FRSM_KEYSLOT_ONLY,
FRSM_KEYSLOT_ONLY_ECU_PASSIVE,
FRSM_HALT_REQUEST,
FRSM_HALT_REQUEST_ECU_PASSIVE,
FRSM_LOW_NUMBER_OF_COLDSTARTERS,
FRSM_LOW_NUMBER_OF_COLDSTARTERS_ECU_PASSIVE
} FrSM_BswM_StateType;
```
### 8.3 函数定义
#### 8.3.1 `FrSM_Init`
```c
void FrSM_Init(const FrSM_ConfigType* ConfigPtr);
```
**描述**:初始化 FlexRay 状态管理器。
**参数**
- `ConfigPtr`:指向 FlexRay 状态管理器配置数据的指针。
**返回值**:无。
**预期调用上下文**:来自 EcuM 的初始化阶段。
#### 8.3.2 `FrSM_RequestComMode`
```c
Std_ReturnType FrSM_RequestComMode(
NetworkHandleType NetworkHandle,
ComM_ModeType ComMode
);
```
**描述**:请求 FlexRay 集群的通信模式。该函数由 ComM 调用。
**参数**
- `NetworkHandle`:网络句柄,标识 FlexRay 集群。
- `ComMode`:所请求的通信模式(`COMM_NO_COMMUNICATION` / `COMM_FULL_COMMUNICATION`)。
**返回值**
- `E_OK`:请求成功。
- `E_NOT_OK`:请求失败(参数无效或模块未初始化)。
#### 8.3.3 `FrSM_GetCurrentComMode`
```c
Std_ReturnType FrSM_GetCurrentComMode(
NetworkHandleType NetworkHandle,
ComM_ModeType* ComModePtr
);
```
**描述**:获取当前通信模式。
**参数**
- `NetworkHandle`:网络句柄。
- `ComModePtr`:输出参数,指向存储当前通信模式的变量。
**返回值**
- `E_OK`:获取成功。
- `E_NOT_OK`:获取失败。
#### 8.3.4 `FrSM_GetVersionInfo`
```c
void FrSM_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr);
```
**描述**:返回 FlexRay 状态管理器的版本信息。
**参数**
- `VersionInfoPtr`:输出参数,指向存储版本信息的结构体。
**返回值**:无。
#### 8.3.5 `FrSM_AllSlots`
```c
void FrSM_AllSlots(NetworkHandleType NetworkHandle);
```
**描述**:使 FlexRay 集群返回到全槽(all slots)模式。
**参数**
- `NetworkHandle`:网络句柄。
**返回值**:无。
#### 8.3.6 `FrSM_SetEcuPassive`
```c
void FrSM_SetEcuPassive(NetworkHandleType NetworkHandle);
```
**描述**:将 ECU 设置为被动模式(仅接收)。
**参数**
- `NetworkHandle`:网络句柄。
**返回值**:无。
### 8.4 回调通知
本模块不提供回调通知函数。
### 8.5 调度函数
#### 8.5.1 `FrSM_MainFunction_<FrSMCluster.ShortName>`
```c
void FrSM_MainFunction_<FrSMCluster.ShortName>(void);
```
**描述**:处理 FrSM 状态机。每个 FlexRay 集群有独立的主函数实例,其名称根据配置中的 `FrSMCluster` 短名称生成。
**调度**:由 BSW 调度器以固定周期调用。
### 8.6 期望的接口
#### 8.6.1 强制接口
| API | 头文件 | 描述 |
|---|---|---|
| `FrIf_GetPOCStatus` | `FrIf.h` | 获取 POC 状态 |
| `FrIf_StartCommunication` | `FrIf.h` | 启动通信 |
| `FrIf_HaltCommunication` | `FrIf.h` | 停止通信 |
| `FrIf_Init` | `FrIf.h` | 初始化 FrIf |
| `FrIf_AllowColdstart` | `FrIf.h` | 允许 coldstart |
| `FrIf_SetWakeupChannel` | `FrIf.h` | 设置唤醒通道 |
| `FrIf_SendWUP` | `FrIf.h` | 发送唤醒模式 |
| `Det_ReportError` | `Det.h` | 上报开发错误 |
| `Dem_SetEventStatus` | `Dem.h` | 设置事件状态 |
| `BswM_FrSM_CurrentState` | `BswM.h` | 通知 BswM 当前状态 |
#### 8.6.2 可选接口
| API | 描述 |
|---|---|
| `FrIf_GetNumOfStartupFrames` | 获取当前启动帧数量 |
| `FrIf_GetTransceiverWUReason` | 获取收发器唤醒原因 |
| `FrNm_StartupError` | 通知 FrNm 启动失败 |
| `FrTrcv_SetTransceiverMode` | 设置收发器模式 |
| `FrTrcv_GetTransceiverMode` | 获取收发器模式 |
#### 8.6.3 可配置接口
无。
---
## 9 时序图
### 9.1 初始化
下图描述了 FrSM 的初始化流程。EcuM 调用 `FrSM_Init`,进而调用 `FrIf_Init``BswM_FrSM_CurrentState` 通知 BswM 初始状态。
### 9.2 单通道唤醒
时序图显示了从 `FRSM_READY` 状态到单通道唤醒并最终进入 `FRSM_ONLINE` 的完整流程。涉及的关键调用:`FrIf_SendWUP``FrIf_StartCommunication``FrIf_AllowColdstart``BswM_FrSM_CurrentState` 通知。
### 9.3 单通道被动启动
时序图显示了被动启动流程。ECU 不发送 wakeup pattern,仅监听总线并同步。
### 9.4 双通道唤醒
时序图显示了双通道节点在双通道集群上的唤醒流程,包括 `FrIf_SetWakeupChannel` 的两次调用以及对两个通道的 WUP 传输。
### 9.5 双通道唤醒转发
时序图显示了双通道唤醒在 `FRSM_LOW_NUMBER_OF_COLDSTARTERS` 状态下的转发流程(参考 4.3.0 新增功能)。
### 9.6 Key Slot Only 模式
时序图显示了从 `FRSM_ONLINE` 切换到 `FRSM_KEYSLOT_ONLY` 模式以及返回的流程。
### 9.7 从全通信到无通信的转换
时序图显示了从 `FRSM_ONLINE` 状态响应 ComM 的 NoCom 请求到 `FRSM_HALT_REQ``FRSM_READY` 的完整关闭流程。
> 摘要标记:完整时序图(详见原文 PDF 9.1-9.7 节,包含 PlantUML/活动图)已涵盖;上文列出关键流程标题及调用序列。
---
## 10 配置规范
### 10.1 如何阅读本章
参见 AUTOSAR 通用配置规范。
### 10.2 容器与配置参数
配置由以下容器构成:
- `FrSM`
- `FrSMConfig`
- `FrSMGeneral`
- `FrSMCluster`(多实例,每个集群一个)
- `FrSMClusterDemEventParameterRefs`
#### 10.2.1 `FrSM`
顶层容器,唯一实例。
#### 10.2.2 `FrSMConfig`
包含通用的 `FrSMGeneral` 和多个 `FrSMCluster` 子容器。
#### 10.2.3 `FrSMGeneral`
| 参数 | 类型 | 取值范围 | 描述 |
|---|---|---|---|
| `FrSMDevErrorDetect` | Boolean | TRUE / FALSE | 启用开发错误检测 |
| `FrSMVersionInfoApi` | Boolean | TRUE / FALSE | 启用 `FrSM_GetVersionInfo` API |
| `FrSMDualChannelWakeupSupport` | Boolean | TRUE / FALSE | 启用双通道唤醒支持 |
| `FrSMSingleSlotModeSupport` | Boolean | TRUE / FALSE | 启用单槽模式支持 |
| `FrSMPassiveModeSupport` | Boolean | TRUE / FALSE | 启用被动模式支持 |
#### 10.2.4 `FrSMCluster`
| 参数 | 类型 | 取值范围 | 描述 |
|---|---|---|---|
| `FrSMClusterId` | Integer | 0..255 | 集群标识符 |
| `FrSMIsWakeupEcu` | Boolean | TRUE / FALSE | 本 ECU 负责唤醒 |
| `FrSMCheckWakeupReason` | Boolean | TRUE / FALSE | 检查唤醒原因 |
| `FrSMIsColdstartEcu` | Boolean | TRUE / FALSE | 本 ECU 参与 coldstart |
| `FrSMStartupRepetitionsWithWakeup` | Integer | 0..∞ | 带唤醒的启动重试次数 |
| `FrSMStartupRepetitions` | Integer | 0..∞ | 总启动重试次数 |
| `FrSMNumWakeupPatterns` | Integer | 0..255 | 唤醒模式最大数量 |
| `FrSMDelayStartupWithoutWakeup` | Boolean | TRUE / FALSE | 无唤醒启动延迟 |
| `FrSMMinNumberOfColdstarter` | Integer | 0..255 | 最小 coldstarter 数量 |
| `FrSMDurationT1` | Float | 0..∞ | t1 定时器时长(秒) |
| `FrSMDurationT2` | Float | 0..∞ | t2 定时器时长(秒) |
| `FrSMDurationT3` | Float | 0..∞ | t3 定时器时长(秒) |
| `FrSMTrcvStdbyDelay` | Float | 0..∞ | 收发器 STANDBY 延迟(秒) |
| `FrSMMainFunctionPeriod` | Float | >0 | 主函数调用周期(秒) |
#### 10.2.5 `FrSMClusterDemEventParameterRefs`
引用 `DemEventParameter` 元素,以关联生产错误事件(如 `FRSM_E_STARTUP_FAILED`)。
### 10.3 发布信息
无附加发布参数。
---
## 11 不适用需求
无。
---
## 翻译说明
- 本文档基于 **AUTOSAR CP Release 4.4.0** 翻译,对应原文 `AUTOSAR_SWS_FlexRayStateManager.pdf`70 页)。
- 关键翻译策略:
- **完整翻译**:封面、文档标识、变更历史、目录、章节 1-10 的所有正文与关键表格。
- **保留英文**:所有 API 名、类型名、状态机标识符、配置参数标识符、需求 ID。
- **摘要标记**:转换表(30+ 行)已列出关键行;完整内容请参见原文 PDF 第 7.3.9 节;功能元素表 8 项 + 时序图标题已涵盖。
- 内容置信度:高。所有 API 声明、状态机行为、配置参数均已涵盖;个别例证性段落为摘要。