AUTOSAR图解==>AUTOSAR_SWS_WatchdogManager

AUTOSAR WatchdogManager模块详解

基于AUTOSAR 4.4.0规范分析的看门狗管理器模块技术深度解析

目录

  1. 概述
  2. 架构设计
  3. 活性监控
  4. 截止时间监控
  5. 逻辑监控
  6. 监控状态管理
  7. 接口设计
  8. 监控流程
  9. 总结

1. 概述

看门狗管理器(Watchdog Manager,简称WdgM)是AUTOSAR标准中的一个关键基础软件模块,负责监控软件组件的执行状况,确保系统的安全运行。WdgM通过提供软件监控机制,检测软件组件是否按照预期执行,如果发现异常,则触发相应的错误处理机制,防止系统出现不可预测的行为。

看门狗管理器模块主要提供以下功能:

  • 活性监控(Alive Supervision):监控软件组件是否在预期的频率下调用检查点
  • 截止时间监控(Deadline Supervision):监控软件组件是否在指定的时间窗口内完成操作
  • 逻辑监控(Logical Supervision):监控软件组件的执行顺序是否符合预期
  • 状态管理:维护本地和全局监控状态,基于监控结果决定系统行为
  • 硬件看门狗控制:通过与看门狗接口层交互,控制硬件看门狗的行为

WdgM模块在AUTOSAR安全关键系统中扮演重要角色,确保系统即使在软件故障的情况下也能维持安全状态。


2. 架构设计

看门狗管理器模块在AUTOSAR分层架构中处于服务层,与其他基础软件模块和应用软件组件进行交互。下图展示了WdgM模块的架构及其在AUTOSAR体系中的位置。

在这里插入图片描述

图1:WatchdogManager架构图

从图1可以看出,WdgM模块的架构设计具有以下特点:

  1. 分层结构

    • 应用层:包含应用软件组件(SWC)和复杂驱动程序(CDD),它们是被监控的对象
    • RTE层:运行时环境,负责应用层与基础软件层之间的通信
    • 基础软件层:包含服务层、ECU抽象层、微控制器抽象层等
  2. 模块交互

    • WdgM与开发错误跟踪器(Det)和诊断事件管理器(Dem)交互,报告开发错误和运行时错误
    • WdgM与看门狗接口(WdgIf)交互,控制硬件看门狗
    • WdgM与操作系统(OS)交互,获取时间戳信息
    • WdgM与通信管理器(ComM)交互,通知网络状态
    • WdgM与普通定时器(GPT)交互,获取定时器服务
  3. 调用关系

    • 应用软件组件通过RTE调用WdgM的API
    • 复杂驱动程序可以直接调用WdgM的API
    • WdgM通过WdgIf控制硬件看门狗

WdgM模块的主要职责包括监控软件模块的执行状况、提供各种监控机制、控制硬件看门狗,以及管理监控模式。通过这种架构设计,WdgM能够有效地监控系统运行状态,及时发现并处理异常情况。


3. 活性监控

3.1 活性监控配置

活性监控(Alive Supervision)是WdgM的基本监控功能之一,用于检查软件组件是否按照预期的频率执行特定的检查点。活性监控的配置可以分为最简配置和多检查点配置两种模式。

在这里插入图片描述

图2:WatchdogManager活性监控配置图

从图2可以看出,活性监控配置的核心要素包括:

  1. 最简活性监控配置

    • 包含一个受监控实体(Supervised Entity,SE)和一个检查点(Checkpoint,CP)
    • 每个检查点都有自己的活性监控参数集:
      • 预期活性指示(WdgMExpectedAliveIndications):在参考周期内预期的活性指示次数
      • 监控参考周期(WdgMSupervisionReferenceCycle):活性监控的周期
      • 最大余量(WdgMMaxMargin):允许的最大正偏差
      • 最小余量(WdgMMinMargin):允许的最大负偏差
    • 这种配置提供了对WatchdogManager模块v2.0.0之前版本的向后兼容性
  2. 多检查点活性监控配置

    • 一个受监控实体可以包含多个检查点
    • 每个检查点都有独立的活性监控参数
    • 尽管每个检查点有自己的参数,但受监控实体的状态是基于所有检查点的结果综合决定的
    • 在给定模式下,可以配置部分或全部检查点进行活性监控

