rk3368 开机内核启动不了

本文解决RK3368平台Android6.0系统启动时在uboot到kernel阶段卡顿的问题,分析发现是由于电源管理芯片rk818在两阶段的DCDC电压配置不一致导致。通过修改pmic_rk818.c文件中的电压选择逻辑,确保uboot和kernel阶段电压一致,从而解决启动卡顿。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

### RK3328 开机启动 GPIO 配置方法 对于RK3328芯片,在设备树(Device Tree)中定义GPIO的初始化状态是实现开机时自动配置GPIO的关键方式之一。具体来说,可以通过编辑设备树源文件(DTS),来设定特定GPIO的状态。 在设备树中,`pinctrl`节点用于管理引脚控制器,允许指定不同工作模式下的引脚配置集合。为了确保某些GPIO能够在系统上电后立即进入预设的工作状态,可以在设备树里创建专门针对这些GPIO的功能组,并将其绑定到系统的默认状态下运行[^1]。 下面是一个简单的例子展示如何在DTS文件中为某个具体的GPIO设置其功能: ```dts &pinctrl { ... state_default: pinmux { rockchip,grf-sleep; /* 定义一组新的pin configuration */ my_custom_pins: custom@0 { allwinner,pins = < ROCKCHIP_GPIO(0, 6) /* 使用GPIO0_6作为示例 */ (PIN_OUTPUT | PIN_PULL_NONE) >; }; /* 将自定义pins加入default state*/ default_state { rockchip,pins = <&my_custom_pins>; }; }; }; ``` 上述代码片段展示了怎样通过修改`.dts`文件中的`state_default`部分来添加一个新的GPIO配置项(`my_custom_pins`)并把它应用到默认状态(default_state),从而使得该GPIO在线路通电之初就能按照所期望的方式运作。 值得注意的是,实际操作过程中还需要考虑目标板的具体硬件设计以及操作系统版本等因素的影响;因此建议参照官方文档或社区资源获取更详细的指导信息。 此外,如果希望进一步简化开发流程或者提高灵活性,则可能需要调整内核驱动程序以支持动态加载不同的Pin Control配置,这通常涉及到对Linux Kernel内部模块如`kernel/drivers/pinctrl/pinctrl-rockchip.c`进行适当改动。 最后提醒一点,当处理与存储介质有关联的GPIO信号线时(比如控制SD卡电源或IO电压的选择器),务必小心谨慎地验证任何更改不会引起潜在的数据丢失风险或其他兼容性问题[^2]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值