AUTOSAR进阶图解==>AUTOSAR_SWS_FlexRayStateManager

AUTOSAR FlexRay状态管理器(FrSM)详解

AUTOSAR CP基础软件模块深度分析与图解

目录

  1. 概述
    1.1. FrSM的作用
    1.2. FrSM在AUTOSAR架构中的位置
  2. FlexRay状态管理器架构
    2.1. 架构概览
    2.2. 模块交互关系
  3. FrSM状态机
    3.1. 状态定义
    3.2. 状态转换
    3.3. 状态行为
  4. FlexRay启动流程
    4.1. 启动序列
    4.2. 唤醒机制
  5. FrSM配置参数
    5.1. 配置结构
    5.2. 参数说明
  6. 总结

1. 概述

1.1. FrSM的作用

FlexRay状态管理器(FrSM)是AUTOSAR基础软件栈中的一个重要通信模块,主要负责管理和控制FlexRay通信控制器的状态,执行FlexRay通信的初始化、启动、运行和关闭等操作。FrSM充当了上层通信管理器(ComM)和底层FlexRay接口(FrIf)之间的桥梁,提供了统一的接口来控制FlexRay通信。

FrSM模块主要功能包括:

  • 状态管理:控制FlexRay通信控制器的状态转换
  • 冷启动控制:管理FlexRay集群的冷启动过程
  • 唤醒处理:处理FlexRay网络的唤醒请求和传播
  • 通信控制:根据通信管理器的请求启动或停止FlexRay通信
  • 错误处理:监控和报告FlexRay通信中的错误状态

1.2. FrSM在AUTOSAR架构中的位置

FlexRay状态管理器位于AUTOSAR通信服务层,是通信栈的重要组成部分。它与其他模块的关系如下:

  • 上层接口:向通信管理器(ComM)提供服务
  • 下层接口:使用FlexRay接口(FrIf)提供的服务
  • 平级接口:与网络管理(FrNm)、诊断通信管理器(DCM)等交互

以下架构图展示了FrSM在AUTOSAR软件栈中的位置:

在这里插入图片描述

图1. FlexRay状态管理器在AUTOSAR架构中的位置

从图中可以看出,FrSM位于通信服务层,它的上层是通信管理器(ComM),下层是FlexRay接口(FrIf)。FrSM模块与ECU管理器(EcuM)、调度管理器(SchM)和FlexRay网络管理(FrNm)模块也有交互关系。

FrSM架构的主要特点:

  • 分层设计:严格遵循AUTOSAR分层架构,确保模块间的清晰边界
  • 接口隔离:通过标准接口与其他模块交互,减少模块间耦合
  • 硬件抽象:不直接操作硬件,而是通过FrIf来控制FlexRay控制器和收发器

在这个架构中,FrSM负责协调FlexRay网络的状态变化,实现通信管理器(ComM)的请求。它根据网络状态向上层模块提供反馈,并控制底层FlexRay控制器的行为。


2. FlexRay状态管理器架构

2.1. 架构概览

FlexRay状态管理器的内部架构由几个关键组件组成:

  • 状态机:核心组件,控制整个FrSM模块的状态转换
  • 配置管理:处理和存储FrSM的配置参数
  • 计时器管理:管理和维护各种超时计时器
  • 接口函数:提供与其他模块交互的API

FrSM模块的设计遵循AUTOSAR规范,确保了灵活性和可配置性,能够适应不同的FlexRay网络配置和应用需求。

2.2. 模块交互关系

FlexRay状态管理器与其他AUTOSAR模块的交互关系复杂而紧密,以下图表展示了FrSM模块的关键接口和交互方式:

在这里插入图片描述

图2. FlexRay状态管理器模块交互关系

从图中可以看出,FrSM提供了以下主要接口:

  • FrSM_Init:由ECU管理器调用,初始化FrSM模块
  • FrSM_GetVersionInfo:获取版本信息
  • FrSM_GetCurrentState:获取当前FlexRay通信状态
  • FrSM_RequestComMode:由通信管理器调用,请求切换通信模式
  • FrSM_MainFunction:由调度管理器周期性调用,处理状态机事件

