编辑推荐: |
本文介绍基于AUTOSAR的内部与外部watchdog的区别。希望对你的学习有帮助。 本文来自于汽车电子嵌入式,由火龙果软件Elaine编辑,推荐。 |
|
基于AUTOSAR的内部与外部watchdog的区别:
内部watchdog:可以基于STM32的片内wdg理解
片内看门狗的特点是Wdg模块是直接访问相关硬件寄存器。内部看门狗服务程序可以通过独立于其他外设的内部硬件计时器(Timer)中断来实现,也可以通过GPT驱动模块的回调函数来实现。当内狗使能以后,如果程序运行异常,没有有效喂狗,内狗会触发SMU(Safety
Management Unit)的Alarm,进行异常处理,eg:通知复位控制单元(RCU:Reset
Control Unit)进行复位。
内部watchdog主要监控程序运行后的软件状态,如监控OS启动后,周期性Task、非周期性Task、软件时序的运行状态。需要注意就是,内部watchdog存在程序初始化和程序shutdown的监控盲区。
STM32 有两个看门狗,独立看门狗和窗口看门狗,独立看门狗又称宠物狗,此独立看门狗外设可检测并解决由软件错误导致的故障,并在计数器达到给定的超时值时触发系统复位。
独立立看门狗 (IWDG) 由其专用低速时钟 (LSI) 驱动,因此即便在主时钟发生故障时仍然保持工作状态。IWDG
最适合应用于需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的应用。
窗口看门狗又称警犬,系统窗口看门狗 (WWDG) 通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。
除非程序在 T6 位变成 0 前刷新递减计数器的值,否则看门狗电路在达到预置的时间周期时,会产生一个复位。如果在递减计数器达到窗口寄存器值之前刷新控制寄存器中的
7 位递减计数器值,也会产生复位。这意味着必须在限定的时间窗口内刷新计数器。
WWDG 时钟由 APB 时钟经预分频后提供,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。WWDG
最适合那些要求看门狗在精确计时窗口起作用的应用程序。
外部watchdog:
内部watchdog存在程序初始化和程序shutdown存在监控盲区,所以外部wdg可以fix这部分问题。如果uC没有及时喂外狗,导致外狗超时,同时拉低ROT
Pin,也就是拉低uC的Reset Pin,触发uC的复位。注意:外狗一旦被外部使能,一般不会关闭
。
是Autosar EcuM启动阶段的软件运行行为。如果软件只是开启了内狗,eg:仅使能 Alive
Supervision。需要等到OS启动以后,内狗功能才发挥作用。但是,在程序的初始阶 段,OS启动之前,如果程序异常跑飞,内狗则无法起到监控作用。
软件Shutdown阶段的监控盲区
关于外部watchdog的需求,基于TLF35584
外部PMIC的watchdog
TLF35584
TI TPS6594
AUTOSAR中如果使用WdgM_MainFunction来喂狗:
如果系统对看门狗的响应时间和实时性要求较高,那么使用WdgM_MainFunction可以确保看门狗定时器的定期重置。WdgM_MainFunction通常会在主循环或周期性任务中被调用,以确保看门狗定时器得到及时重置。如果系统中有专用的定时任务或硬件定时器,可以直接在这些任务或定时器中处理看门狗的重置操作,而不需要额外的WdgM_MainFunction。
如果使用WdgM_MainFunction,那么在程序初始化和程序shutdown存在监控盲区,为了解决这个问题,可以采取以下措施:
初始化阶段的监控:在程序初始化阶段,在调用WdgM_MainFunction函数之前,确保所有的关键模块和功能已经初始化完毕,并且系统已经稳定运行。只有在系统达到稳定状态后,才启动对外部看门狗的监控。
关闭阶段的监控:在程序关闭阶段,在调用WdgM_MainFunction函数之前,确保所有需要监控的模块和功能尚未关闭,并且系统仍然处于可响应的状态。只有在系统完全停止之前,才停止对外部看门狗的监控。
考虑额外的保护措施:除了使用WdgM_MainFunction函数外,可以考虑在程序初始化和关闭阶段使用其他机制或组件来保证系统的稳定性和可靠性。例如,可以使用硬件看门狗或其他监控机制来监控系统的初始化和关闭过程,以提供额外的保护。
在函数WdgM_MainFunction函数中,它主要执行的功能是
检查看门狗的状态,根据配置的监控策略进行处理。
如果看门狗未被及时喂养或超时,WdgM_mainfunction 函数会触发相应的错误处理操作。
管理看门狗模式切换,根据系统需求和配置,切换看门狗的工作模式,如从开发模式切换到运行模式,或者根据系统状态进行动态切换。
在 WdgM_MainFunction 函数中触发底层喂狗,从TI和Inf可以看出,主要就是高低电平触发模式和Q&A模式.]
如果喂狗的状态错误,重启Watchdog.
End
|