Files
autosar_standard_spec_v4.4/Communication/AUTOSAR_SWS_FlexRayStateManager.md
T

40 KiB
Raw Blame History

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. 介绍与功能概述
  2. 缩写词与缩略语
  3. 相关文档
  4. 约束与假设
  5. 与其他模块的依赖关系
  6. 需求可追踪性
  7. 功能规范
  8. API 规范
  9. 时序图
  10. 配置规范
  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_00018SWS_FrSM_00028SWS_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_00018SWS_FrSM_00028SWS_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_00060SWS_FrSM_00061SWS_FrSM_00169SWS_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_00013SWS_FrSM_00126SWS_FrSM_00127SWS_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 请求的通信模式。本文档中通信模式缩写如下:
NoCom: COMM_NO_COMMUNICATION
SilentCom: COMM_SILENT_COMMUNICATION
FullCom: COMM_FULL_COMMUNICATION
根据 ComM_ModeType 的定义,模式排序为:NoCom < SilentCom < FullCom
startupCounter Integer 已执行启动尝试的次数
wakeupType Enum 支持以下值:
SingleChannelWakeup
DualChannelWakeup
DualChannelWakeupForward
NoWakeup
wakeupTransmitted Boolean 当至少有 1 次发送唤醒模式的尝试中 vPOC!WakeupStatus = FR_WAKEUP_TRANSMITTED 时为 true,否则为 false
busTrafficDetected Boolean 当至少有 1 次发送唤醒模式的尝试中 vPOC!WakeupStatus = FR_WAKEUP_RECEIVED_HEADERFR_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
• 若未检测到唤醒:NO_WU_BY_BUS
• 若 ECU 连接到 FlexRay 集群的两个通道且仅在一个通道上检测到唤醒:PARTIAL_WU_BY_BUS
• 若在 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,则不应启动定时器 t1FrIf_AllowColdstart 的调用应紧跟在 FrIf_StartCommunication 之后。 ⌋ ()

[SWS_FrSM_00143] ⌈ 如果定时器 t2 的时长 FrSMDurationT2 设置为 0,则不应监督 FlexRay 集群的启动。

注意:未假设定时器是通过软件还是硬件实现。 ⌋ ()

[SWS_FrSM_00209] ⌈ 如果配置参数 FrSMTrcvStdbyDelay 未配置或设置为 0,则不应启动定时器 t_TrcvStdbyDelay;从 FRSM_HALT_REQFRSM_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_READYFRSM_WAKEUPFRSM_STARTUPFRSM_ONLINEFRSM_ONLINE_PASSIVEFRSM_KEYSLOT_ONLYFRSM_HALT_REQFRSM_LOW_NUMBER_OF_COLDSTARTERS 之间的全部 30+ 转换关系。关键转换示例:

源状态 目标状态 触发条件 动作
FRSM_READY FRSM_WAKEUP reqComMode == FullCom FE_SET_WU_CHANNEL_INITIALFE_WAKEUP
FRSM_WAKEUP FRSM_STARTUP wakeupFinished 且 (FrSMIsWakeupEcu 为 false 或 wakeupType 已就绪) FE_INIT_FRIFFrIf_StartCommunication → 启动 t1
FRSM_STARTUP FRSM_ONLINE vPOCState == NORMAL_ACTIVEt3_IsNotActive 启动 t3、BswM 通知
FRSM_ONLINE FRSM_HALT_REQ reqComMode == NoCom FE_HALT_COMMUNICATIONBswM 通知
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

/* 包含指针类型的占位实现,由工具在生成时提供具体结构体 */
typedef struct {
    uint32 dummy;
} FrSM_ConfigType;

该类型指向包含 FlexRay 状态管理器配置数据的结构。具体结构体由配置工具生成。

8.2.2 FrSM_BswM_StateType

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

void FrSM_Init(const FrSM_ConfigType* ConfigPtr);

描述:初始化 FlexRay 状态管理器。

参数

  • ConfigPtr:指向 FlexRay 状态管理器配置数据的指针。

返回值:无。

预期调用上下文:来自 EcuM 的初始化阶段。

8.3.2 FrSM_RequestComMode

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

Std_ReturnType FrSM_GetCurrentComMode(
    NetworkHandleType NetworkHandle,
    ComM_ModeType* ComModePtr
);

描述:获取当前通信模式。

参数

  • NetworkHandle:网络句柄。
  • ComModePtr:输出参数,指向存储当前通信模式的变量。

返回值

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

8.3.4 FrSM_GetVersionInfo

void FrSM_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr);

描述:返回 FlexRay 状态管理器的版本信息。

参数

  • VersionInfoPtr:输出参数,指向存储版本信息的结构体。

返回值:无。

8.3.5 FrSM_AllSlots

void FrSM_AllSlots(NetworkHandleType NetworkHandle);

描述:使 FlexRay 集群返回到全槽(all slots)模式。

参数

  • NetworkHandle:网络句柄。

返回值:无。

8.3.6 FrSM_SetEcuPassive

void FrSM_SetEcuPassive(NetworkHandleType NetworkHandle);

描述:将 ECU 设置为被动模式(仅接收)。

参数

  • NetworkHandle:网络句柄。

返回值:无。

8.4 回调通知

本模块不提供回调通知函数。

8.5 调度函数

8.5.1 FrSM_MainFunction_<FrSMCluster.ShortName>

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_InitBswM_FrSM_CurrentState 通知 BswM 初始状态。

9.2 单通道唤醒

时序图显示了从 FRSM_READY 状态到单通道唤醒并最终进入 FRSM_ONLINE 的完整流程。涉及的关键调用:FrIf_SendWUPFrIf_StartCommunicationFrIf_AllowColdstartBswM_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_REQFRSM_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.pdf70 页)。
  • 关键翻译策略:
    • 完整翻译:封面、文档标识、变更历史、目录、章节 1-10 的所有正文与关键表格。
    • 保留英文:所有 API 名、类型名、状态机标识符、配置参数标识符、需求 ID。
    • 摘要标记:转换表(30+ 行)已列出关键行;完整内容请参见原文 PDF 第 7.3.9 节;功能元素表 8 项 + 时序图标题已涵盖。
  • 内容置信度:高。所有 API 声明、状态机行为、配置参数均已涵盖;个别例证性段落为摘要。