AUTOSAR-WdgM篇

1 概述

       Wdg通常有两种:一种是芯片内部自带的片内看门狗,另一种是在芯片外部通过SPI这种接口连接的片外看门狗。

      内部看门狗:MCAL只负责常用的有MCU内部看门狗,片内看门狗的特点是Wdg模块是直接访问相关硬件寄存器。内部看门狗依赖于系统时钟

      外部看门狗:片外看门狗属于设备抽象层负责,通常需要使用MCAL提供的其他模块(比如SPI,DIO,PWM等)来访问/控制外扩看门狗芯片。这种不能直接访问硬件寄存器。

Wdg Driver:有三种模式slow mode,fast mode ,off mode

与快狗模式对应,在慢狗模式下,喂狗的频率相对会慢一点,Timeout时间更长,例如在实际使用中,考虑到初始化到周期任务的时间较长,在Wdg初始化后会先设置WDG的运行模式为Slow-Mode,在周期任务正式运行后再切换为Fast-Mode。

WdgIf:看门狗管理器模块负责更改看门狗驱动程序的模式,并向看门狗驱动程序报告触发硬件看门狗的情况。看门狗驱动的服务通过看门狗接口访问,允许处理多个看门狗实例。

WdgM:SE(Supervision Entity:监督实体)是执行功能的最小单位,其位于SWC中,监督软件组件的运行状态。每个SE的组成都包括CP(Check Point),CP相当于在程序中设置的检查点,无论哪种判断逻辑,都需要它的存在。

2 监控机制

    SE模块在SWC中放置CP,通过调用已放置的这些CP,就可以实现判断并进行复位。判断程序是否需要复位,由以下三种监控机制:

2.1 Alive Supervision

        原理:通过计算程序运行时检查点出现的个数,然后与期望值进行比较,如果超出容差范围,就报错,对CPU进行刷新。计数的方式有两种,可以是对多段程序内的总检查点数进行统计,也可以是对一段程序多次运行时出现的总检查点数进行统计。

         组成:Ref Checkpoint(CP)、Expected Alive Indication(EAI)、Ref Supervision Cycle(SRC)、Min&Max Margin

         这意味着WdgM预计在一个监督参考周期内(20ms)发生CP次数为1(WdgMExpectedAliveIndications - WdgMMinMargin)或0(WdgMExpectedAliveIndications +WdgMMaxMargin)。如果发生次数超出此范围,将触发监控状态跳转。

2.2 Deadline Supervision

       原理:对起始点和终止点之间程序所花费的时间进行计算,超出容差范围,就报错,对CPU进行刷新。(非周期运行)

       组成:StartRef、StopRef、Min&Max MarginQQ

上面给出了一个具有过渡期限的监督实体的例子。

第一个最后时间被定义为最小值为0,最大值为2秒。因此,CP1必须在CP0之后的2秒内达到。

第二个截止时间CP2必须不早于1,不迟于CP1后3秒。否则,将触发监控状态跳转。。

2.3 Logical Supervision

      原理:对程序的执行顺序进行监测,基于检查点出现的顺序。如果顺序不对就报错,对CPU进行刷新。并且存在两种Logical,分为内部和外部,如果检查点全部位于同一个SWC中,就是内部Logical,如果检查点位于多个SWC中,就是外部Logical。

      组成:IntialRef、FinalRef、Transition(SourceRef、DestRef)

     定义的逻辑流必须按照设定的顺序执行,将触发监控状态跳转。

3 监控状态

      每个监控实体SE拥有一个本地状态Local Status,所有本地状态汇总为Global Status。

Status状态定义如下:

3.1 Local Status 

      WdgM_Init被调用会会进入OK状态,监控机制不能被正常执行时,进入EXPIRED状态。达到设置的超时时间后进入FAILED状态。

 

4.2 Globle Status

      Globle Status是对所有Local Status汇总,全局状态机与本地状态机跳转机制相似。

      SE本地状态:OK/FAILED/EXPIRED。当某个SE的Local Status EXPIRED,触发对应Mode的Global Status切为EXPIRED

      Global Status切为EXPIRED后,等待Timeout后进入STOPPED(Timeout并不是wdgm周期为参考,而是导致global超时的SE对应Fail监控项的监控周期为参考)

      Wdgm轮询到global status为STOPPED状态后,进行MCU复位处理,若global status不为STOPPED,wdgm调用wdgif_settriggercondition触发狗。

4 WdgM多核应用

      WdgM可用于单核和多核系统。WdgM监视的每个处理器核心运行一个单独的WdgM实例。

4.1 Core独立监控

       每个WdgM实例独立地构建其处理器核心的全局状态,然后将几个全局状态合并。

    应用举例:每个Core独立关联单片机的内部看门狗Core WdgDriver.

4.2 State Combiner

       状态组合器是一种特殊的硬件独立的软件,作为WdgIf模块的一个附加功能实现。在一个核心上,状态组合器被配置为在主模式下工作,以控制实际的看门狗设备。在其他核心上的状态组合器的实例被配置为在从属模式下工作。它们不触发,而是只通过共享内存与主状态组合器进行通信。只有当所有核心上的WdgM实例的全局状态不是停止时,主核心上的状态组合器才允许触发实际的监视器设备。

     应用举例:外部看门狗作为Master放在Core0,其Core作为Slave。Slave核的Local State 写入Share Memmory,Master Core 读取Share Memmory,获取全局状态,进而控制是否喂狗。

5 监控流程

       SWC按照设计调用WdgM_CheckpointReached,Bsw模块通过WdgM_MainFunction监测SE的本地状态以及全局状态,触发或停止硬件喂狗。

6 复位路径

      WdgM可以通过两种方式调用安全状态:

       默认复位路径:停止看门狗触发,在看门狗超时后重置 MCU。

       第二条复位路径:立即复位(可以配置),直接由单片机内部复位模块进行重置MCU。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值