关于分析系统suspend的底电流异常的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于分析系统suspend的底电流异常的方法相关的知识,希望对你有一定的参考价值。

关于分析系统suspend的底电流异常的方法

关于如何分析飞行模式下底电流高的问题的方法:

1)硬件是否下电、
2)clock src是否没关、
3)gpio是否状态不对导致漏电、
4)压根没有suspend、AP suspend了但modem等其他子系统没有suspend
5)其他文档(硬件是否下电、clock src是否没关、gpio是否状态不对导致漏电、压根没有suspend、APsuspend了但modem等其他子系统没有suspend)

高通通过trace脚本,dump出来在AP cpu核系统suspend的情况下SOC的gpio状态。因为JTAG可以读取这些map好的寄存器的值。

关于suspend的注意事项

1)驱动suspend时,一般会对外设芯片置于省电模式,或者对外设芯片断电。断电前可能需要读取并保存寄存器的当前状态值,以便resume时需要恢复。
2)驱动suspend时,需要对gpio状态设置为防止漏电模式,根据硬件要求。
3)驱动resume时,根据设备是否被open了,需要修改gpio状态回外设工作的模式。
4)驱动resume时,根据设备是否被open了,需要重新恢复外设为工作状态,或者上电,但上电后,需要重新初始化外设寄存器,甚至需要恢复回suspend时的寄存器状态值。

另外关于系统功耗,一定要在所有功能外设模块都打开过一遍,或所有功能外设模块正在使用时,按power key进入suspend,然后等suspend时,测试功耗,这样可以检查哪些模块的驱动在suspend时没有关闭电源、clock和恢复gpio状态。如果没有使用此功能或者至少没有使用过此功能,那么此设备就没有打开过,那么即使suspend时漏了关闭电源、clock、漏了修改gpio状态,因为之前就没有打开,所以也就不会检查出来问题。这样测试功耗低,也发现不了什么驱动的bug。

具体参见我的《如何编写linux设备驱动》视频课程:
https://edu.51cto.com/course/17132.html

另外我的相关培训视频请看:
欢迎观看我发布的各个课程: https://edu.51cto.com/lecturer/8896847.html

以上是关于关于分析系统suspend的底电流异常的方法的主要内容,如果未能解决你的问题,请参考以下文章

Selenium常见异常分析及解决方案

--电路的分析方法

电路原理——线性电阻电路的分析方法和电路原理

关于一起linux secure安全日志写入异常分析处理

电路分析实验 01 - | 受控电流源电路的仿真测试

Suspend to RAM和Suspend to Idle分析,以及在HiKey上性能对比