利用hardware watchdog debug kernel bug

本文根据watchdog特性讨论 内核开发过程当中watchdog更多的应用场景

根据上一篇watchdog分析知道watchdog由内核线程负责定时喂狗,但当出现极端事件导致cpu无法调度到喂狗线程时会出现什么情况?解析如下

s3c2410硬件Watchdog通过利用内部定时器定时复位,通常用于检查调试cpu是否hung 或者关中断情况下while死循环导致系统无法正常运行。在内核编程中,可以通过内核线程定时给watchdog的复位清零, 使得watchdog计数器永远不会被复位,当内核出现cpu hung或者死循环导致无法调度时,内核线程无法被调度用于喂狗则会导致watchdog复位重启或者产生 watchdog中断(watchdog reset设置为中断)
1、对于中断关闭情况下的CPU Hang,在没有FIQ的情况下(目前支持Trustzone的ARM都未能支持FIQ),唯一的办法是通过Watchdog恢复系统,而无法找到相关的内核场景,只能通过printk一步一步地分析。
2、不过有些其他情况也可能导致硬件Watchdog的喂狗线程无法喂狗而造成Watchdog重启,例如,中断风暴,由于中断的优先级最高,如果中断特别频繁,将会导致整个内核无法调度,从而block掉喂狗线程。对于这类情况,如果中断没有关闭,是可以通过Watchdog IRQ模式来获取一些内核现场的,可以设置watchdog启用irq模式, 即soft_noboot=1,并且在中断处理函数加入以下两条语句,用于在irq中断中打

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值