Platform: RK3368
OS: Android 6.0
Kernel: 3.10.0
电源管理芯片用的是配套的rk818,经测量发现板子在上电启动时,u-boot阶段与kernel阶段dcdc电压不一样。从uboot切换到kernel时卡,串口打印只能打印到
Starting kernel ...
就没有打印了,内核没有继续跑下去。
跟踪代码发现uboot中rk818初始化与kernel中的不一样,这会使uboot跳转到kernel后电压出现波动,导致启动内核不能正常启动.改成一样即可解决boot阶段与kernel阶段电压不一样问题。
--- a/drivers/power/pmic/pmic_rk818.c
+++ b/drivers/power/pmic/pmic_rk818.c
@@ -172,10 +172,10 @@ static int rk818_dcdc_select_min_voltage(int min_uV, int max_uV ,int num_regulat
u16 vsel =0;
if (num_regulator == 0 || num_regulator == 1){
- if (min_uV < 700000)
+ if (min_uV < 712500)
vsel = 0;
else if (min_uV <= 1500000)
- vsel = ((min_uV - 700000) / 12500) ;
+ vsel = ((min_uV - 712500) / 12500) ;
else
return -EINVAL;
}
一般卡住问题,就是打印突然中止或者乱码,一般是pmic的 dcdc 电源出现问题。
1卡在Starting kernel ...
2 卡在syr827
3卡在rk818
附近时,一般是dcdc电源配置错误,导致cpu logic ddr vccio等的电压有误差。
本文解决RK3368平台Android6.0系统启动时在uboot到kernel阶段卡顿的问题,分析发现是由于电源管理芯片rk818在两阶段的DCDC电压配置不一致导致。通过修改pmic_rk818.c文件中的电压选择逻辑,确保uboot和kernel阶段电压一致,从而解决启动卡顿。
915

被折叠的 条评论
为什么被折叠?



