看门狗定义
硬件看门狗
一个定时器电路, 输入为喂狗, 输出为MCU
复位端RST
软件看门狗
将硬件的处理机制用内部定时器
代替
软硬件看门狗异同
启动时机不一样
硬件上电, 遇到第一个高脉冲, 看门狗启动
软件的需要先初始化配置
相同点
- 都是基于定时器实现
- 都需要在规定时间内喂狗
- 喂狗靠软件
不同点
软件 | 硬件 | |
---|---|---|
附加功能 | 无 | 一般有延迟复位 电源检测… |
屏蔽方式 | 非常容易- 修改寄存器 | 电不断, 狗不歇 |
启动方式 | 初始化寄存器 | 上电 接收第一个脉冲 |
初始化 | 1. 配置相关寄存器 2. 调用相关子程序 | 上电接收第一个脉冲完成初始化 |
RT-Thread
无法 “喂狗” 导致的原因
- 线程陷入
无效死循环
, 长时间占用资源, 导致调度器无法运行空闲线程, “喂狗” 的钩子函数无法执行 - 线程 “跑飞” 导致不能及时 “喂狗” 系统 “被咬” 复位
看门狗的弊端
看门狗不能用来解决问题
只能发现一些
程序的潜在错误
和恶劣环境下的干扰导致死机
问题, 而在无人干预
下恢复正常故障怠工期间的损失不可挽回
硬件看门狗
!!!贵!!!
软件看门狗
- 无法检测系统内部故障
- 可通过
双定时器
互相监视, 但会加大开销, 但由于中断故障导致的定时器故障也无法检测
RTOS
中使用看门狗-
建立最低优先级的看门狗定时任务
溢出时间要足够长
单片机不是经常满负荷运行 – CPU不是一直被高优先级任务占用 -
建立最高优先级任务
保证喂狗及时性
低优先级的任务故障无法起效 -
多任务检测
看门狗为最高优先级
任务定时向看门狗发消息 – 只有在一定时间内收全所有任务发来的消息 才喂狗
-