FrSM同时调用了FlexRay接口提供的多个服务,这些服务包括:

  • FrIf_ControllerInit:初始化FlexRay控制器
  • FrIf_StartCommunication:启动FlexRay通信
  • FrIf_HaltCommunication:停止FlexRay通信
  • FrIf_SendWUP:发送唤醒模式
  • FrIf_GetPOCStatus:获取协议操作控制(POC)状态

FrSM模块交互关系的关键特点:

  • 集中控制:作为中央协调者,管理FlexRay通信状态
  • 多重依赖:与多个AUTOSAR模块有交互关系
  • 双向通信:既提供服务又使用其他模块的服务
  • 状态报告:向上层模块报告通信状态变化

3. FrSM状态机

3.1. 状态定义

FrSM模块的行为由内部状态机控制,该状态机定义了多个状态来反映FlexRay通信的不同阶段。以下图表展示了FlexRay状态管理器的状态机:

在这里插入图片描述

图3. FlexRay状态管理器状态机图

FrSM状态机包含以下主要状态:

  • FRSM_UNINIT:未初始化状态,模块上电后的默认状态
  • FRSM_READY:就绪状态,等待通信模式请求
  • FRSM_WAKEUP:唤醒状态,发送唤醒模式
  • FRSM_STARTUP:启动状态,尝试启动FlexRay集群
  • FRSM_ONLINE:在线状态,正常通信模式
  • FRSM_ONLINE_PASSIVE:被动在线状态,只接收不发送
  • FRSM_HALT_REQ:停止请求状态,等待通信停止

3.2. 状态转换

FrSM状态机的转换由多种触发条件引起,包括:

  • API调用:如FrSM_InitFrSM_RequestComMode
  • POC状态变化:通信控制器内部状态变化
  • 超时事件:计时器超时触发的状态转换
  • 错误条件:同步丢失等错误情况

状态转换的关键路径包括:

  1. 初始化路径:FRSM_UNINIT → FRSM_READY
  2. 启动路径:FRSM_READY → FRSM_WAKEUP/FRSM_STARTUP → FRSM_ONLINE
  3. 关闭路径:FRSM_ONLINE → FRSM_HALT_REQ → FRSM_READY
  4. 错误恢复路径:各种错误状态 → FRSM_READY → 重新尝试启动

3.3. 状态行为

每个状态都有特定的行为和功能:

  • FRSM_UNINIT:模块未初始化,所有API调用将返回错误

  • FRSM_READY

    • 初始化FlexRay控制器
    • 等待来自ComM的通信请求
    • 处理FlexRay收发器的休眠模式
  • FRSM_WAKEUP

    • 发送唤醒模式到FlexRay总线
    • 监控唤醒模式的完成
    • 处理唤醒通道选择(单通道或双通道)
  • FRSM_STARTUP

    • 尝试启动FlexRay集群
    • 监控启动帧和冷启动器
    • 管理冷启动抑制模式
    • 处理启动重试逻辑
  • FRSM_ONLINEFRSM_ONLINE_PASSIVE

    • 监控通信状态
    • 处理同步丢失情况
    • 向上层模块报告状态变化
    • 响应通信模式切换请求
  • FRSM_HALT_REQ

    • 停止FlexRay通信
    • 监控停止过程完成
    • 根据需要切换收发器到待机模式

状态机的实现使用了多个计时器来监控和控制状态转换:

  • t1:监控清除冷启动抑制模式的延迟
  • t2:监控FlexRay集群启动过程
  • t3:监控转换到FullCom状态
  • t_TrcvStdbyDelay:监控收发器进入待机模式的延迟

4. FlexRay启动流程

4.1. 启动序列

FlexRay网络的启动是一个复杂而精确的过程,需要多个节点协同工作。以下序列图展示了FrSM模块如何协调FlexRay通信的启动过程:

在这里插入图片描述

图4. FlexRay启动序列图

启动过程分为几个关键阶段:

  1. 初始化阶段

    • ECU管理器调用FrSM_Init初始化FrSM模块
    • FrSM初始化内部状态和变量
  2. 通信请求与唤醒阶段

    • ComM请求切换到全通信模式
    • 如果ECU配置为唤醒ECU,FrSM发送唤醒模式
    • 初始化FlexRay控制器和收发器
  3. 集群启动阶段

    • 监控POC状态变化
    • 启动通信并处理冷启动逻辑
    • 根据启动帧数量决定是否允许冷启动
    • 达到NORMAL_ACTIVE或NORMAL_PASSIVE状态时通知ComM

