RK3308嵌入式系统使用Recovery模式升级的流程

一、Recovery升级概述

在嵌入式Linux系统开发中,对终端设备升级的方式有很多种,主要包括:1,SD卡或U盘启动烧写;2,OTA(空间下载技术)升级;3,远程在线烧录;4,文件拷贝的方式升级。本文主要介绍的是OTA技术升级时下载升级包到设备端后,再采用的Recovery模式对指定的分区进行烧写的升级流程。

RK3308嵌入式系统使用Recovery模式升级的流程_第1张图片

                                             Recovery升级流程图

根据上面Recovery升级流程图可以看出,实现调用升级功能的三个关键应用程序为:

        RecoverySystem程序:作用为启动进入Recovery模式,并检查是否需要烧写Recovery.img镜像。

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

        rkupdate程序:作用为解析update.img固件中各个分区数据,并执行对各分区烧写升级关键程序。

二、升级前准备

编译rootfs.img主文件系统镜像:

1,在根目录执行 source envsetup.sh,选择对应平台的编译配置(如:rockchip_rk3308_release);

2,执行make menuconfig,打开recoverySystem的支持;

RK3308嵌入式系统使用Recovery模式升级的流程_第2张图片

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的支持;

RK3308嵌入式系统使用Recovery模式升级的流程_第3张图片

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系统。

RK3308嵌入式系统使用Recovery模式升级的流程_第4张图片

                                                 解析misc过程

RK3308嵌入式系统使用Recovery模式升级的流程_第5张图片

                                                       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准备的镜像

RK3308嵌入式系统使用Recovery模式升级的流程_第6张图片

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

其中blank-misc.img为空白的misc分区文件,wipe_all-misc.img为格式化用户分区使用的misc分区文件。

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

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(嵌入式系统,linux系统)