3.2 活性监控算法

活性监控算法的工作流程如下:

  1. 受监控实体通过调用WdgM_CheckpointReached函数发送活性指示,该函数会增加相应检查点的活性计数器
  2. WdgM_MainFunction在每个监控参考周期检查各检查点的计数器值
  3. 检查计数器是否在允许的公差范围内:
    • 预期值减最小余量(Expected - MinMargin)
    • 预期值加最大余量(Expected + MaxMargin)
  4. 如果任何检查点的检测结果不在允许范围内,则该受监控实体的活性监控结果设置为不正确
  5. 正确配置活性监控参数对于避免误报和漏报至关重要

可以看出,活性监控是一种基于频率的监控方式,特别适合周期性执行的软件组件。通过检测组件的执行频率是否符合预期,可以及时发现软件运行异常。


4. 截止时间监控

4.1 截止时间监控配置

截止时间监控(Deadline Supervision)用于检查软件组件是否在指定的时间窗口内完成操作。这种监控特别适合非循环性的操作,即某事件发生后,后续事件必须在给定时间范围内发生。

在这里插入图片描述

图3:WatchdogManager截止时间监控配置图

从图3可以看出,截止时间监控配置包括以下要素:

  1. 最简截止时间监控配置

    • 包含一个受监控实体(SE4),两个检查点(CP4-1, CP4-2)和一个转换
    • 转换定义了从起始检查点到结束检查点的路径
    • 每个转换都有两个时间限制参数:
      • 最小截止时间(WdgMDeadlineMin):允许的最小时间
      • 最大截止时间(WdgMDeadlineMax):允许的最大时间
  2. 多转换截止时间监控配置

    • 一个受监控实体可以包含多个检查点和多个转换
    • 转换和检查点不必形成封闭图
    • 可以有多个独立的转换图
    • 截止时间监控只考虑起始和结束检查点,不关心中间路径

4.2 截止时间监控算法

截止时间监控算法的工作流程如下:

  1. 在初始化阶段,所有截止时间起始检查点的时间戳被清除(设为0)
  2. 当到达截止时间起始检查点时:
    • 调用WdgM_CheckpointReached函数
    • 记录当前时间戳(通过调用OS函数GetElapsedTime获取)
  3. 当到达截止时间结束检查点时:
    • 获取当前时间戳
    • 如果对应起始检查点时间戳不为0,则测量时间差并清除起始检查点时间戳
    • 时间差必须在配置的最小和最大截止时间范围内,否则视为错误
    • 如果对应起始检查点时间戳为0,则成功退出(不测量时间差)
  4. 时间戳以OS计数器的tick为单位,而配置参数以秒为单位,需要进行换算

截止时间监控对于检测操作时序非常有效,例如检测某个操作是否在规定时间内完成,或者检测操作是否过早完成。


5. 逻辑监控

逻辑监控(Logical Supervision)用于检查软件组件的执行流程是否符合预期。WdgM提供了两种类型的逻辑监控:内部图形技术监控和外部逻辑监控。

在这里插入图片描述

图4:WatchdogManager逻辑监控配置图

5.1 内部图形技术监控

内部图形技术监控通过定义允许的检查点转换序列来监控程序执行流程。如图4左侧所示:

  1. 受监控实体(SE5)包含多个检查点(CP5-1, CP5-2, CP5-3, CP5-4)
  2. 定义了允许的转换路径(绿色实线)和非法的转换路径(红色虚线)
  3. 每当到达一个检查点时,会检查该转换是否在允许的转换列表中
  4. 如果发现非法转换,则监控结果设置为不正确

