当前位置: 首页 > 嵌入式Linux > 正文

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

前不久,有几台设备一直在无故复位,虽然我很怀疑是应用程序搞死设备的,但公司的人员一向都是自己找不到问题就赖内核。对于这个复位,我的意见是禁止看门狗再测试,但没人理会,因此我想在看门狗超时前在内核里打印点东西,以证明到底是不是狗超时引起的复位(其实很久前就有这个想法,也尝试了,就是因为一个小小的疏忽不成功)。
在狗超时前打印信息需要在WDT驱动中改代码。加上打印信息,就能知道到底是不是看门狗超时导致系统复位了。
前提条件是芯片的看门狗支持DELAY中断(其它的不我知道,反正我所搞的那个芯片是有的)。
步骤如下:
在probe函数
1、中注册DELAY中断,
2、设置DELAY时间(即狗超时前多少秒触发中断)。
3、使能DELAY中断。
4、在DELAY中断处理函数(isr)打印你想打印的信息。
5、为了观看时间,可以调用do_gettimeofday和rtc_time_to_tm函数(只要#include 即可)。
另外要注意的是在设置狗超时时间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...

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

2015年1月PS:
无意间发现上面打印的月份比实际少1个月。公司没同事发现,也就不改了。

李迟记于2014年5月20日

本文固定链接: http://www.latelee.org/embedded-linux/print-info-before-wdt-timeout.html

如无特别说明,迟思堂工作室文章均为原创,转载请注明: 看门狗超时前在内核打印信息 | 迟思堂工作室

目前暂无评论

发表评论

*

快捷键:Ctrl+Enter