睿擎派 3562 整包固件制作指南

描述

在嵌入式开发中,经常遇到需要定制固件的场景:更新 RT-Thread 应用程序、替换 Linux 内核或设备树、修改根文件系统配置等。这些需求都离不开对 Rockchip update.img 整包固件的解包与重打包操作。


 

本文以睿擎派 RC3562 为例,详细介绍整包固件从解包、修改分区内容、重新打包到烧录验证的完整操作流程。


 

一、准备工作

1.1 所需工具

睿擎派整包固件制作依赖 Rockchip 官方工具链,主要包括:

RT-Thread

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 文件对应闪存上的一个独立分区,可单独替换修改。


 

二、解包固件

RT-Thread

解包完成后,在 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。

RT-Thread

第二步: 进入第四章,执行重新打包。


 

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 offsetlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION REM 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.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 打包参数说明

RT-Thread


 

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 常见错误与处理

RT-Thread


 

五、烧录验证

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 文件,点击"执行"开始烧录。

RT-Thread


 

RKDevTool 烧录界面示例

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

RT-Thread

替换固件并烧录后,设备运行新版本固件


 

六、操作流程汇总

 

① 准备工具和原始固件   └─ 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分钟),工具包及文档链接将发送至邮箱。

RT-Thread
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分