看门狗是一个定时器,它存在的主要目的是防止CPU跑飞导致的无法恢复的问题。它的原理是,设定一个定时时间,然后启动定时器,CPU定时去重设看门狗定时器,当定时器到期后,会直接输出信号给CPU,这个信号可以是一个CPU上的中断引脚,也可以直接输出给CPU的RST引脚。

当看门狗定时器输出的信号给到CPU的中断时,CPU一般需要以最高优先级去处理该中断,在中断处理程序中执行恢复或者重启操作;当看门狗定时器的输出信号给到CPU的RST引脚时,那么将不需要软件参与,硬件直接触发CPU的重置操作。

高通平台上有两个watchdog,一个是NON-SECURE WORLD watchdog,它是由linux kernel负责控制的;另一个是SECURE WORLD watchdog,它是由TZ控制的。

Nosecure watchdog:

  • bark:超时时间为11 seconds,喂狗时间一般要低于10s,当超时时间到期时会报中断到linux kernel中处理,内核认为此时CPU可能处于hang状态,所以在中断处理函数中触发bite操作。
  • bite:超时时间为bark timeout + 3 seconds,当bark过后再继续持续3s会触发bite,Nosecure watchdog的bite事件并不在kernel中处理,而是会报给TZ FIQ,由TZ进行处理。
    在这个TZ的FIQ处理中,有两个关键的步骤:
    1.会把所有处于online状态的CPU上下文都要被保存起来到ddr memory中,以供后面dump使用;
    2.会在TZ中强制等待secure watchdog 超时bite从而进入warm reset执行crash dump操作。

因此当发生Nosecure watchdog bite后,一定会发生Secure watchdog bite。只有进入Secure watchdog bite,才能在最后使手机触发PS_HOLD迫使AP执行warm reset。 需要注意的是Nosecure watchdog bite并不会触发PS HOLD操作,而是触发Secure watchdog从而间接触发PS HOLD操作。

Secure watchdog:
Secure watchdog事件都会报给TZ进行处理,它也包含两个事件:

  • bark:超时时间为6 seconds,这个并不是一个致命的错误,它只是报一个FIQ到TZ,告知TZ要进行喂狗操作了,TZ接收到中断后需要进行喂狗操作。
  • bite:超时时间为22 seconds,TZ中的secure watchdog bite发生后都会直接触发PS_HOLD拉低,这个信号会传递给PMIC上,对于默认的PS HOLD操作是warm reset,而对于PMIC的warm reset操作,PMIC不会对AP和DDR进行掉电,而会发送resin信号给AP的resin脚,触发AP中的TZ reset重置操作,后面的warm reset处理都由TZ来接管。分为如下两种情况:

1.如果使能reset debug特性,那么会执行SDI(system debug image),经过一系列操作后最后再次触发PS HOLD reset进入ramdump模式抓取dump log。
2.如果没有使能reset debug,再次触发PS HOLD reset进入ramdump模式抓取dump log

另外需要注意如果是手动下拉了PS_HOLD操作触发PMIC的warm reset,整个流程也是与secure watchdog bite是一样的。ps hold被下拉触发pmic warm reset,这种对于pmic来说就是不掉电,只是发送这个resin给ap,让ap的tz复位重新开始执行,从而进入后面的dump步骤。

