AutoSAR Watchdog Stack由三个软件模块组成,分别是:
Watchdog Manager是AutoSAR架构中位于服务层的模块,通过监控可配置的被监控实体(Supervised Entities)来监控程序流中功能安全相关的逻辑和时间行为等。当它检测到程序执行过程中违反了配置的时间或者逻辑约束时,会执行一系列可配置的操作来从故障中恢复。
Watchdog Manager提供三种监测机制:
用于监测周期性软件,在一定时间内被监测到的次数必须满足预定值。
对于非周期软件,必须满足一个截止时间。
用于监测软件执行时序的正确性。
WdgM监控的逻辑单元
当到达检查点时,Supervised Entity会调用函数WdgM_CheckpointReached()
来向WdgM发出报告。每个Supervised Entity有一个或多个Checkpoint。
周期性的Supervised Entity在给定时间范围的执行次数受到限制。通过实时监控,WdgM周期性地检查Supervised Entity的Checkpoint是否在给定时间限制内到达,以此来检查Supervised Entity的运行频率不会太高或者太低。
定义一个监测周期有多少个活动指示(Checkpoint到达次数)
监测周期数
预期活动指示个数的下限
预期活动指示个数的上限
因此,允许的活动指示个数范围为:
[WdgMExpectedAliveIndications - WdgMMinMargin, WdgMExpectedAliveIndications + WdgMMaxMargin]
为了发送活动指示,Supervised Entity会调用函数WdgM_CheckpointReached()
,每调用一次,Alive Counter自增1。
Alive Supervision就是通过统计Alive Counter计数来监控是否达到预期的活动指示个数。
此监控由函数WdgM_Main Function()
来执行,在WdgMSupervisionReferenceCycle周期内来监测Supervised Entity的Checkpoint的到达数量。
假设监控函数WdgM_Main Function()
周期为20ms,Alive Supervision配置参数如下:
WdgMExpectedAliveIndications = 2
WdgMSupervisionReferenceCycle = 2
WdgMMinMargin = 1
WdgMMaxMargin = 0
根据上述配置,WdgM期望在40ms内要检测到一个或两个活动指示。
Deadline Supervision检查非周期性Supervised Entity的时间约束。在这些Supervised Entity中,某个事件的发生及其随后的事件在给定时间间隔内发生,这个时间间隔有最大和最小截止期限(时间窗口)。
最小Deadline
最大Deadline
Deadline开始检查点(Checkpoint)
Deadline结束检查点(Checkpoint)
对于Deadline开始和结束的检查点,WdgM有一个时间戳来存储Checkpoint到达的时间。时间戳是通过读取OS Tick来获得的。
目标检查点(Checkpoint)应该在WdgMDeadlineMin和WdgMDeadlineMax之间到达,否则WdgM会检测到当前软件运行违反了Deadline要求。
假设
Checkpoint1的WdgMDeadlineMin = 0
Checkpoint1的WdgMDeadlineMax = 2
Checkpoint2的WdgMDeadlineMin = 1
Checkpoint2的WdgMDeadlineMax = 3
Checkpoint0初始时间点0到达,Checkpoint1,Checkpoint2随后按照先后顺序到达,Checkpoint1和2的到达Deadline窗口如下图所示:
Logical Supervision检查Supervised Entity的代码是否按照正确的顺序执行。
假设有一个温度控制模块,执行流程图如下:
上述逻辑中设置了5个Checkpoint,且Checkpoint必须按照如下顺序到达才认为是软件逻辑正确执行,否则检测出程序逻辑错误:
1)Checkpoint0 -> Checkpoint1 -> Checkpoint3
2)Checkpoint0 -> Checkpoint1 -> Checkpoint4 -> Checkpoint5
3)Checkpoint0 -> Checkpoint2 -> Checkpoint5