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 端的控制軟件,直接就可以連接手機了, 啟動成功了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM