【车载开发系列】Autosar框架中的WatchDog

【车载开发系列】Autosar框架中的WatchDog

一. 什么是Watchdog?

Watchdog,又称watchdog timer,是计算机可靠性(dependability)领域中一个极为简单同时非常有效的检测(detection)工具。其基本思想是针对被监视的目标设置一个计数器和一个阈值,watchdog会自己增加计数值,并等待被监视的目标周期性地重置计数值。一旦目标发生错误,没来得及重置计数值,watchdog会检测到计数值溢出,并采取恢复措施(通常情况下是重启)。总结一下就是计数——溢出——触发。

二. WatchDog原理

Watchdog的工作方式是事件触发的,其中时间事件(timeout)最常使用,这也是为什么watchdog又叫做watchdog timer。但无论watchdog统计什么事件,它的思想都是一样的。

三. WatchDog功能

在它正常执行路径上设置一些周期性重置watchdog的点;如果系统发生故障,它可能执行不到下一个重置watchdog的点,此时故障将被watchdog捕捉到。看到这儿,您应该想到watchdog对于检测死循环或死锁这类故障非常有效。

1)硬件支持看门狗

由于单片机的工作环境容易受到外界磁场的干扰,导致程序“跑飞”,造成整个系统无法正常工作,因此,引入了一个“看门狗”,对单片机的运行状态进行实时监测,针对运行故障做一些保护处理,譬如让系统重启。这种Watchdog属于硬件层面,必须有硬件电路的支持。

2)软件支持的看门狗

软件层面Watchdog,用于保护一些重要的系统服务,当出现故障时,通常会让ECU系统重启。由于这种机制的存在,就经常会出现一些系统进程被Watchdog杀掉而发生单片机重启的现象。

四. WatchDog检测目标

Watchdog是一种检测手段,它监视的目标可以是一个进程也可以是整个操作系统。
1)监视一个进程
如果监视目标只是一个进程,那么利用操作系统提供的定时功能即可实现一个watchdog
2)监视一个操作系统
如果要监视操作系统,就得使用操作系统之外的工具,通常是一个附加的计数器。现代Intel CPU都包含的performance counter也可以提供这样的功能,从而不需要额外的设备就能实现监视操作系统的watchdog。

五. AutoSar当中的看门狗

时序是嵌入式系统的一个重要属性。安全行为要求系统的动作和反应在正确的时间内执行。正确的时间可以用一组必须满足的时序约束来描述。然而,AUTOSAR 软件组件本身无法确保正确的计时。
看门狗管理器 (WDGM) 位于AUTOSAR堆栈的服务层,如图所示,看门狗服务分布在 AUTOSAR层中。
在这里插入图片描述
看门狗管理器的任务是监督软件的执行,如果发现软件执行中的错误或缺陷,WDGM将采取行动。SWC使用 WDGM提供的服务,使用客户端服务器接口。SWC 是客户端,WDGM是服务器。

六. WdgM的基本功能

WdgM是autosar的一个基础模块,用于监控supervised entitiese(SE)程序流
WdgM在运行时监视用户软件,并将预先配置的逻辑和时间约束与实际的逻辑和时间行为进行比较。 WdgM可以监控以下违规事件WdgM可以监控以下软硬件故障:
1.时间限制(通过deadline监控和alive监控两种模式)
2.程序流程限制(通过逻辑监控)
WdgM通过接口(WdgIf)和驱动层(Wdg)周期性触发看门狗设备,当WdgM检测到程序流或定时故障,然后它停止看门狗触发,或立即启动微控制器复位或延迟后,这取决于WdgM配置

七. WdgM的分层架构

WdgM模块是按照AutoSAR标准中定义的分层架构进行设计的。该分层架构包括以下几个层级:

1)WdgIf

它是将WdgM和Wdg Driver联系起来的中间层,他将底层进行抽象供上层调用,同时将WdgM的控制操作传递给底层Wdg

2)WdgM

它是实现WDG模块功能的核心模块,其有如下的作用:
1.提供用户操作的API。
2.判断各Supervision Entity的Local Status,汇总得到整个WDG的Global Status。
3.提供故障处理和喂狗。
4.下发指令给下层WdgIf,并获取其反馈结果。

3)Wdg Driver

它是Wdg底层驱动,控制其运行模式,可以设置为Slow Mode、Fast Mode和OFF Mode。

八.  SE监督实体

SE的全称是Supervision Entity。在WdgM模块里,SE是执行功能的最小单位,其位于SWC中,监督软件组件的运行状态。
SE由Checkpoint、Alive Supervision、Deadline Supervision和Logical Supervision组成。

1)Check Point

Check Point相当于在程序中设置的检查点,无论哪种判断逻辑,都需要它的存在。
即使该SE中有Checkpoint,但无Supervision,配置工具将不生成该SE,因为其无实际作用。
SE的状态体现为Local Status,其取决于其下的各种Supervision状态

2)Alive Supervision

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

3)Deadline Supervision

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

4)Logical Supervision

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

九. Mode

WDG可以有多个Mode,不同的Mode有不同的检测对象和参数
不同Mode可以共享相同的Supervision Entity
Wdgm_SetMode  Api可用于切换Mode
Mode切换将导致SE的状态改变
WDG模块主要提供以下服务/API:
初始化:Wdg_Init
设置模式:Wdg_SetMode
设置触发条件(设置超时时间/喂狗):Wdg_SetTriggerCondition

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

进击的横打

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

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

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

打赏作者

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

抵扣说明:

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

余额充值