1. 对于watchdog的三个描述:pet,bark,bite

pet:喂狗,是一个定时循环的行为,一般<10s

bark:在设定的时间内没有喂狗,触发bark;bark是一个irq信号

bite:bark后仍然没有被喂,超出设定时间后触发bite;bite是一个FIQ信号

8450/8475之后,TME负责喂system watchdog(区别于之前的TZ喂狗); 与此同时,新增一个watchdog在app cpu subsystem上。触发这个watchdog时,它的bite信号会发给TME,TME保存数据并reset系统。

默认情况下bark和bite和pet时间使用default值,对nonsecure watchdog而言,默认bark时间为11s,bite时间为12s(指距离上一次喂狗时间)。

触发bark的原因大多数情况下都是禁用抢占权限、其他进程占用时间太多或log重复打印以及死锁现象。在高通文档中,有说明一些相关的config,如:

CONDIG_DEBUG_SPINLOCK,

CONFIG_DEBUG_MUTEXES,

CONFIG_DEBUG_ATOMIC_SLEEP

2. Watchdog for APPS CPU

这是大多数时候我们处理的watchdog问题。

2.1 non secure HW watchdog [NS watchdog]

原理是在HLOS上设置一个定时器,定期喂non-secure watchdog HW;11s内不喂狗触发bark。HLOS可以处理,则自行进panic;不能处理则交由TZ处理。

NS watchdog,每个CPU负责对自己的watchdog进行操作。

2.2 secure watchdog

secure watchdog每6s发送一次bark到TZ作为FIQ,FIQ处理器接受到信号后喂secure watchdog HW;TZ在22s后未能处理bark信号,则触发bite,并将中断信号传递给USC。

2.3 system watchdog

2.4 android software watchdog

运行在虚拟机上的watchdog java线程,路径为framworks/base/services/java/com/android/server/watchdog.java.通常情况下watchdog周期为60s,debug模式下设置为10s.

原理:watchdog定时向处理器发送监视信号;检测到挂起后,watchdog保存现场并杀死system进程从而引发重启。这不是一个严格的系统崩溃,而是内核可以恢复的错误。

通过查看保存了线程和进程情况的trace logs可以定位死锁情况。

3. log查看

3.1 触发了kernel panic

non secure watch dog bark:

watchdog bark!now = .....

watchdog last pet at ......

CPU alive mask from last pet 0-3

kernel panic - not syncing: Apps watchdog Bark received!

3.2 不是由panic引起的watchdog bite

由一些意外的堵塞引起了pet的堵塞。

4. 标志性log和可能的成因

4.1 log过多堵塞

出现大量log的重复输出,如每100行就出现的log等

4.2 明显的特殊驱动

例如在stack结束前出现了spinlock或mutex call,可能是产生了死锁;

4.3 调度问题

在dmesg_TZ中若出现了许多pending workqueue内容和几条workqueue busy内容,这些内容中的一个可能堵塞了workqueue,可以用grep追查可能长时间占用的部分。

检查irq和runqueue,以确认是否是由于irq过多或RTtask堵塞了CPU。若当前正在运行的进程是swapper,则另有说明。此外,要注意有没有RT Throttling的部分,出现这份log的原因可能是堵塞而导致的watchdog无响应。

4.4 定时器本身问题

4.4.1 计时器bug

检查timelist.txt,比对计时器列表和计时器

4.4.2 内存损坏导致计时器问题

timerlist中出现了一些异常随机的数据,说明可能是内存问题

4.4.3 硬件层损伤导致的计时器异常

