工作中遇到了看门狗重启机制,感觉自己一知半解的,所以特地来做一下笔记。
基本释义
先是自己的语言描述:看门狗:本质上就是一个定时器,就是我们预先设定一个时间,时间到了后,它就会触发(单片机/控制器/设备)重启,为了不让程序重复重启,需要在程序中不断喂狗,其实就是将定时器清零,让看门狗无暇去按复位键复位。当程序异常时,看门狗因为超时没有得到食物,从而使(单片机/控制器/设备)重启,这是我一开始的在同事的讲解下得到的认知。
摘录:
From C知道: (第一次尝试使用C知道)
Watchdog,也称为看门狗定时器,是一个硬件或软件组件,主要用于监控系统运行状态并确保其稳定性。如果系统出现异常或长时间没有响应,看门狗会自动重启或触发恢复机制,防止系统陷入死锁状态。在嵌入式系统设计中,看门狗常用于检测程序故障、保持微控制器复位周期以及作为一种安全保护措施。
在软件层面,看门狗通常设置一个计数器,一旦计数器溢出,就会执行预先设定的操作,如重新加载操作系统、重启特定任务或者执行自定义的恢复代码。这样可以避免因为程序bug或其他未知原因导致的系统卡死。
硬件看门狗则直接连接到处理器,独立于系统时钟工作,当系统停止响应时,它可以独立于其他电路重启系统。
C知道生成的思维导图:
下面这个博主写的挺好的,也讲了很多专业名词,我暂时先收录在这里:
后面再做摘录和补充。
对于我项目中的域控制器而言,SOC会周期的向MCU发送特定的SPI消息,然后如果SOC出现了异常,停止了向MCU发送特定的SPI消息,那MCU在标定的时间内未收到SOC的特定消息,就会对SOC进行软重启,以重新恢复系统正常功能。