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文件。

 

 

 

 

 

 

 

 

 

 

  • 6
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值