内部图形技术监控适用于具有明确执行路径的软件组件,例如状态机实现。

5.2 外部逻辑监控

外部逻辑监控通过用户定义的外部函数来监控程序执行。如图4右侧所示:

  1. 受监控实体(SE6)包含多个检查点(CP6-1, CP6-2, CP6-3)
  2. 外部监控逻辑(WdgMExternalLogicalSupervision)包含多个逻辑条件
  3. 当到达检查点时,调用相应的外部函数
  4. 外部函数根据自定义逻辑确定监控结果

外部逻辑监控提供了更大的灵活性,允许实现复杂的监控逻辑,特别适合那些执行路径不固定或需要根据运行时状态动态判断的软件组件。

逻辑监控的算法流程:

  1. 对于内部图形技术监控:
    • 记录上一个到达的检查点
    • 当到达新检查点时,检查该转换是否允许
    • 如果转换不允许,则监控结果为不正确
  2. 对于外部逻辑监控:
    • 当到达检查点时,调用WdgM_CheckpointReached函数
    • 如果配置了外部逻辑监控,则调用相应的外部函数
    • 外部函数根据自定义逻辑确定监控结果

6. 监控状态管理

WdgM模块维护两种类型的监控状态:本地监控状态和全局监控状态。这些状态反映了系统的健康状况,并决定了系统的行为。

在这里插入图片描述

图5:WatchdogManager监控状态转换图

6.1 本地监控状态

如图5左上所示,每个受监控实体都有自己的本地监控状态,包括:

  1. 正常(OK):监控结果正常

    • 初始状态为OK
    • 当活性/截止时间/逻辑监控成功时,保持OK状态
    • 当监控失败且失败计数器超过阈值时,转换为FAILED状态
  2. 不正常(FAILED):监控结果失败

    • 当监控仍然失败时,保持FAILED状态
    • 当监控恢复正常时,转换为OK状态
    • 当经过WdgMFailedSupervisionRefCycleTol周期后仍然不正常,转换为EXPIRED状态
  3. 过期(EXPIRED):长期失败的状态

    • 表示受监控实体长时间未能恢复正常
  4. 已禁用(DEACTIVATED):监控被禁用

    • 可以从OK、FAILED、EXPIRED状态转换到DEACTIVATED状态
    • 当激活监控时,转换为OK状态
  5. 停止(STOPPED):监控被停止

    • 从DEACTIVATED状态转换到STOPPED状态
    • 当启动监控时,转换回DEACTIVATED状态

本地状态反映了单个受监控实体的健康状况,失败计数器用于确定何时将状态从OK变为FAILED,这有助于避免因暂时性故障导致的误报。

6.2 全局监控状态

如图5中上所示,全局监控状态代表整个WdgM模块的状态,包括:

  1. 初始化(WDGM_GLOBAL_STATUS_DEACTIVATED):初始状态

    • 当调用WdgM_Start()时,转换为OK状态
    • 当调用WdgM_Init()时,从STOPPED状态转换到DEACTIVATED状态
  2. 正常(WDGM_GLOBAL_STATUS_OK):系统正常运行

    • 当所有关键受监控实体都处于OK状态时,保持OK状态
    • 当有配置为CRITICAL的受监控实体失败时,转换为FAILED状态
    • 当调用WdgM_Stop()时,转换为STOPPED状态
  3. 失败(WDGM_GLOBAL_STATUS_FAILED):系统监控失败

    • 当所有触发失败的受监控实体恢复OK状态时,转换回OK状态
    • 当达到过期阈值时,转换为EXPIRED状态
    • 当调用WdgM_Stop()时,转换为STOPPED状态
  4. 过期(WDGM_GLOBAL_STATUS_EXPIRED):系统长期失败

    • 表示系统长时间处于失败状态
    • 将触发系统复位或其他故障安全机制
    • 当调用WdgM_Stop()时,转换为STOPPED状态
  5. 停止(WDGM_GLOBAL_STATUS_STOPPED):系统监控停止

    • 全局监控被显式停止

