本文轉載自:http://blog.csdn.net/kris_fei/article/details/53464461
latform: ROCKCHIP
OS: Android 6.0
Kernel: 3.10.92
描述:
當系統全部download開機后,會默認進入Recovery模式,這個其實是misc分區里的內容在作怪.
misc分區:
misc.img是RK原始就提供而不是自己編譯生成的,其實misc里內容就兩行,用UE可查看:
Uboot log:
#Boot ver: 2016-11-29#2.30
empty serial no.
normal boot.
checkKey
vbus = 1
read logo on state from dts [1]
pll_src = 0, dclk_hz = 138700000, dclk_div = 2
edp pll locked
Aux Transaction fail!
link training success.
unable to config video
got recovery cmd from misc. //從它入手!
load fdt from resouce.
Secure Boot state: 0
Uboot 流程:
board_late_init -> rk32xx.c
board_fbt_preboot -> fastboot.c
rkloader_run_misc_cmd ->
get_disk_partition -> //獲取misc分區的ptn, MISC_NAME是"misc"
StorageReadLba -> //這里正是讀取misc分區有內容的地方
do_bootrk //如果有boot-recovery的命令,那么開機進入recovery模式. 第一此會成立,開機進入recovery后misc cmd會被清掉.
Recovery流程:
main -> recovery.cpp
get_args ->
get_bootloader_message -> bootloader.cpp
volume_for_path //獲取misc分區
get_bootloader_message_block_rk29 //和uboot一樣讀取misc里的內容
//不過這里主要獲取的是--wipe_all 這條命令,接着就會做wipe data/cache的動作.
finish_recovery -> //等全部正常完成后,會去清除misc分區里的內容,否則會一直進入recovery模式.
set_bootloader_message //清除動作.
這樣的設計使得每次download后就不用再去清data/cache了,比較方便.