当前位置: 首页 > news >正文

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_INITRD=y

2.2 BoardConfig.mk 配置

文件路径:<SDK>/project/cfg/BoardConfig*.mk

添加以下配置项:

# misc 镜像配置 export RK_MISC=recovery-misc.img # 开启 Recovery 编译功能 export RK_ENABLE_RECOVERY=y # 可选:指定需要升级的镜像(不配置则默认打包 uboot/boot/rootfs) # export RK_OTA_RESOURCE="uboot.img boot.img rootfs.img userdata.img"

2.3 修改分区表

必须在分区表中添加miscrecovery两个分区,大小与顺序可按项目调整。参考分区配置:

export RK_PARTITION_CMD_IN_ENV=\ "256K(env),1M@256K(idblock),1M(uboot),8M(boot),32M(rootfs),48M(oem),32M(userdata)"

三、Recovery 编译与 OTA 升级包制作

3.1 编译 Recovery

执行编译命令:

./build.sh recovery

3.2 打包 OTA 升级包

./build.sh ota

生成的升级包路径:

<SDK>/output/image/update_ota.tar

3.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_DIR=`dirname $(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 完整升级流程

  1. 内核开启CONFIG_BLK_DEV_INITRD=y
  2. BoardConfig.mk 配置RK_ENABLE_RECOVERY=y
  3. 分区表添加 misc + recovery 分区
  4. 编译 Recovery:./build.sh recovery
  5. 打包 OTA 升级包:./build.sh ota
  6. 上传update_ota.tar到设备/userdata
  7. 执行reboot recovery启动升级
  8. 系统自动完成烧写并重启

七、注意事项

  1. reboot recovery必须依赖 SDK 内 busybox 或对应补丁
  2. 分区表必须包含 misc 和 recovery,否则无法进入升级模式
  3. 升级中断电不会变砖,重启可继续
  4. 不配置RK_OTA_RESOURCE时,默认升级 uboot、boot、rootfs
  5. 升级失败可查看 Recovery 日志定位问题
http://www.jsqmd.com/news/636656/

相关文章:

  • 遥感数字图像处理教程【2.1】
  • AD大电流开窗进阶:将动态铺铜精准转换为阻焊层静态Region的实战指南
  • 深入探索Dream DSP芯片开发环境搭建
  • GLM-OCR助力数据库课程设计:实验报告与文档自动解析入库
  • C# 面试高频题:装箱和拆箱是如何影响性能的?拇
  • 从Java转行大模型应用,大模型微调,模型微调的概念和选择合适的基座模型
  • GitHub Copilot vs Claude Code:深度对比
  • 面了个新人连Agent如何进行冷启动都不知道
  • 免费实时空气质量API接口:一站式获取AQI+PM2.5+NO2+CO+O3+SO2+PM10数据
  • ML.NET 自动机器学习(AutoML)完全指南
  • WinCDEmu虚拟光驱软件:3分钟掌握ISO文件挂载的终极解决方案
  • 成本降70%!清华、阿里通义带来智能体长程任务新解法
  • 从ESP8266到ESP32-C6:一文看懂乐鑫芯片的‘家族进化史’与背后的物联网十年
  • (自用)LNMP-Redis-Discuz5.0部署指南-openEuler24.03-测试环境
  • 二本毕业做AI Agent:能拿多少年薪
  • 5分钟快速上手:用Python高效下载Google卫星地图的终极指南
  • Excel曲线拟合实战:从基础趋势线到高级模型应用
  • YOLOv7实战指南:如何实现高精度与实时性的多任务目标检测
  • Go语言中的网络编程:从TCP到WebSocket
  • 《数论探微:进阶版》(Arithmetic Tales: Advanced Edition)俗
  • 机器学习与深度学习的区别是什么?看这一篇就够了
  • PC游戏ACE反作弊Ring3层绕过实战:从文件校验到模块替换
  • OpenHarmony LiteOS-M Shell 命令开发指南
  • 为什么92%的SITS2026项目在Phase 2失败?——多Agent角色编排、任务分解与状态同步的黄金三角模型,
  • STM32+OpenCV智能分拣实战:从图像采集到云端监控的嵌入式系统设计
  • Spring AI MCP客户端实战:从配置到工具调用的完整指南
  • OV2640寄存器配置黑魔法:手把手教你用ESP32-S3调出专业级画质
  • Devuino:面向Arduino的现代C++设备抽象库
  • 避坑指南:VS2022配置IMSL Fortran库时常见的路径错误与权限问题(附64位系统专属解决方案)
  • Phi-3-mini-128k-instruct代码解释能力实测:逆向工程与文档生成