platfom:RK3399
OS:Android 7.1.2
现象
设备在密闭未开空调的一个实验室做满负荷老化实验,发现十几分钟时候会出现关机重现现象.
分析
步骤一:
首先分析认为有非常大的可能性是CUP过温自我保护重启了.
RK808:
查看RK808的数据手册发现:
在这里插入图片描述
发现RK808的默认温度阈值是85度
CPU/GPU
rk3399.dtsi:
soc_thermal: soc-thermal {
polling-delay-passive = <20>; /* milliseconds */
polling-delay = <1000>; /* milliseconds */
sustainable-power = <1000>; /* milliwatts */
thermal-sensors = <&tsadc 0>;
trips {
threshold: trip-point-0 {
temperature = <70000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "passive";
};
target: trip-point-1 {
temperature = <85000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "passive";
};
soc_crit: soc-crit {
temperature = <115000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "critical";
};
};
70度温控开始工作,85度会降频,115度会重启.
CPU温度
cat /sys/class/thermal/thermal_zone0/temp
GPU温度:
cat /sys/class/thermal/thermal_zone0/temp
步骤二:
做了如下实验:
1.更换密闭空间测试,看是否会复现
2.使用热风枪加热主板(主要为 CPU),看是否会复现
复现确实会复现;所以判定为过温导致系统重启.
步骤三:
散热措施:
1.通风
2.增加导热硅胶
3.增加散热片
4.增加风扇
5.增加
6.增加通风孔
7.动态调频/将频
进行上述修改措施之后重新测试,发现还是有一定概率发生系统重启.这就非常奇怪了,散热措施做的已经很好了.为什么还会重启呢?
步骤四:
在步骤三的情况下,测试并读取CPU温度.
cat /sys/class/thermal/thermal_zone0/temp
发现在CPU温度为60多度,接近70度的时候系统发生重启.这显然没有达到系统关机的出发条件.那肯定是其他地方的原因导致了重启.
步骤五:
排查所有开机/重启相关的电路,最后终于发现了问题
在这里插入图片描述
复位电路部分:
高温使得D9011反向导通,OTP_RST->D9012->D9011->4G_RST形成回路.使得TP9239电位拉低.从而形成一个复位的电平效果,导致系统重启.
解决方式
由于当时设计的时候想同时复位4G模块,所以增加了4G_RET电路,并加在了复位电路上.现在看是有问题.
去掉二极管D9011,4G复位可以改用软件复位.
网友评论