rk3288 linux OTA A/B升级分析

本文介绍了rk3288 Linux设备的OTA A/B升级过程,涉及update程序、uboot、recovery分区和rkupdate程序。升级流程包括解析update.img,更新recovery分区,uboot从misc分区读取指令,进入recovery模式完成升级。A/B升级方案需修改partition信息,uboot配置,并调整rkupdate以支持两个slot的更新。
摘要由CSDN通过智能技术生成

最近在做rk3288 linux的OTA A/B升级方案,因此研究了一下rk3288自带的OTA升级流程,将其记录下来。

1.概述

1.1 什么是OTA升级?

OTA是Over-the-Air的简称,OTA升级可以理解为用户正常使用过程中进行升级,OTA 升级旨在升级基础操作系统、系统分区上安装的只读应用和/或时区规则。

1.2 什么是OTA A/B升级?

A/B 系统升级(也称为无缝更新)的目标是确保在OTA升级期间在磁盘上保留一个可正常启动和使用的系统。

1.3 rk3288分区信息

参考:https://github.com/rockchip-linux/docs/blob/master/Tools/Rockchip-Parameter-File-Format-Version1.4.pdf

Rockchip android系统平台使用parameter文件来配置一些系统参数,比如固件版本,存储器分区信息等。

以下是一个典型的parameter.txt文件内容:

FIRMWARE_VER: 8.1
MACHINE_MODEL:rk3288
MACHINE_ID:007
MANUFACTURER:RK3288
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 3288
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(trust),0x00002000@0x00008000(misc),0x00010000@0x0000a000(boot),0x00010000@0x0001a000(recovery),0x00010000@0x0002a000(backup),0x00020000@0x0003a000(oem),0x00700000@0x0005a000(rootfs),-@0x0075a000(userdata:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

这里重点关注其中的CMDLINE中的MTD分区定义:

例如:0x00700000@0x0005a000(rootfs),@符号之前的数值是分区大小,@符号之后的数值是分区的起始位置,括号里面的字符是分区的名字。所有数值的单位是sector,1个sector为512Bytes。此处定义了一个名为rootfs的分区,其大小为0x00700000个sector(3GB),起始位置为0x0005a000个sector(180MB)。

1.4 rk3288 linux SDK获取

参考https://github.com/rockchip-linux/docs/blob/master/Rockchip_Developer_Guide_Linux_Software_CN.pdf

以下代码路径均以SDK为根

2.rk3288 OTA升级

2.1 升级流程

  1. 运行update程序,命令为update ota /path/to/update.img
  2. update程序解析update.img文件,升级recovery分区
  3. update程序将升级指令写入misc分区,重启
  4. 重启后进入uboot,uboot解析misc分区中的命令,如果是升级指令,则从recovery分区引导
  5. 进入recovery模式
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值