全局状态由所有受监控实体的状态综合决定,特别是那些配置为CRITICAL的实体。全局状态决定了硬件看门狗的触发行为,是系统安全策略的重要组成部分。

图5右上也展示了监控周期的执行阶段,包括活性监控、截止时间监控、逻辑监控、计算监控实体状态、计算全局状态和触发器行为。这些阶段在WdgM_MainFunction()中顺序执行。


7. 接口设计

WdgM模块提供了丰富的接口以支持其监控功能,包括API函数和回调函数。

在这里插入图片描述

图6:WatchdogManager接口设计图

7.1 API函数

如图6所示,WdgM模块提供了以下几类API函数:

  1. 初始化和控制接口

    • WdgM_Init():初始化WdgM模块
    • WdgM_DeInit():去初始化WdgM模块
    • WdgM_Start():启动监控
    • WdgM_Stop():停止监控
  2. 监控接口

    • WdgM_CheckpointReached():报告检查点已到达,是监控的核心函数
    • WdgM_MainFunction():周期性执行的主函数,处理监控逻辑
    • WdgM_PerformReset():执行系统复位
  3. 状态查询接口

    • WdgM_GetLocalStatus():获取特定受监控实体的本地状态
    • WdgM_GetGlobalStatus():获取全局监控状态
    • WdgM_GetFirstExpiredSEID():获取首个过期的受监控实体ID
  4. 模式控制接口

    • WdgM_GetMode():获取当前监控模式
    • WdgM_SetMode():设置监控模式
  5. 调试接口

    • WdgM_GetVersionInfo():获取模块版本信息
    • WdgM_GetLocalStatusCounts():获取本地状态计数

7.2 回调函数

WdgM模块支持以下回调函数:

  1. 监控结果回调
    • 外部逻辑监控回调:由用户实现,用于外部逻辑监控
    • 活性监控回调:在活性监控结果改变时调用
    • 截止时间监控回调:在截止时间监控结果改变时调用

这些接口函数和回调函数共同构成了WdgM模块的外部接口,使应用软件组件能够与WdgM交互,实现软件监控功能。


8. 监控流程

WdgM模块的监控流程涉及多个阶段,从初始化到正常运行再到关闭。下图展示了WdgM的主要监控流程。

在这里插入图片描述

图7:WatchdogManager监控流程序列图

从图7可以看出,WdgM的监控流程包括以下几个主要阶段:

  1. 初始化阶段

    • 应用软件组件调用WdgM_Init()初始化WdgM模块
    • WdgM初始化内部变量和状态
    • WdgM获取初始时间戳
    • WdgM初始化看门狗接口
    • 应用软件组件调用WdgM_Start()启动监控
    • WdgM激活监控并设置看门狗模式
  2. 正常监控流程

    • 应用软件组件在执行过程中调用WdgM_CheckpointReached()报告检查点到达
    • 根据监控类型的不同,WdgM执行相应的处理:
      • 活性监控:增加活性计数器
      • 截止时间监控(起始检查点):记录起始时间戳
      • 截止时间监控(结束检查点):检查时间差是否在限制范围内
      • 逻辑监控:检查检查点转换是否允许
  3. 周期性监控评估

    • 操作系统周期性调用WdgM_MainFunction()
    • WdgM执行活性监控检查
    • WdgM计算每个受监控实体的状态
    • WdgM计算全局监控状态
    • 根据全局状态执行不同操作:
      • 全局状态正常:设置慢速模式,正常触发看门狗
      • 全局状态失败:设置快速模式,报告错误
      • 全局状态过期:准备系统复位
  4. 模式切换

    • 应用软件组件调用WdgM_SetMode()切换监控模式
    • WdgM更新监控参数和设置
  5. 错误处理

    • 监控失败时,WdgM报告错误状态
    • 非法参数时,WdgM报告开发错误
  6. 关闭阶段

    • 应用软件组件调用WdgM_Stop()停止监控
    • WdgM停止监控并设置看门狗为关闭模式
    • 应用软件组件调用WdgM_DeInit()去初始化WdgM模块
    • WdgM清空内部状态并去初始化看门狗接口