4.2. 唤醒机制

FlexRay的唤醒机制是网络管理的重要部分,支持以下几种唤醒方式:

  • 主动唤醒:由本地ECU(如传感器)触发的唤醒
  • 被动唤醒:由总线上的唤醒模式触发
  • 远程唤醒:通过FlexRay总线或唤醒线传播

唤醒过程使用FrIf_SendWUP接口发送唤醒模式,可以配置唤醒模式的数量和重复次数。在双通道FlexRay网络中,唤醒处理更为复杂,需要考虑不同通道的唤醒状态。

FrSM使用FrIf_GetTransceiverWUReason接口来检测唤醒原因,可能的值包括:

  • NO_WU_BY_BUS:未检测到唤醒
  • PARTIAL_WU_BY_BUS:双通道ECU中仅一个通道检测到唤醒
  • ALL_WU_BY_BUS:所有通道均检测到唤醒

5. FrSM配置参数

5.1. 配置结构

FlexRay状态管理器模块的配置使用了层次化结构,包含全局配置和集群特定配置。以下类图展示了FrSM的配置结构:

在这里插入图片描述

图5. FlexRay状态管理器配置类图

配置结构包括:

  • FrSM_ConfigType:顶层配置结构,包含所有FlexRay集群配置及全局参数
  • FrSM_ClusterConfigType:每个FlexRay集群的配置,包含唤醒、启动和超时相关参数
  • FrSM_DemEventParameterRefs:诊断事件参数引用,用于报告同步丢失等故障

5.2. 参数说明

FrSM模块的关键配置参数包括:

全局配置参数

  • FrSMDevErrorDetect:是否启用开发错误检测,推荐在开发阶段使用
  • FrSMNumberOfClusters:ECU中FlexRay集群的数量

集群特定参数

  • FrSMClusterId:FlexRay集群ID
  • FrSMNumberOfControllers:集群中控制器的数量
  • FrSMControllerIds:控制器ID列表
  • FrSMIsDualChannelNode:是否为双通道节点
  • FrSMIsWakeupEcu:是否为唤醒ECU
  • FrSMCheckWakeupReason:是否检查唤醒原因
  • FrSMIsColdstartEcu:是否为冷启动ECU
  • FrSMNumWakeupPatterns:最大唤醒模式数量(0-255)
  • FrSMStartupRepetitionsWithWakeup:带唤醒的启动重复次数
  • FrSMStartupRepetitions:不带唤醒的启动重复次数(0-255)
  • FrSMMinNumberOfColdstarter:最小冷启动器数量(1-15)
  • FrSMDelayStartupWithoutWakeup:是否延迟不带唤醒的启动
  • FrSMDurationT1:T1计时器持续时间(秒)
  • FrSMDurationT2:T2计时器持续时间(秒)
  • FrSMDurationT3:T3计时器持续时间(秒)
  • FrSMTrcvStdbyDelay:收发器待机延迟(0-65535毫秒)

计时器参数的单位为秒,可通过以下公式计算:

时间(秒) = 参数值 / OS_COUNTER_FREQ

必须配置的参数包括:

  • FrSMClusterId (集群ID)
  • FrSMControllerIds (控制器ID)
  • FrSMNumberOfControllers (控制器数量)

6. 总结

FlexRay状态管理器(FrSM)是AUTOSAR通信栈中的核心组件,负责管理FlexRay通信状态并协调FlexRay通信的启动和关闭流程。本文详细分析了FrSM的架构、状态机、交互关系、启动流程和配置参数。

FrSM的主要优势

  • 标准化接口:遵循AUTOSAR规范,确保与其他模块无缝集成
  • 灵活配置:支持多种配置选项,适应不同的应用场景
  • 完善的状态控制:通过状态机实现精确的通信控制
  • 可靠的错误处理:提供错误检测和诊断报告机制

应用场景

  • 高实时性要求场景:如驾驶辅助系统、动力总成控制
  • 安全关键应用:如制动系统、转向系统、主动安全系统
  • 需要确定性通信的场景:如高精度传感器数据传输
  • 多ECU协同工作:如分布式控制系统

通过深入理解FrSM模块,开发者可以更好地配置和使用这个模块,提高FlexRay通信的可靠性和性能,满足汽车电子系统日益增长的通信需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KaiGer666

慧眼~施主!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值