在嵌入式开发中,经常遇到需要定制固件的场景:更新 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 文件对应闪存上的一个独立分区,可单独替换修改。
二、解包固件
解包操作依赖于 RKDevTool 的高级功能。运行 RKDevTool,切换到“高级功能”选项卡,选择对应的固件文件,点击“解包”按钮。

解包完成后,在 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,位于工具根目录。该脚本封装了两步打包操作,无需手动执行底层命令。
脚本内容如下:
@echo off
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
REM Repack Rockchip update image from Output\Android
REM Usage: repack_update_img.bat [SOC] [STORAGE] [OUTPUT_IMG_NAME]
REM Example: repack_update_img.bat RK3562 EMMC update_repack.img
set "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 命令行参数覆盖默认值
if not "%~1"=="" set "SOC=%~1"
if not "%~2"=="" set "STORAGE=%~2"
if not "%~3"=="" set "OUTPUT_NAME=%~3"
set "OUTPUT_IMG=%OUTPUT_DIR%\%OUTPUT_NAME%"
echo [STEP 1/2] Packing firmware image...
"%AFP_TOOL%" -pack "%ANDROID_DIR%" "%TEMP_FIRMWARE%"
if errorlevel 1 (
echo [ERROR] AFPTool pack failed. Check package-file and image files.
exit /b 2
)
echo [STEP 2/2] Packing final update image...
"%RK_MAKER%" -%SOC% "%BOOT_BIN%" "%TEMP_FIRMWARE%" "%OUTPUT_IMG%" -os_type:ANDROIDOS -storage:%STORAGE%
if errorlevel 1 (
echo [ERROR] RKImageMaker pack failed. Check parameters (SOC, STORAGE).
exit /b 3
)
echo [SUCCESS] Repack complete.
echo [SUCCESS] Output: %OUTPUT_IMG%
exit /b 0
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.img"
将 Android/ 目录下的所有分区镜像按 package-file 配置打包为 firmware_repack.img。
第二步:RKImageMaker 合成最终镜像
RKImageMaker.exe -RK3562 "Output\boot.bin" "Output\firmware_repack.img" "Output\update_repack.img" -os_type:ANDROIDOS -storage:EMMC
将 boot.bin(第一层 Loader)与 firmware_repack.img(第二层固件包)合并为最终的 update_repack.img。
4.5 常见错误与处理

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

烧录完成后设备自动重启。若修改的是 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 → 执行烧录
希望这篇详细的 RK3562 固件制作指南能帮助你顺利完成开发工作。如果在实践中遇到其他问题,欢迎到 云栈社区 的技术板块与更多开发者交流探讨。