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等的电压有误差。