在嵌入式开发中,经常遇到需要定制固件的场景:更新 RT-Thread 应用程序、替换 Linux 内核或设备树、修改根文件系统配置等。这些需求都离不开对 Rockchip update.img 整包固件的解包与重打包操作。
本文以睿擎派 RC3562 为例,详细介绍整包固件从解包、修改分区内容、重新打包到烧录验证的完整操作流程。
一、准备工作
1.1 所需工具
睿擎派整包固件制作依赖 Rockchip 官方工具链,主要包括:

1.2 获取原始固件
从睿擎官方渠道下载最新的量产固件包,以 AMP 双系统固件为例:
Ruiching_RC-Pi-3562_Firmware_EMMC_AMP_FACRTORY_V1.1.0.img.7z
使用 7-Zip 解压后得到原始固件文件 Ruiching_RC-Pi-3562_Firmware_EMMC_AMP_FACRTORY_V1.1.0.img,即需要处理的 update.img 原始镜像。
1.3 了解 update.img 结构
Rockchip 平台的整包固件采用双层结构:
update.img├── boot.bin 第一层 Loader(芯片级初始化)└── firmware.img 第二层固件包 └── Android/ (Rockchip 历史目录命名) ├── package-file 分区配置表(定义各分区的打包顺序和名称) ├── loader.img MiniLoader 镜像 ├── dtb.img 设备树二进制文件 ├── boot.img Linux 内核 + 设备树打包镜像 ├── rootfs.img Linux 根文件系统镜像 ├── app.dtb 睿擎 RT-Thread 应用固件 └── ...其他分区
解包后,Android/ 目录下的每个 .img 文件对应闪存上的一个独立分区,可单独替换修改。
二、解包固件

解包完成后,在 Output/ 目录下生成以下文件:
Output/├── boot.bin # 芯片第一层 Loader 镜像├── firmware.img # 第二层固件包(待进一步解包)└── Android/ # 分区镜像目录 ├── package-file # 分区配置表 ├── loader.img # MiniLoader ├── dtb.img # 设备树 ├── boot.img # Linux 启动镜像 ├── rootfs.img # 根文件系统 ├── app.img # ★ 睿擎 RT-Thread 应用固件 └── ...
其中 Android/ 目录下的文件即为目标分区的可编辑镜像文件。
三、修改分区内容
根据实际需求,选择对应的分区进行修改。以下说明三种最常见的修改场景。
3.1 替换 RT-Thread 应用固件(app.img/app.dtb)
适用场景:通过 RuiChing Studio 更新了 RT-Thread 应用程序及设备树,需要烧录到开发板验证。或者制作量产固件,用于量产生产。
操作步骤:
第一步:将新编译生成的 app.img/app.dtb 文件复制到 Output/Android/ 目录,并将app.dtb文件名改为 dtb.img:
Output/Android/├──app.img ←放入新的 app.img└──dtb.img ←放入新的 app.dtb,并改名
重要说明:睿擎平台中,app.dtb 对应的固件分区名就是 dtb.img。

第二步:进入第四章,执行重新打包。
3.2 替换 Linux 内核或设备树
适用场景:修改了 Linux 内核配置或设备树dts文件,重新编译后需要验证。
Output/Android/├──boot.img ←替换为新编译的Linux启动镜像└──dtb.img ←替换为新编译的设备树文件
3.3 替换根文件系统
适用场景:新增了系统库、工具链或应用配置文件,需要整体更新根文件系统。
Output/Android/└──rootfs.img ←替换为更新后的根文件系统镜像
四、重新打包
4.1 回包脚本说明
睿擎提供了标准回包脚本 repack_update_img.bat,位于工具根目录。该脚本封装了两步打包操作,无需手动执行底层命令。
脚本内容如下:
@echooffsetlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSIONREM Repack Rockchip update image from Output\AndroidREM Usage: repack_update_img.bat [SOC] [STORAGE] [OUTPUT_IMG_NAME]REM Example: repack_update_img.bat RK3562 EMMC update_repack.imgset"ROOT_DIR=%~dp0"set"BIN_DIR=%ROOT_DIR%\bin"set"OUTPUT_DIR=%ROOT_DIR%\Output"set"ANDROID_DIR=%OUTPUT_DIR%\Android"set"AFP_TOOL=%BIN_DIR%\AFPTool.exe"set"RK_MAKER=%BIN_DIR%\RKImageMaker.exe"set"BOOT_BIN=%OUTPUT_DIR%\boot.bin"set"TEMP_FIRMWARE=%OUTPUT_DIR%\firmware_repack.img"REM 默认参数set"SOC=RK3562"set"STORAGE=EMMC"set"OUTPUT_NAME=update_repack.img"REM 命令行参数覆盖默认值ifnot"%~1"==""set"SOC=%~1"ifnot"%~2"==""set"STORAGE=%~2"ifnot"%~3"==""set"OUTPUT_NAME=%~3"set"OUTPUT_IMG=%OUTPUT_DIR%\%OUTPUT_NAME%"echo [STEP1/2] Packing firmware image..."%AFP_TOOL%"-pack"%ANDROID_DIR%""%TEMP_FIRMWARE%"iferrorlevel1( echo [ERROR] AFPToolpackfailed. Checkpackage-fileandimage files. exit/b2)echo [STEP2/2] Packing final update image..."%RK_MAKER%"-%SOC%"%BOOT_BIN%""%TEMP_FIRMWARE%""%OUTPUT_IMG%"-os_type:ANDROIDOS -storage:%STORAGE%iferrorlevel1( echo [ERROR] RKImageMakerpackfailed. Check parameters (SOC, STORAGE). exit/b3)echo [SUCCESS] Repack complete.echo [SUCCESS] Output:%OUTPUT_IMG%exit/b0
4.2 执行打包
在工具根目录执行默认打包(使用 RK3562 / EMMC 参数):
repack_update_img.bat
如需指定芯片型号、存储介质或输出文件名,可传入参数:
# RK3562 + eMMC + 自定义输出文件名repack_update_img.bat RK3562 EMMC my_update_v1.2.0.img
4.3 打包参数说明