这个流程展示了WdgM如何与其他组件交互,以及如何在不同情况下处理监控结果,是理解WdgM工作机制的重要参考。


9. 总结

AUTOSAR WatchdogManager模块是一个复杂而强大的基础软件模块,通过提供多种监控机制,确保系统的安全运行。本文详细分析了WdgM的架构设计、监控机制、状态管理、接口设计和监控流程,展示了WdgM如何在AUTOSAR体系中发挥作用。

WdgM的主要优势包括:

  1. 多样化的监控机制

    • 活性监控:检查软件组件的执行频率
    • 截止时间监控:检查时序约束
    • 逻辑监控:检查执行顺序
  2. 灵活的配置选项

    • 支持多种监控模式
    • 可配置的监控参数
    • 灵活的触发行为
  3. 全面的状态管理

    • 本地监控状态和全局监控状态
    • 状态转换逻辑
    • 错误处理机制
  4. 丰富的接口

    • API函数
    • 回调函数
    • 与其他模块的交互接口

WdgM在安全关键系统中的应用场景包括:

  • 汽车电子控制单元(ECU)的安全监控
  • 工业控制系统的故障检测
  • 医疗设备的安全机制
  • 航空电子设备的软件监控

通过深入理解WdgM模块的工作原理和使用方法,开发者可以更好地利用这一工具构建高可靠性、高安全性的嵌入式系统。

