RK1106 Recovery 开发与固件升级指南(超详细)
适用平台瑞芯微 RK1106本文档基于 RK1106 官方 Recovery 开发手册整理完整讲解 Recovery 配置、编译、OTA 打包、固件升级全流程适合嵌入式开发、系统移植、固件维护使用。一、Recovery 模式概述RK1106 的Recovery 模式是独立于正常系统Normal的专用升级分区由kernel resource ramdisk组成。引导逻辑u-boot 通过读取misc 分区字段判断启动 Normal 系统或 Recovery 系统核心优势升级过程中断电 / 异常终止重启后可继续执行保证升级完整性升级结果规则升级成功 → 自动重启进入 Normal 系统升级失败 → 停留在 Recovery 并打印日志未检测到 SD 卡 / 升级包 → 直接重启进入 Normal 系统二、Recovery 启用前置配置2.1 内核配置必开在对应内核 defconfig 中开启 INITRD 支持CONFIG_BLK_DEV_INITRDy2.2 BoardConfig.mk 配置文件路径SDK/project/cfg/BoardConfig*.mk添加以下配置项# misc 镜像配置 export RK_MISCrecovery-misc.img # 开启 Recovery 编译功能 export RK_ENABLE_RECOVERYy # 可选指定需要升级的镜像不配置则默认打包 uboot/boot/rootfs # export RK_OTA_RESOURCEuboot.img boot.img rootfs.img userdata.img2.3 修改分区表必须在分区表中添加misc和recovery两个分区大小与顺序可按项目调整。参考分区配置export RK_PARTITION_CMD_IN_ENV\ 256K(env),1M256K(idblock),1M(uboot),8M(boot),32M(rootfs),48M(oem),32M(userdata)三、Recovery 编译与 OTA 升级包制作3.1 编译 Recovery执行编译命令./build.sh recovery3.2 打包 OTA 升级包./build.sh ota生成的升级包路径SDK/output/image/update_ota.tar3.3 上传升级包到设备将update_ota.tar上传到设备/userdata目录示例 TFTP 命令tftp -g -r update_ota.tar 192.168.80.42四、进入 Recovery 执行升级设备端执行重启进入升级模式命令reboot recovery⚠️ 重要说明该命令需要使用SDK 自带 busybox或打上对应补丁才能正常执行。执行后系统自动进入 Recovery完成校验、分区烧写、重启流程。五、升级脚本 RK_OTA_update.sh升级核心脚本功能遍历分区→擦除→写入镜像→清空 misc 分区。#!/bin/sh set -e COMMON_DIRdirname $(realpath $0) TOP_DIR$(realpath $COMMON_DIR/../..) cd $TOP_DIR echo Start to write partitions for image in $(ls /dev/block/by-name) do if [ -f $COMMON_DIR/${image}.img ];then echo Writing $image... mtd_path$(realpath /dev/block/by-name/${image}) flash_eraseall $mtd_path nandwrite -p $mtd_path $COMMON_DIR/${image}.img if [ $? -ne 0 ];then echo Error: $image write failed. exit 1 fi fi done echo Erase misc partition flash_eraseall /dev/block/by-name/misc if [ $? -ne 0 ];then echo Error: Erase misc partition failed. exit 2 fi六、RK1106 完整升级流程内核开启CONFIG_BLK_DEV_INITRDyBoardConfig.mk 配置RK_ENABLE_RECOVERYy分区表添加 misc recovery 分区编译 Recovery./build.sh recovery打包 OTA 升级包./build.sh ota上传update_ota.tar到设备/userdata执行reboot recovery启动升级系统自动完成烧写并重启七、注意事项reboot recovery必须依赖 SDK 内 busybox 或对应补丁分区表必须包含 misc 和 recovery否则无法进入升级模式升级中断电不会变砖重启可继续不配置RK_OTA_RESOURCE时默认升级 uboot、boot、rootfs升级失败可查看 Recovery 日志定位问题