看门狗超时前在内核打印信息

前不久,有几台设备一直在无故复位,虽然我很怀疑是应用程序搞死设备的,但公司的人员一向都是自己找不到问题就赖内核。对于这个复位,我的意见是禁止看门狗再测试,但没人理会,因此我想在看门狗超时前在内核里打印点东西,以证明到底是不是狗超时引起的复位(其实很久前就有这个想法,也尝试了,就是因为一个小小的疏忽不成功)。

在狗超时前打印信息需要在WDT驱动中改代码。加上打印信息,就能知道到底是不是看门狗超时导致系统复位了。

前提条件是芯片的看门狗支持DELAY中断(其它的不我知道,反正我所搞的那个芯片是有的)。

步骤如下:

在probe函数

1、中注册DELAY中断,

2、设置DELAY时间(即狗超时前多少秒触发中断)。

3、使能DELAY中断。

4、在DELAY中断处理函数(isr)打印你想打印的信息。

5、为了观看时间,可以调用do_gettimeofday和rtc_time_to_tm函数(只要#include <linux/rtc.h>即可)。

另外要注意的是在设置狗超时时间timeout时,要设置DELAY时间。

之前我搞不成功,是因为我没有在设置狗超时时间的同时设置DELAY时间。因为超时时间一量更改了,DELAY也必须跟着更改。

下面是效果示例:

// 启动时间:
XXXX -rtc XXXX 1-rtc: setting system clock to 2014-05-14 02:09:19 UTC (1400033359)

//狗超时:
<- Late Lee  Watchdog DELAY interrupt happened ->
At UTC time :2014-04-14 02:10:18
Will reboot soon...

 

代码是公司的,思路是自己整理的,只给出思路,不便放代码。打印信息也作了处理,但不影响示例。


李迟记于2014年5月20日

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值