基于rk3358的 ab系统配置
配置ab系统
在 Rockchip 提供的 Linux SDK 中,已经实现了 A/B 系统的基础功能,可是实现在 Flash中存有两份独立系统,系统在启动时可以从其中一个 slot 上启动,另一个 slot 作为备份,当
出现启动失败时,可以从另一个备份 slot 上继续启动。 或者在 slot A 上对 slot B 进行系统升级。
文档使用 SDK 版本为 rk3358_linux5.10_release_v1.5.0_20241220 进行举例说明。 默认SDK 配置不使能 AB 系统,当需要再标准系统中使能 AB 系统,需要 u-boot, misc, parameter
和 rootfs 支持。 以下逐步进行说明如何配置
AB 与标准系统的 parameter.txt 有很大不同,以下是一个在 RKPX30 使用的分区表,与标准系统相比较,去除了 recovery 分区, boot 分区有两份 boot_a 和 boot_b,文件系统分区
也有两份 system_a 和 system_b。

烧 录 工 具 对 应 配 置 , 可 以 配 置 完 成 后 右 键 保 存 为 rk3358ab.cfg 保 存 于 :device/rockchip/rk3358/rk3358ab.cfg
在 device/rockchip/rk3358/rockchip_rk3358_evb_ddr3_v10_defconfig 中加入以下配置,使能 SDK 对 AB 系统的配置:
RK_RECOVERY=n
RK_PARAMETER="parameter_ab.txt"
RK_OTA_PACKAGE_FILE_CUSTOM=y
RK_AB_UPDATE=y
检查 u-boot 配置需要打开以下配置项
CONFIG_AVB_LIBAVB=y
CONFIG_AVB_LIBAVB_AB=y
CONFIG_AVB_LIBAVB_ATX=y
CONFIG_AVB_LIBAVB_USER=y
CONFIG_RK_AVB_LIBAVB_USER=y
CONFIG_ANDROID_AB=y
Buildroot 适配
BR2_PACKAGE_RECOVERY=y #开启升级功能
BR2_PACKAGE_RECOVERY_BOOTCONTROL=y #开启引导控制脚本
BR2_PACKAGE_RECOVERY_RETRY=y #不配置则默认为 successful_boot 模式
BR2_PACKAGE_RECOVERY_USE_UPDATEENGINE=y #新升级程序
BR2_PACKAGE_RECOVERY_UPDATEENGINEBIN=y #编译新升级程序
BR2_PACKAGE_RECOVERY_NO_UI=y # 关掉 UI
编译烧录完后启动系统
更新系统适用的是rk android里三方库updateEngine 可以在/usr/bin/下找到
使用指令 切换到另一个系统
updateEngine --misc=other --reboot
升级包的制作,也是提供了一个工具在 tools/linux/Linux_Pack_Firmware/rockdev/ 下。使用到的工具为其中的 afptool 和 rkImageMaker
新建一个文件夹createota,把使用到的afptool 和 rkImageMaker 拷贝到当前 的目录下
在createota下新建package-file 内容如下
# NAME PATH
package-file package-file
parameter Image/parameter.txt
bootloader Image/MiniLoaderAll.bin
# uboot Image/uboot.img
# trust Image/trust.img
boot_a Image/boot.img
boot_b Image/boot.img
system_a Image/rootfs.img
system_b Image/rootfs.img
# oem Image/oem.img
# userdata Image/userdata.img
使用 afptools 生成 update.raw.img:
./afptool -pack ./ update.raw.img
使用 rkImageMaker 生成最终 OTA 升级包
./rkImageMaker -RKPX30 Image/MiniLoaderAll.bin update.raw.img update.img -os_type:androidos
然后使用updateEngine 去升级 大致流程就这样,具体的原理还在研究
浙公网安备 33010602011771号