[RK3288][Android6.0] 調試筆記 --- 系統第一次開機進入Recovery模式原因【轉】


本文轉載自: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了,比較方便.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM