watchdog分析(高通平台)

看门狗是一个定时器,它存在的主要目的是防止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步骤。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值