看门狗是触发时,系统是怎么知道并且重启的?

本文详细介绍了飞凌FET335xD实验板在Linux3.2操作系统下,看门狗定时器的工作原理和复位机制。当看门狗定时器溢出时,会向PRCM模块发送一个全局热复位信号,导致设备进行全局WARM复位。通过读取和修改相关寄存器,可以动态管理和配置看门狗定时器,确保系统的稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验板子:飞凌FET335xD
操作系统:linux3.2

看门狗是触发时,系统是怎么知道并且重启的?

1. 首先看一下cpu手册,关于复位寄存器的描述

在这里插入图片描述

其中bit(4)是看门狗的复位;bit(5)是外部的复位,即开发版的rst复位键

当看门狗触发时,会产生一个全局热复位的信号,并把PRM_RSTST的bit4置1

2. 再看一下cpu手册,关于看门狗的相关描述

在这里插入图片描述

从上图可以知道
溢出/复位的一代看门狗定时器寄存器(WDT_WCRR)溢出时,给PRCM模块产生一个active-low复位脉冲。
该RESET脉冲导致PRCM模块对设备产生全局WARM复位。

可以通过读取看门狗计数器寄存器(WDT_WCRR)动态地访问当前的定时器值;
可以通过访问看门狗定时器加载寄存器(WDT_WLDR)来修改当前的定时器值;
也可以通过在看门狗定时器触发寄存器(WDT_WTGR)上按照特定的重新加载顺序重新加载当前的定时器值。

硬件看门狗(Hardware Watchdog),也称为WDT,是一种内置在微控制器或其他设备中的电路,用于防止系统永久停止工作并自动恢复其功能。当系统运行异常导致程序卡死看门狗会定期发送中断请求,如果接收到这个中断并且超出了预设的间周期,就会强制执行预先设定的操作,通常包括复位(重启系统触发看门狗重启的具体流程通常是这样的: 1. 初始化:设置看门狗计数器的起始值,并配置一个间窗口,例如10秒到60秒之间,这取决于设计者的需要。 2. 开启监控:启动看门狗,它开始从设定的间开始递减计数。 3. 循环等待:主程序继续运行,期间正常执行任务。 4. 超检测:如果看门狗计数器到达0,它会引发一个硬中断,通知处理器发生异常情况。 5. 中断处理:处理器捕获到看门狗中断后,执行预设的重启操作,比如关闭电源、清零CPU状态寄存器,然后进入启动模式重新加载程序。 如果你正在编写软件来控制硬件看门狗,通常会包含这样的代码片段: ```c // 初始化看门狗器 wdt_init(); // 开始计 wdt_start(); while (1) { // 主循环... 如果程序挂起或无限循环,看门狗会在一段间后重启 } // 没有提供实际的WDT库函数,这是理想化的描述 void wdt_init() { // ... 设置看门狗寄存器... } void wdt_start() { // ... 启动看门狗... } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值