各位好!
用RK3288 做了一个板子, PMIC用的是 RK818;
用的系统是android5.1的,内核中的dst文件开始时是没有添加rk818的相关的; 我参考其它的dts文件,添加了对rk818的支持;
这样改动后,把各个映像烧写进去,uboot启动能够识别到rk818,内核启动也能识别到rk818;
但是遇到了问题,就是系统只能进入到recovery模式,每次重启后,uboot引导内核,然后内核也是调到recovery模式下,无法正常进入系统。
以下是启动时uboot的打印:
U-Boot 2014.10-RK3288-10-g791753e-dirty (Oct 16 2016 - 16:37:12)
CPU: rk3288
cpu version = 0
CPU’s clock information:
arm pll = 600000000HZ
periph pll = 297000000HZ
ddr pll = 200000000HZ
codec pll = 384000000HZ
Board: Rockchip platform Board
DRAM: Found dram banks: 1
Adding bank:0000000000000000(0000000100000000)
128 MiB
GIC CPU mask = 0x00000001
SdmmcInit = 0 400
SdmmcInit = 2 0
storage init OK!
Using default environment
GetParam
Load FDT from resource image.
power key: bank-0 pin-5
battery: gl=100 dl=100 rl=100, v=4400, m=0
pmic:rk818
DCDC vdd_logic has been used, pwm regulator not init it.
Can’t find dts node for fuel guage cw201x
SecureBootEn = 0, SecureBootLock = 0
#Boot ver: 2016-10-16#2.30
empty serial no.
checkKey
vbus = 1
read logo on state from dts [1]
can’t find power_ctr node for lcdc0
pll_src = 1, dclk_hz = 148500000, dclk_div = 2
got recovery cmd from misc.
load fdt from resouce.
ERROR: [get_entry_ram]: Cannot find logo_kernel.bmp!
Secure Boot state: 0
kernel @ 0x02000000 (0x006a32e0)
ramdisk @ 0x05bf0000 (0x002c6788)
bootrk: do_bootm_linux…
Loading Device Tree to 05600000, end 0561cb7c … OK
Add bank:0000000000000000, 00000000fe000000
Starting kernel …
它应该是识别到rk818的;
以下内核的打印:
[ 0.000000] ion_reserve: cma reserved base d3c00000 size 671088640
[ 0.000000] cma: CMA: reserved 16 MiB at 1f000000
[ 0.000000] Memory policy: ECC disabled, Data cache writealloc
[ 0.000000] Boot mode: RECOVERY (2) flag: RECOVER (0xc3524203)
[ 0.000000] PERCPU: Embedded 9 pages/cpu @c2edd000 s13376 r8192 d15296 u36864
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 1039360
[ 0.000000] Kernel command line: vmalloc=496M console=ttyS2 androidboot.selinux=permissive androidboot.hardware=rk30board androidboot.console=ttyS2 init=/init mtdparts=rk29xxnand:0x00002000@0x000000002
…
[ 1.056473] act8846_i2c_probe,line=898
[ 1.057913] act8846 set 0xf4 error!
[ 1.057997] act8846: probe of 0-005a failed with error -11
[ 1.062510] vdd_arm: 712 ↔ 1500 mV at 1000 mV
[ 1.063534] The device is not syr82x fffffff5
[ 1.063552] syr82x: probe of 0-0041 failed with error -11
[ 1.064004] rk808_i2c_probe,line=1355
[ 1.065336] The device is not rk808 -11
[ 1.065407] rk808: probe of 0-001b failed with error -11
[ 1.065480] rk818_i2c_probe,line=1239
[ 1.065730] rk818_pre_init,line=1154
[ 1.075607] vdd_logic: 712 ↔ 1500 mV at 1100 mV
[ 1.080434] rk818_dcdc2: 1200 mV
[ 1.084013] rk818_dcdc3: 1200 mV
[ 1.087755] vccio: 1800 ↔ 3300 mV at 3300 mV
[ 1.091332] rk818_ldo1: 3300 mV
[ 1.094892] rk818_ldo2: 3300 mV
[ 1.098477] rk818_ldo3: 1000 mV
[ 1.102056] rk818_ldo4: 1800 mV
[ 1.105632] rk818_ldo5: 3300 mV
[ 1.109189] rk818_ldo6: 1000 mV
[ 1.112757] rk818_ldo7: 1800 mV
[ 1.116318] rk818_ldo8: 1800 mV
[ 1.118799] vcc_sd: 1800 ↔ 3300 mV at 3300 mV
[ 1.120016] rk818_ldo10: at 3300 mV
[ 1.121568] rk818_irq_init: rk818_pmic_irq=1
[ 1.121929] i2c-core: driver [rk818] using legacy suspend method
[ 1.121942] i2c-core: driver [rk818] using legacy resume method
[ 1.122421] rk818_rtc_probe,line=542
[ 1.131680] rk818-rtc rk818-rtc: rtc core: registered rk818 as rtc0
[ 1.133649] rk818_rtc_probe:ok
[ 1.135047] Switching to clocksource arch_sys_counter
[ 1.143701] rk_battery_charger_detect_cb , battery_charger_detect 1
然后后面启动到recovery模式的命令行。
1)我把这些我改动后,编译出来的所有映像,下载到firefly3288 reload 板子, reload板子能够正常启动到android系统中; 并不会像我的板子那样一直进入recovery模式;
2)我查看了内核的代码,它是会读取cpu的pmu相关的寄存器来决定是进入recovery模式,还是 normal模式的, 我想咨询下,哪些方面会影响这些寄存器的值呢? 是不是我rk818配置的哪组电压不对吗?
3)一直进入recovery模式,我做了排除,应该是和我板子的recovery按键没关的,在uboot启动时,如果不按recovery按键,它是不会进入升级状态的;
4)有哪个朋友,也是用rk3288 + rk818 做板子的吗? 若有,能否给一下建议,是不是我的哪里的改动不对?
谢谢!