4.4 底层两步流程(可选了解)
回包脚本内部实际执行两步操作,理解其原理有助于排查问题:
第一步:AFPTool 打包分区镜像
AFPTool.exe -pack"Output\Android""Output\firmware_repack.im
将 Android/ 目录下的所有分区镜像按 package-file 配置打包为 firmware_repack.img。
第二步:RKImageMaker 合成最终镜像
RKImageMaker.exe-RK3562"Output\boot.bin""Output\firmware_r
将 boot.bin(第一层 Loader)与 firmware_repack.img(第二层固件包)合并为最终的 update_repack.img。
4.5 常见错误与处理

五、烧录验证
5.1 进入 Loader 烧录模式
使用 USB Type-A 线连接开发板与 PC,按以下步骤进入 Loader 模式:
1.按住LOADER 按键(板子上标有 L 的那颗)
2.按住RST 复位键
3.松开RST 复位键,保持 LOADER 按键不放
4.约 1 秒后松开 LOADER 按键
5.RKDevTool 界面应检测到 LOADER 状态的设备
5.2 使用 RKDevTool 烧录
打开 RKDevTool.exe,在设备列表中选中检测到的 LOAD 设备,然后在右侧路径栏选择重新打包生成的 update_repack.img 文件,点击"执行"开始烧录。

RKDevTool 烧录界面示例
烧录完成后设备自动重启。若修改的是 app.dtb 分区,设备重启后将默认运行新打包的应用程序。

替换固件并烧录后,设备运行新版本固件
六、操作流程汇总
① 准备工具和原始固件 └─ RKDevTool_Release_v2.96+ 官方固件包(.7z 解压)② 解包原始固件 └─ unpack_update_img.bat └─ Output/boot.bin+ Output/Android/(各分区镜像)③ 修改目标分区 ├─ 替换 app.dtb→ 改名 dtb.img(最常见) ├─ 或替换 boot.img(Linux 内核) └─ 或替换 rootfs.img(根文件系统)④ 重新打包 └─ repack_update_img.bat[SOC][STORAGE][OUTPUT_NAME] └─ Output/update_repack.img⑤ 烧录验证 └─ RKDevTool → 选中 update_repack.img→ 执行烧录
七、固件制作工具包
想亲手操作却懒得整理工具?我们帮你打包好了:
RKDevTool 固件制作工具包(含 AFPTool / RKImageMaker / 烧录工具)
睿擎官方回包脚本(repack_update_img.bat,开箱即用)
官方开发指南与 SDK 说明(文档站直达)
RuiChing Studio 集成开发环境(IDE 下载入口)
扫码下方二维码,填写简单表单(1分钟),工具包及文档链接将发送至邮箱。
-
内核
+关注
关注
4文章
1474浏览量
43088 -
Linux
+关注
关注
88文章
11807浏览量
219510 -
嵌入式开发
+关注
关注
18文章
1167浏览量
50213 -
RT-Thread
+关注
关注
32文章
1636浏览量
45190
发布评论请先 登录
睿擎派文件系统指南:从开发到发布全流程实践 | 技术解析
【睿擎派】CANOpen总线之IO模块读写(DS401协议)
睿擎平台极简开发重要实践—— PinMux 配置工具 | 睿擎派试用名单公示
睿擎派RK3506J开发板开箱记录、初步调试
【MCU体验、MPU性能】睿擎派 RC3506 套件今日10点淘宝独家开售!首批200套,抢完即止!| 产品动态
直播预告 | 睿擎派 3562 NullClaw 系统开发实战:把 AI 助手塞进工业开发板
免费试用|睿擎派开发板等你来测:提交高质量报告,开发板免费送
睿擎派 3562 整包固件制作指南
评论