WdgM Stack由硬件无关的模块WdgM(蓝色),WdgIf和与硬件相关Wdg Driver组成,如下图所示:
WdgM监控着程序运行流程和时间限制,我们叫做Supervised entities(SE).这些SEs都是软件实体(如应用软件)都是有WdgM来监控.当WdgM检测到违反了预设得程序流程及时间限制,它需要许多可配置的操作来记录冲突和/或进入一个安全的状态.
WdgM在运行时监视用户软件,并将预先配置的逻辑和时间约束与实际的逻辑和时间行为进行比较。 WdgM可以监控以下违规事件WdgM可以监控以下软硬件故障:
1.时间限制(通过deadline监控和alive监控两种模式)
2.程序流程限制(通过逻辑监控)
WdgM通过接口(WdgIf)和驱动层(Wdg)周期性触发看门狗设备,当WdgM检测到程序流或定时故障,然后它停止看门狗触发,或立即启动微控制器复位或延迟后,这取决于WdgM配置.
WdgM监控的软件和硬件故障包括:
1.SE没有请求,但是执行了
2.SE请求了,但是却没有执行
3.SE执行的太早或太晚
4.SE或者其中一部分的SE或者多个SE的执行时间比预期的要长或者短
5.SE或者其中一部分的SE或者多个SE的程序执行流程与预期的不一样
当检测到以上估计时,可以根据配置执行以下动作:
1.WdgM上报这个错误信息
2.WdgM发起一个芯片复位在看门狗超时后
3.WdgM直接发起一个芯片复位
WdgM是autosar的一个基础模块,用于监控supervised entitiese(SE)程序流
被监督实体是由WdgM监视的软件部分,在autosar里监督实体和体系结构构建块之间没有固定的关系
检查点标记是算法执行过程中重要的步骤,检查点到时,需要直接(没有RTE)WdgM_CheckpointReached()或者他的一个封装函数(有RTE).
在定义检测点时,需要考虑代码结构和软件性能之间的均衡:
a.一个算法的检查点越多,代码结构的表现就越好。 但这对性能有不利影响
b.然而,如果一个算法只有几个检查点,那么就有代码段以及未表示的程序流分支。在这种情况下,性能将是 会更好,但不是所有事情都会被监控。
一个受监督的实体(SE)可以代表一个算法,一个函数,或者在操作的情况下的整个任务,在AUTOSAR定义中,一个受监督的实体可以是分布在多个任务或应用程序中。可以在一个任务里有多个SE,但是,WDGM不支持同一个SE运行在不同的任务或者应用里。WdgM至少需要定义一个SE和一个checkpoint。
下图展示了一个叫temperature_control简单的SE:
a.temperature_control有6个检查点,他们之间用实线连接起来
b.在检查的read_temperature之后有可能到达temperature_needs_correction这个检查点
c.然而,经过这个read_temperature检查点后到达heater_adjusted_successfully违背了程序流程
Note:程序流监督只有在WDG的附加组件程序流程和期限监督(deadline supervision)有licensed的情况下使用
(“WdgM_ProgramFlowAndDeadlineMonitoring”)
ISO 26262-6(7.4.14)里面高度推荐使用程序流监控,其最主要的属性,可以在运行算法,程序时检测逻辑错误,来增加可靠性,检测非法程序计数跳出整个系统.
除了AUTOSAR规范之外,它还可以容忍程序流在被监督实体内违反一定数量的监督周期的行为它是可以定义一个程序流引用周期(WdgM监督的倍数周期)和一个公差,这是一些程序流程参考周期,在此期间对于被监督的实体,应该容忍程序流程违反,如果一个程序流违反被检测到的程序流引用周期比定义的容忍周期更多,然后被监督实体将其状态从FAILED更改为EXPIRED。
下面可以接受的违背SE相关参数:
WdgMFailedProgramFlowRefCycleTol:违背SE的程序流的可接收次数
WdgMProgramFlowReferenceCycle:检测程序流的SE的运行周期
Note:期限监督只有在WDG的附加组件程序流程和期限监督(deadline supervision)有licensed的情况下使用
(“WdgM_ProgramFlowAndDeadlineMonitoring”)
期限监督主要目的是检测那些临时/动态行为的SE.然而,它也可以极大地增加检测到随机跳跃或定时计数器的不规则更新的概率,和那些可能会在不被发现的情况下降低系统的完整性。
有以下配置:
1.最大(WdgMDeadlineMax)和最小(WdgMDeadlineMin)的期限,目标检查点需要在最大最小之间,否则就会检测到错误。出了最大的期限时间,强烈建议定义最小的期限时间,他能够隐式的检测出定时器计数错误,期限时间能够有效的发现任务崩溃及死循环。
2.通过指定相同的源,将期限时间分配给已经定义的转换和目的地检查点。
3.对于本地转换,源检查点和目标检查点属于同一个检查点监督实体。
4.对于全局转换,源检查点和目标检查点属于不同的监督实体。
下图的SE0定义了3个检查点CP0,CP1,CP2。
其中CP1,需要在CP0到达之后(0-2)S内执行,CP2需要在CP1到达之后(1-3)S内执行,否则就会检测到错误。
Note:Deadline vilation:1.下一个CP没有在要求时间内执行,2.在WdgM_MainFunction里,下一个CP根本没执行(或者还没有执行)同时最大的期限时间已经到了。