MCAL系列介绍02-WDG(内狗)

1. 前言

本文为MCAL系列入门介绍,如您对AutosarMCAL配置,通信,诊断等实战有更高需求,可以参见AutoSar 实战进阶系列专栏,快速链接:AutoSar实战进阶系列导读

本文主要介绍WDG模块,在这里指的是内部看门狗,按Autosar架构外部看门狗属于板载器件,一般在SBC中,在这里不再赘述。

内部看门狗是MCU提供的功能安全组件,通过周期性的去刷新计数Counter值来检测程序运行状态,一旦出现长时间未执行喂狗操作则会判定程序跑飞,进而导致程序进Trap或者Reset。下面介绍中,将首先介绍内部看门狗的一些基本概念,再介绍WDG的一般工作过程。

2. 基本概念

2.1 喂狗

如果没学过嵌入式的同学看到喂狗可能会非常不解,为什么喂狗还需要再来解释一波,不就是“喂狗”吗?在嵌入式的WDG中,喂狗即Trigger Watchdog,即触发看门狗,当触发看门狗后,计时counter会被刷新重新开始计算,通过判断喂狗的时机或间隔来判断程序是否在正常运行。

2.2 超时狗与窗口狗

按运行模式WDG可划分为超时狗(Timeout Wdg)或窗口狗(Window Wdg)

超时狗:即采用Timeout模式计时,在Timeout时间内都可以喂狗,当检测到超过设定的Timeout时间仍未喂狗则会触发进一步安全保护措施。

窗口狗:即在某个特定的窗口周期内才能喂狗,在窗口期外喂狗都无效,例如下图中在(0.72-1.2)*Twd范围内喂狗有效。在这里插入图片描述
整体而言,超时狗喂狗较为容易,即只要在timeout时间内喂上狗就可以,而窗口狗只能在open window阶段才可以喂狗,其对时机的要求更严格,相对而言,安全等级也更高。

2.2 Fast/Slow/Stop Mode

按是否喂狗及喂狗频率可将WDG的运行模式划分为Fast-Mode,Off-Mode,Slow-Mode:
Fast-Mode:快狗模式
在快狗模式下,喂狗频率通常更高,同样对发生Reset限制的Timeout时间也较慢狗模式更短,以更快的检测到程序跑飞复位

Off-Mode:禁用/关闭看门狗模式
在ECU ShutDown前需要关闭看门狗,以便关闭整个ECU,但在正常运行情况下,防止Wdg切换到此模式。

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

3. WDG运行过程

如下图WDG的运行过程主要包括三部分:初始化、喂狗及设置看门狗模式。
在初始化中,一般由EcuM在DriveInitOne部分完成,初始化时会设置看门狗的初始喂狗模式,并开始喂狗。

看门狗喂狗,在AutoSar架构中,程序运行起来后Wdg喂狗前需要先在WdgM中校验喂狗条件是否满足,如果满足则WdgM再调用WdgIf_SetTriggerCondition()触发喂狗,具体可参考博主另外介绍WdgM部分的文章。

设置看门狗运行模式,运行模式的设置在内狗初始化中进行设置,等WdgM运行起来后同样可以调用WdgIf_SetMode()去设置模式。
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Autosar汽车电子进阶

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值