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

在狗超时前打印信息需要在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日

看门狗超时前在内核打印信息相关推荐

  1. 关闭Linux内核打印信息方法

    调试内核模块过程中,kmsg打印信息太多,通过修改/proc/sys/kernel/printk文件内容来控制. 一般通过 echo 0 > /proc/sys/kernel/printk关闭打 ...

  2. linux内核看门狗关闭方法,linux内核中断之看门狗

    一:内核中断 linux内核中的看门狗中断跟之前的裸板的中断差不多,在编写驱动之前,需要线把内核自带的watch dog模块裁剪掉,要不然会出现错误:在Device Drivers /Watchdog ...

  3. linux 多线程看门狗,X86平台的看门狗驱动,在内核中开线程喂狗

    1.X86平台的看门狗驱动: 相关文件为:drivers/watchdog/iTCO_wdt.c 相关配置选项为: Device Drivers  ---> [*] Watchdog Timer ...

  4. [笔记]ESP32 踩坑 任务看门狗超时的问题---Task watchdog got triggered

    一.环境配置 更新--- 2022/4/13 问题:之前的操作会造成新项目无法找到esp_vApplicationldleHook的函数,所以改成了屏蔽宏定义的操作,但是需要使用者在自己的所有项目的m ...

  5. STM32看门狗超时时间计算

    独立看门狗 公式 超时时间的公式为 :超时时间 :IWDG_PR寄存器中位2:0的十进制值 :重装载寄存器IWDG_RLR所对应的重装载数值 公式解读 首先,我们要明白: 独立看门狗内部是一个递减计数 ...

  6. Linux之旅-第一个内核打印信息

    1.编译环境: 根据Tiny4412用户手册.pdf中的3.2节完成开发环境的配置: 2.新增内核日志打印宏定义 #define LOGE(fmt, ...) printk(KERN_ERR &quo ...

  7. printk在应用层的设置方式及读取内核打印信息的方法

    如果 printk 中没有加调试级别,则使用默认的调试级别.注意,调试级别和格式化字符串之间没有逗号.当前控制台的各打印级别可以通过下面的命令来查看. # cat /proc/sys/kernel/p ...

  8. linux查看内核打印信息,通过sysrq打印linux内核信息

    1. SysRq的启用与关闭 要想启用SysRq, 需要在配置内核时设置Magic SysRq key (CONFIG_MAGIC_SYSRQ)为Y. 对于支持SysRq的内核, /proc/sys/ ...

  9. Linux开启关闭内核打印信息

    路径: kernel/printk/printk.c 位置: int console_printk[4] = {CONSOLE_LOGLEVEL_DEFAULT, /* console_logleve ...

最新文章

  1. kwargs.pop是什么意思
  2. 阿里达摩院2020趋势第一弹:感知智能的“天花板”和认知智能的“野望”
  3. 使用Composer安装Laravel步骤
  4. 批处理中百分号%的作用
  5. css实现圆形钟表,js+css3圆形指针时钟代码
  6. 选购商用计算机任务书,计算机网络综合实习任务书-.doc
  7. 基于nodejs实现每天固定时间发送邮件服务
  8. myeclipse 注册码生成代码(6.5----9.0均可使用)
  9. 学习笔记之awk用法
  10. 祭奠被遗忘的冒泡排序
  11. 我的世界java营火如何合成_我的世界:关于营火的8个“冷”知识,可通过27000种方式来合成!...
  12. 项目管理工具 - TAPD
  13. A. Is your horseshoe on the other hoof?
  14. 【qq机器人】定时发送消息大全
  15. CPU idle框架
  16. 白蛋白纳米-超声微泡载组织型纤溶酶原激活物基因靶向制备研究
  17. 人人商城互动直播(与通信服务器连接失败)
  18. TruckSim Quick Start Guide(TruckSim快速入门)
  19. 人民币对美元汇率中间价报6.7615元 下调73个基点
  20. 为什么Android没有iOS那么顺滑

热门文章

  1. 线性独立路径_设计一个线性电源电路,需要准备哪些元器件呢?
  2. 刘强东卸任京东集团CEO!接任人是他...
  3. 清明档总票房仅1.2亿元 全国影院营业比例不足50%
  4. 小红书再度出拳整治医美 首批处置违规笔记27.9万篇
  5. Redmi K50电竞版卖点投票:120W神仙秒充一骑绝尘
  6. 799元!乐视智能门锁新品Le1S发布
  7. 抖音电商发布创作者管理总则 近八万名带货达人因违规被罚
  8. 苹果鼓励美国员工赴中国出差 一天500美元奖金
  9. 果然!这款不到1万的折叠手机同样秒售罄
  10. 马斯克再创历史!人类首个商业载人飞船发射成功:移民火星又近一步