有关watchdog的个人学习相关推荐

  1. [实践篇]13.22 la qcom平台Watchdog Bark/Bite学习总结

    一,Watchdog简介 watchdog是我们系统系统工程师常常挂在嘴边的,最常见的异常之一,它有一个很别致的中文名 - 看门狗. 对于la系统,我们常见的几种重启情况包括内核态重启和用户态重启.内 ...

  2. php查询MySQL结果转化为数组_PHP_PHP将MySQL的查询结果转换为数组并用where拼接的示例,mysql查询结果转换为PHP数组的 - phpStudy...

    PHP将MySQL的查询结果转换为数组并用where拼接的示例 mysql查询结果转换为PHP数组的几种方法的区别: $result = mysql_fetch_row():这个函数返回的是数组,数组 ...

  3. python3文件夹监控模块watchdog学习

    网上搜索python的文件夹监控,windows下推荐的大多数都是watchdog,萌新的我就学习了下这个模块. 这模块看了很久的git,没看懂,后来把git的示范代码拉在电脑上跑了一次就懂了,所以对 ...

  4. WINCE6.0+S3C2443下WatchDog学习

    ********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi ...

  5. NRF52832学习笔记(31)——Watchdog看门狗使用

    一.简介 看门狗定时器(WDT: Watchdog Timer)的作用是在发生软件故障时(如程序陷入死循环或者程序跑飞),强制复位单片机,让单片机重新运行程序. 看门狗定时器本质上是一个计数器,只不过 ...

  6. CC2640R2F学习笔记(8)——Watchdog看门狗使用

    一.背景 如果在一定的时间内没有通过"喂狗"来清除看门狗的 counter,则看门狗会产生一个复位,使程序重启. 看门狗一旦开启,就不能停下来. 二.移植文件 链接:https:/ ...

  7. ESP32学习笔记(40)——Watchdog看门狗使用

    一.简介 看门狗其实就是一个定时器,从功能上说它可以让微控制器在程序发生意外(程序进入死循环或跑飞)的时候,能重新回复到系统刚上电状态,以保障系统出问题的时候可以重启一次.说的复杂一点,看门狗就是能让 ...

  8. Linux驱动学习之:WDT(watchdog)驱动

    第一部分: WDT驱动原理 WDT在内核中通常都实现为misc驱动. WDT介绍 一个Watchdog Timer(WDT)是一个在软件出错的时候可以复位计算机系统的硬件电路. 通常一个用户空间守护进 ...

  9. [实践篇]13.21 la qcom watchdog学习笔记

    [QNX Hypervisor 2.2用户手册]目录(完结) 一,watchdog简介 wdt定时器配置了一个狗叫-Bark和狗咬-Bite时间,如果没有在规定的时间周期内喂狗-Pet,即系统出现无响 ...

最新文章

  1. 在建工程直接费用化_计入在建工程的成本怎么算
  2. Zookeeper服务端线程分析(单机)
  3. 【Linux网络编程】TCP 和 UDP 数据报格式详解
  4. MVC PartialView
  5. Shell 企业29道面试题 [转]
  6. 网易北京:全员核酸检测为阴性 园区环境检测为阴性
  7. 看淘宝UED招聘题,思索FSE技能定位(附参考答案)
  8. 48.本地Hyper-V虚拟机的异地(Azure)容灾(下)
  9. 【天池竞赛系列】阿里移动推荐算法思路解析
  10. 模板与泛型编程(二)
  11. ImageLoader的简单分析
  12. 海康ps流转换h264流
  13. 活在当下本意是抑制欲望的无度
  14. [影视源码]全民影院源码 综合影视HTML源码 无需更新搭建即可用
  15. Spring中的depends-on
  16. 高效准确处理scipy.misc 中imresize、imread导入错误问题
  17. 计算机电路基础知识点总结,《计算机电路基础》课程教学方法的探索
  18. 怎样用阿里云搭建个人博客
  19. 歌曲转调之后和弦如何转换
  20. [修改 Mysql5.7密码策略]Your password does not satisfy the current policy requirements

热门文章

  1. php5应用程序无法启动,因为应用程序的并行配置不正确
  2. (附源码)基于PHP的酒店住宿管理系统 毕业设计261455
  3. codeforces 解题报告 978B. File Name strings greedy
  4. 全球第二大服装集团PVH验厂纲要
  5. 上海python编程培训机构
  6. GridView控件
  7. 21、基于51单片机无线防丢器设计寻物跟踪儿童防丢系统设计
  8. JavaBeans简介
  9. Go语言学习教程(十一)
  10. CSS 实现日历样式