RK3308嵌入式系統使用Recovery模式升級的流程

一、Recovery升級概述

在嵌入式Linux系統開發中,對終端設備升級的方式有很多種,主要包括:1,SD卡或U盤啓動燒寫;2,OTA(空間下載技術)升級;3,遠程在線燒錄;4,文件拷貝的方式升級。本文主要介紹的是OTA技術升級時下載升級包到設備端後,再採用的Recovery模式對指定的分區進行燒寫的升級流程。

                                             Recovery升級流程圖

根據上面Recovery升級流程圖可以看出,實現調用升級功能的三個關鍵應用程序爲:

        RecoverySystem程序:作用爲啓動進入Recovery模式,並檢查是否需要燒寫Recovery.img鏡像。

        recovery程序:recovery模式的核心程序。

        rkupdate程序:作用爲解析update.img固件中各個分區數據,並執行對各分區燒寫升級關鍵程序。

二、升級前準備

編譯rootfs.img主文件系統鏡像:

1,在根目錄執行 source envsetup.sh,選擇對應平臺的編譯配置(如:rockchip_rk3308_release);

2,執行make menuconfig,打開recoverySystem的支持;

recoverySystem源碼位於:external/recoverySystem/

3,編譯

執行make recoverySystem-rebuild,然後執行./build.sh rootfs 編譯出rootfs主文件系統。

 

編譯recovery.img鏡像:

1,執行source envsetup.sh,選擇recovery對應的平臺編譯配置(如:rockchip_rk3308_recovery);

2,執行make menuconfig,打開recoverySystem的支持;

recovery源碼位於:external/recovery/

rkupdate源碼位於:external/rkupdate/

3,編譯

執行make recovery-rebuild和 make rkupdate-rebuild,然後執行./build.sh recovery編譯出recovery.img鏡像。

製作update.img升級包鏡像

1,修改tools/linux/Linux_Pack_Firmware/rockdev/package-file

      # vim tools/linux/Linux_Pack_Firmware/rockdev/package-file

     根據需要升級分區的配置,修改package-file文件。

2,執行./mkfirmware.sh,會將生成的固件拷貝到reckdev目錄

3,執行./build.sh updateimg,該命令執行會將update.img升級包放在reckdev目錄下。

 

三、Recovery升級過程

1,將update.img通過http上傳到嵌入式板子上,需要放到/userdata目錄或/mnt/sdcard目錄 或/udisk目錄,否則無法正常識別到update.img。

2,執行recoverySystem ota /userdata/update.img;

3,在進入recovery模式前,會解析update.img,檢查是否包含recovery.img鏡像,包含則先燒錄recovery.img。

4,寫入misc分區升級命令,並重啓系統,設備會進入recovery模式。

5,進入recovery模式,對misc命令進行解析,如果爲升級,則執行rkupdate升級程序,對指定分區進行燒寫。

6,升級成功,清除misc命令並重啓進入到normal系統。

                                                 解析misc過程

                                                       rkupdte程序進行固件燒寫

注意事項:

1,進行打包update.img時,需要先修改package-file文件,打開需要升級的分區,屏蔽掉不需要升級的分區,可以減小update.img的大小;

2,爲避免升級recovery.img過程中掉電導致升級無法進行的情況,因此將對recovery的升級放在主系統模式,而不是recovery模式下;

3,如果需要將升級包放在/userdata目錄下,請不要在package-file中打開userdata分區,不能在/userdata下升級包含userdata.img鏡像的升級包,以免在燒寫userdata過程中會損壞update.img鏡像。

4,對misc.img有以下幾個RK準備的鏡像

常用的爲blank-misc.img和wipe_all-misc.img

其中blank-misc.img爲空白的misc分區文件,wipe_all-misc.img爲格式化用戶分區使用的misc分區文件。

如需定製化修改可以查看external/recovery/recovery.c文件。

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章