<think>好的,我现在需要回答用户关于AUTOSAR函数`WdgM_CheckpointReached`的用途。首先,我需要确认自己对AUTOSAR架构和看门狗管理模块(WdgM)的理解是否正确。 用户之前提到了链接错误,现在转向了一个具体的AUTOSAR函数,可能是在开发符合AUTOSAR标准的嵌入式系统,特别是汽车电子相关的项目。因此,需要确保回答专业且准确,同时考虑到用户可能的背景知识。 首先,我需要回忆AUTOSAR中看门狗管理模块的作用。看门狗(Watchdog)在嵌入式系统中用于检测系统是否正常运行,防止软件挂起或进入不可预测的状态。WdgM(Watchdog Manager)是AUTOSAR中的一个模块,负责管理看门狗定时器,监控应用程序的运行状况。 接下来,关于`WdgM_CheckpointReached`这个函数,我需要确定它的具体功能。根据AUTOSAR文档,该函数通常用于指示程序执行到了某个检查点(Checkpoint),即代码中的一个关键点,用于确认某个任务或进程按预期执行。这可能与监控程序流程、确保任务按时完成有关。 可能需要进一步思考以下几点: 1. **检查点的作用**:在实时系统中,检查点用于验证代码是否按预期顺序执行,避免死锁或任务超时。 2. **WdgM的工作机制**:WdgM可能通过监控这些检查点来判断应用程序是否健康。如果某个检查点未在规定时间内到达,可能触发看门狗复位。 3. **函数调用时机**:开发者在代码的关键路径中调用此函数,告知WdgM模块某个检查点已到达,从而更新监控状态。 4. **与 Alive Supervision 的关系**:是否属于存活监控的一部分,确保周期性任务按时执行。 需要确认是否有常见的误解或易错点,例如:检查点设置的位置是否合理,调用频率是否符合WdgM配置的预期,或者是否遗漏必要的检查点导致误触发看门狗复位。 另外,用户可能在使用AUTOSAR工具链(如Vector DaVinci)时,如何配置WdgM模块以及如何在代码中正确插入检查点调用。可能需要提及配置检查点ID、时间窗口等参数的重要性。 最后,确保回答结构清晰,先说明函数的作用,再解释其应用场景,可能的使用示例,以及常见注意事项,帮助用户全面理解。</think>`WdgM_CheckpointReached` 是 **AUTOSAR汽车开放系统架构)标准中看门狗管理模块(Watchdog Manager, WdgM)** 的核心函数之一,主要用于 **监控应用程序的执行流程**,确保关键代码段按预期执行。以下是其详细功能和应用场景: --- ### **1. 核心功能** - **检查点(Checkpoint)标记** 当应用程序执行到代码中预设的关键位置时,调用此函数标记一个检查点,告知 WdgM 模块“程序已到达此处”。 - 例如:周期性任务完成、关键状态机切换、安全关键操作完成等场景。 - **存活监控(Alive Supervision)** WdgM 会记录检查点的到达时间和频率。若某个检查点未在配置的时间窗口内被触发,WdgM 会认为程序运行异常,可能触发看门狗复位(复位MCU)或上报错误。 --- ### **2. 典型应用场景** #### **场景 1:周期性任务监控** ```c void Task_10ms(void) { // 执行任务逻辑... WdgM_CheckpointReached(CheckpointID_Task10ms); // 标记检查点 } ``` - **作用**:确保 `Task_10ms` 函数每 10ms 至少执行一次。若超时未调用,WdgM 判定任务失效。 #### **场景 2:多步骤流程监控** ```c void StateMachine_Handle(void) { switch(currentState) { case STATE_INIT: // 初始化操作... WdgM_CheckpointReached(CheckpointID_InitDone); break; case STATE_RUNNING: // 运行逻辑... WdgM_CheckpointReached(CheckpointID_RunningLoop); break; } } ``` - **作用**:验证状态机按预期顺序执行,避免卡死在某个状态。 --- ### **3. 关键配置参数** 在 AUTOSAR 工具链(如 Vector DaVinci、ETAS ISOLAR)中需配置: 1. **检查点 ID** - 为每个检查点分配唯一标识符(如 `CheckpointID_Task10ms`)。 2. **监控时间窗口** - 定义检查点的最小/最大允许触发间隔(例如:10ms 任务需在 8ms~12ms 内触发检查点)。 3. **错误处理策略** - 超时后的行为:触发全局复位、记录错误日志、进入安全状态等。 --- ### **4. 使用注意事项** - **检查点位置合理性** - 仅标记关键路径,避免过度调用(增加运行时开销)或遗漏调用(导致误报故障)。 - **实时性保障** - 检查点必须与任务的真实执行时间匹配,否则监控失效。 - **多核/分区系统** - 在 AUTOSAR 多核架构中,需确保检查点与对应核的 WdgM 实例关联。 --- ### **5. 关联函数与模块** - **初始化函数** `WdgM_Init()`:初始化 WdgM 模块,加载配置的检查点参数。 - **主监控函数** `WdgM_MainFunction()`:周期性调用,执行检查点超时计算和错误处理。 - **模式控制** `WdgM_SetMode()`:切换监控模式(如正常模式、静默模式)。 --- ### **6. 调试与问题排查** - **映射检查点状态** 使用调试工具读取 WdgM 内部状态,确认检查点是否按预期触发。 - **日志与 Trace 分析** 若发生看门狗复位,检查 WdgM 的错误日志,定位超时的检查点 ID。 - **时序分析** 测量代码执行时间,确保检查点间隔符合配置的时间窗口。 --- ### **总结** `WdgM_CheckpointReached` 是 AUTOSAR 中实现 **功能安全(ISO 26262 ASIL)** 的关键机制,通过对代码执行流程的实时监控,确保系统在发生死锁、任务阻塞或逻辑错误时能够及时恢复,从而满足汽车电子对可靠性的严苛要求。正确使用此函数需结合具体的任务调度和 WdgM 模块配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

KaiGer666

慧眼~施主!!!

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

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

打赏作者

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

抵扣说明:

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

余额充值