watchdog分析(高通平台)相关推荐

  1. 高通android智能平台环境搭建_编译流程分析,高通平台环境搭建,编译,系统引导流程分析参考...

    高通有两个cpu,他们分别跑不同的系统,应用程序(ap)端是android系统,modem 端是高通自己的系统. 要编译出可供烧写使用的镜像文件需要三部分代码: 1) 获取经过高通打补丁的 andro ...

  2. 高通平台环境搭建,编译,系统引导流程分析 .

    1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通开发板上烧录文件系统 建立高通平台开发环境 高通平台,android和 modem 编译流程分析 高通平台 7620 启动流 ...

  3. 高通平台按键驱动代码分析

    一.Input输入子系统架构 Input Driver(Input设备驱动层)->Input core(输入子系统核心层)->Event handler(事件处理层)->User s ...

  4. 高通平台启动log概述(PBL log、sbl1 log、kernel log)

    高通平台启动log概述(PBL log.sbl1 log.kernel log) 在嵌入式linux的调试过程中log有着至关重要的地位,等同于医生的CT报告.能够熟悉启动各个阶段的log,如PBL阶 ...

  5. Android高通平台调试Camera驱动全纪录

    项目比较紧,3周内把一个带有外置ISP,MIPI数据通信,800万像素的camera从无驱动到实现客户全部需求. 1日 搭平台,建环境,编译内核,烧写代码. 我是一直在Window下搭个虚拟机登服务器 ...

  6. 高通平台开发实践经验

    高通平台开发实践经验 本文以一个3GPP下MO call(mobile original call)为例,简述从上层到下层如何建立call.安卓架构很多人都有印象,从APP层到FrameWork层到H ...

  7. 高通平台双卡槽网络模式支持国内所有运营商

    Part1 高通平台双卡网络模式通常是卡槽1支持4.3.2G网络,卡槽2一般会默认写为固定,在之前的android L及L以下,msm8909.msm8916平台上基本设置为GSM only,因为需求 ...

  8. [Linux Audio Driver] 高通平台内部MIC_BIAS简介

    #更新 2020.05.10 我觉得我这个标题取的不是很妥当,为了表达对技术的敬畏之心,我将原标题 <一文搞懂内部MIC_BIAS>修改为<高通平台内部MIC_BIAS简介> ...

  9. 请把Camera hold住 - Android高通平台调试Camera驱动全纪录

    项目比较紧,3周内把一个带有外置ISP,MIPI数据通信,800万像素的camera从无驱动到实现客户全部需求. 1日 搭平台,建环境,编译内核,烧写代码. 我是一直在Window下搭个虚拟机登服务器 ...

  10. android 高通平台有前途吗,华为鸿蒙计划要适配高通平台了,可以告别安卓搭载鸿蒙OS了?...

    鸿蒙走出这一步是可以想象到的,看来华为打造这个系统希望的结果是万物皆可盘呀,所以一开始就提出了开源,也就意味着这次是高通,下次就可以是联发科,甚至更多的手机品牌也完全就可以搭载!早期我们一直在说国产手 ...

最新文章

  1. java basic认证_Basic认证
  2. Python的matplotlib—绘图(3)
  3. AngularJs angular.bind、angular.bootstrap、angular.copy
  4. HDU 3062 Party(2-sat题模板+tarjan )
  5. git 多用户多仓库配置
  6. python opencv2_python opencv2 api
  7. 静态路由(实验讲解+配置)
  8. python词云图_人生苦短我用Python——词云图的绘制
  9. 5.2.6 std::atomic<>主要类的模板
  10. php rsa2 微博,微博登录分析
  11. 百度和bing的背景肤色图片的保存
  12. 小米2系列板砖自救行动
  13. 插件化原理解析——广播的管理
  14. 【安全知识分享】道路运输机动车驾驶员安全培训(71页)(附下载)
  15. c语言笔记——黑马程序员上课笔记
  16. 是性格决定命运,还是命运造就性格?
  17. Android 无usb数据线调试方法,ADB无线连接 调试
  18. 从0了解矩阵——矩阵的本质
  19. 【buuctf】cscctf_2019_qual_babyheap
  20. 【IT运维小知识】安全组是什么意思?

热门文章

  1. python将pdf转化为图片格式,可指定清晰度
  2. G-S迭代求解线性方程,以及三对角矩阵求解
  3. 京东HBase异地多活调研
  4. 夸女人的JAVA代码_Java是一个事业成功的女人
  5. github 项目的基本结构以及git的使用方法
  6. 扫码点餐运营版 手机扫码点餐+餐厅大数据+全场景营销运营于一体
  7. 计算机同步的原理是什么意思,说说和朋友圈同步的原理是什么意思
  8. 2021年R1快开门式压力容器操作考试及R1快开门式压力容器操作考试内容
  9. 警惕无良IT培训机构的套路
  10. eNSP AR1启动失败的解决办法