单片机看门狗定义及其作用分析

什么是单片机看门狗 看门狗(wdt)是一个定时器,开启看门狗定时器之后(比如定时200ms),在单片机程序中每隔一定的时间(小于200ms)要“喂狗”一次,即将看门狗定时器清零。这样做的用处是,一旦单片机程序跑飞,没有在定时的时间之内去喂狗,那么定时达到200ms时,看门狗自动将单片机复位。
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称“看门狗”(watchdog)。
单片机看门狗的作用 看门狗的作用是系统cpu正常工作时定时给看门狗喂狗,复位定时器,如果系统出问题,没有给看门狗喂狗,看门狗就由于超时将cpu复位。
系统用初始化后注册看门狗中断request_irq(wdt0_accscssnbark_int, wdog_bark_handler, 0, “apps_wdog_bark”, null);
和初始化看门狗的超时时间bark time,
__raw_writel(timeout, msm_tmr0_base + wdt0_bark_time);
__raw_writel(timeout + 3*wdt_hz, msm_tmr0_base + wdt0_bite_time);
复位看门狗,使能看门狗和中断极性。
__raw_writel(1, msm_tmr0_base + wdt0_en);
__raw_writel(1, msm_tmr0_base + wdt0_rst);
enable_percpu_irq(wdt0_accscssnbark_int, irq_type_edge_rising);
并且初始化和启动一个定时器,比如10秒一次,
schedule_delayed_work_on(0, &dogwork_struct, delay_time);
static declare_delayed_work(dogwork_struct, pet_watchdog_work);
static declare_work(init_dogwork_struct, init_watchdog_work);
static struct msm_watchdog_pdata msm_watchdog_pdata = {
.pet_time = 10000,
.bark_time = 11000,
.has_secure = true,
.needs_expired_enable = true,
};
delay_time = msecs_to_jiffies(pdata-》pet_time);
schedule_work_on(0, &init_dogwork_struct);
定时器定时时间到了对定时器复位pet dog 和重新启动定时器。
static void pet_watchdog_work(struct work_struct *work)
{
pet_watchdog();
if (enable)
schedule_delayed_work_on(0, &dogwork_struct, delay_time);
}
如果系统出问题了,没有办法执行定时器的回到函数,那么看门狗就产生中断,执行中断服务程序static irqreturn_t wdog_bark_handler(int irq, void *dev_id),
执行panic。 panic(“apps watchdog bark received!”);

新能源电动汽车报废有规定吗
苹果14手机什么时候上市,预计价格多少?
欲想在iPhone用户身上“薅羊毛”的库克,这次栽到了一个大跟头
研究发现LED释出的蓝光可对果蝇寿命造成影响
华裔教授发明铝离子电池:充满电仅需1分钟
单片机看门狗定义及其作用分析
智能灯杆是是智慧城市建设中的“桥梁”
机器学习/人工智能应用开发的硬件及机遇
盘点GaAs在光电子方面的应用及市场规模
Openwrt开发指南 第12章 添加OpenWrt软件包
线性谐振传动器是在单个轴上产生振荡力的振动电机
数控机床(自动化机床)对传感器的使用有哪些要求?
学校机房动环监控系统
请关注!奥斯达特价供应现货网络分析仪Agilent8714E
多媒体信息发布解决方案
华为EMUI 10的用途让人兴奋
直线马达选型中力怎么计算
科大讯飞夺冠2019年度计算机视觉顶级会议CVPR和ICDAR多项评测
双翻斗雨量计的功能特点
海尔智家2021份额25.1%蝉联第一 份额连涨创新高