rk3399pro android 系统启动失败问题

调试rk3399pro 的板子,编译好 image 烧录ok,现象是这样的,能连接adb , 可以 adb logcat。但是 通过 pc 控制软件 Vysor 不能连接手机, 连接 HDMI 屏幕也没有显示。

打印adb logcat 分析,发现连个 异常:

1 zygote64: Incomplete boot detected. Pruning dalvik cache. 表示android 没有启动成功

2 从 adb log 和 串口log 都能发现这个崩溃信息

[ 4.577503] DEBUG: #00 pc 000000000001e2e0 /system/lib64/libc.so (strlen+16)

[ 4.577558] DEBUG: #01 pc 0000000000047b80 /system/lib64/libc.so (__strcpy_chk+32)
[ 4.577614] DEBUG: #02 pc 0000000000000aa8 /vendor/lib64/hw/power.rk3399pro.so (rk_power_init+392)
[ 4.577701] DEBUG: #03 pc 0000000000003298 /vendor/lib64/hw/android.hardware.power@1.0-impl.so (HIDL_FETCH_IPower+240)

 

目前只能顺着这个代码崩溃信息往下查下, 找到 函数 rk_power_init() 的代码,可以看到这个函数去读 cpu0 cpu1 gpu 的频率信息,没有读到 cpu1 和 gpu的节点信息,直接拷贝,就崩溃了。

adb shell 后 进入这些路径去看,确实没有生成这些节点。

#define CPU_CLUST1_GOV_PATH "/sys/devices/system/cpu/cpufreq/policy4/

#define GPU_GOV_PATH "/sys/class/devfreq/ff9a0000.gpu/governor

 

在kernel 的代码中找 cpufreq 的驱动,产生这些节点的文件,在 kernel log 中搜 cpu 有关的 log,发现如下 异常信息:

[ 1.040714] cpu cpu4: Failed to set regulator for cpu4: -517
[ 1.041043] cpu cpu5: Failed to set regulator for cpu5: -517

这个 cpu4 和 cpu5 正好是 上面 CPU_CLUST1 对应的 cpu。 这个 cpu 的 供电 没有读到,从 dts 中查找, cpu 的供电

&cpu_b0 {
cpu-supply = <&vdd_cpu_b>;
};

&cpu_b1 {
cpu-supply = <&vdd_cpu_b>;
};

vdd_cpu_b: tcs452x@1c {
compatible = "tcs,tcs452x";

}

打开原理图,查找 cpu_b 的供电, 发现供电的芯片不是 tcs452x, 而是 

vdd_cpu_b: syr837@40 {
compatible = "silergy,syr827";

}

 

从 rockchip 的dts 中搜有没有 用 syr837 作为 cpu_b 的配置,果然能搜到,修改这个 cpu b 的电压配置,编译 kernel , 烧录 boot.img。 

串口log 中 cpu 设置电压fail 的log 不见了, 节点也生成出来了,崩溃信息也消失了。

通过 pc 端的控制软件,直接就可以连接手机了, 启动成功了。

posted @ 2020-03-18 15:24  mojl  阅读(1749)  评论(0编辑  收藏  举报