一. 瑞芯微 RKDevTool 固件解包结果文件详解
使用 RKDevTool_Release_v2.92 的「固件解包」功能后,通常会得到如下目录结构:
Output/
├── Android
│ ├── Image
│ │ ├── boot.img
│ │ ├── MiniLoaderAll.bin
│ │ ├── misc.img
│ │ ├── parameter.txt
│ │ ├── recovery.img
│ │ ├── rootfs.img
│ │ └── uboot.img
│ └── package-file
├── boot.bin
└── firmware.img这些文件共同构成了一套完整的 Rockchip 固件。下面逐一说明每个文件的作用。
1. firmware.img —— 完整固件包
- 作用:这是最终用于烧录的完整固件镜像。
- RKDevTool 在「升级固件」时直接选择这个文件即可完成整机烧录。
- 它是由 package-file 描述的各个分区镜像按照指定顺序和偏移打包而成的。
- 通常体积最大(几 GB 到十几 GB 不等)。
2. boot.bin —— 引导相关二进制
- 在部分固件中,boot.bin 是早期引导或特殊用途的二进制文件。
- 常见情况:与 MiniLoaderAll.bin 相关的二次打包产物或者是某些平台用于 USB 下载/掩码 ROM 阶段的辅助文件
- 普通用户日常烧录时较少直接使用,主要出现在完整固件包中。
3. Android/package-file —— 打包清单文件
- 作用:告诉打包工具「哪些镜像对应哪个分区、按什么顺序写入」。
- 内容通常是纯文本,类似:
# NAME Relative path
package-file package-file
bootloader Image/MiniLoaderAll.bin
parameter Image/parameter.txt
uboot Image/uboot.img
boot Image/boot.img
recovery Image/recovery.img
rootfs Image/rootfs.img
misc Image/misc.img
...- 修改分区布局或替换某个镜像后,必须同步修改这个文件,否则重新打包会失败或分区错位。
4. Android/Image/ 目录下的核心分区镜像
MiniLoaderAll.bin —— 一级引导加载器(Loader)
- Rockchip 芯片上电后,BootROM 首先加载的就是这个文件。
- 主要职责:初始化 DDR 内存;初始化基本外设;加载并跳转到 U-Boot
- 对应烧录时的 Loader 分区,是整个启动流程的起点。
- 不同芯片(RK3288、RK3399、RK356x、RK3588 等)的 Loader 不通用。
uboot.img —— U-Boot 二级引导程序
- 真正的 Bootloader。
- 负责:
- 初始化更多硬件(显示、存储、网络等)
- 读取 parameter.txt 或 GPT 分区表
- 加载 boot.img 或 recovery.img 中的内核
- 支持命令行交互、环境变量、快速启动等
- 对应 uboot 分区。
parameter.txt —— 分区表描述文件
- 最关键的配置文件之一。
- 定义了整个 eMMC/NAND 的分区布局,包括:每个分区的名称;起始地址(扇区);分区大小
- 示例片段:
FIRMWARE_VER: 1.0
MACHINE_MODEL: RKxxxx
MACHINE_ID: 007
MANUFACTURER: ROCKCHIP
MAGIC: 0x5041524B
ATAG: 0x60000800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
CMDLINE: console=ttyFIQ0 androidboot.baseband=N/A ...- 以及后面的分区定义(0x00002000@0x00004000(uboot) 这种格式)。
- 修改分区大小、增减分区都必须改这个文件,并重新打包。
boot.img —— 正常启动内核镜像
- 标准 Android/Linux boot 镜像格式(包含 kernel + ramdisk)。
- 正常开机时 U-Boot 加载此镜像。
- 内部包含:Linux 内核;初始内存盘(ramdisk);设备树(部分平台)
- 对应 boot 分区。
recovery.img —— 恢复模式镜像
- 与 boot.img 结构类似,但运行的是 Recovery 系统。
- 用途:系统升级(OTA);恢复出厂设置;刷机、清除数据等
- 对应 recovery 分区。
- 进入方式通常是按住特定按键 + 开机,或通过 adb reboot recovery。
misc.img —— 杂项/控制分区
- 体积很小(通常几 MB 或更小)。
- 存储 Bootloader Control Block(BCB)信息。
- 主要用于:记录当前启动模式(normal / recovery / fastboot);传递升级状态、命令等
- 对应 misc 分区。
- 很多「进不了系统、一直进 recovery」的问题都与这个分区数据异常有关。
rootfs.img —— 根文件系统镜像
- 体积最大、最核心的系统分区。
- 包含完整的 Linux/Android 根文件系统(通常是 ext4 或 squashfs 格式)。
- 里面有:/system、/vendor(Android);或完整的 Linux 用户空间程序、库、配置文件
- 对应 rootfs(或 system)分区。
- 日常修改系统文件、添加软件、更换桌面环境等,最终都落在这个镜像上。
总结:启动与烧录流程简图
上电
↓
BootROM 加载 MiniLoaderAll.bin
↓
MiniLoader 初始化 DDR,加载 uboot.img
↓
U-Boot 读取 parameter.txt / GPT
↓
根据 misc 分区决定启动模式
├─ 正常启动 → 加载 boot.img → 挂载 rootfs.img
└─ 恢复模式 → 加载 recovery.img烧录时,RKDevTool 会按照 package-file 的指示,把各个镜像写入对应的分区地址。
二. 把解包后的文件复制到 rockdev
- 把 Output\Android 目录下的 全部内容(package-file + Image 文件夹)复制到 rockdev 目录里。
- 复制后 rockdev 目录结构应类似:
rockdev/
├── afptool.exe
├── rkImageMaker.exe
├── rk356x-mkupdate.bat ← 关键!
├── package-file ← 从 Android 复制过来的
└── Image/
├── MiniLoaderAll.bin
├── parameter.txt
├── uboot.img
├── boot.img
├── recovery.img
├── rootfs.img
├── misc.img
└── ...
- 确认 package-file 内容正确
- 用记事本打开 package-file,检查里面的路径是否都指向 Image/ 下的文件。
- 文件名必须和 Image 文件夹里的实际文件名完全一致。
- 执行打包
- 因为你是 RK3568,直接双击运行:
rk356x-mkupdate.bat - 等待命令行窗口执行完成(会依次调用 afptool 和 rkImageMaker)。
- 因为你是 RK3568,直接双击运行:
- 得到最终固件
- 打包成功后,会在 rockdev 目录下生成 update.img(有的版本叫 firmware.img 或带其他名字)。
- 这个 update.img 就是可以正常用「升级固件」功能烧录的完整包。
打包过程实际做了两步
| 步骤 | 工具 | 作用 |
|---|---|---|
| 1 | afptool -pack | 根据 package-file 把 Image 里的各个分区打包成中间文件 firmware.img |
| 2 | rkImageMaker | 把 MiniLoaderAll.bin + 上一步的 firmware.img 合成最终可升级的 update.img |
常见问题与注意点
- 文件名必须匹配:你改过 rootfs.img 或其他文件后,名字千万不要变,否则 package-file 对不上会打包失败。
- 如果没有 rk356x-mkupdate.bat:可以手动执行(在 rockdev 目录打开命令提示符):
afptool.exe -pack . firmware.img rkImageMaker.exe -RK356X Image\MiniLoaderAll.bin firmware.img update.img -os_type:androidos - 打包失败:优先检查 package-file 里是否有多余空格、路径写错,或某个 .img 文件缺失。
- 生成的 update.img 体积会比较大,请确保磁盘空间充足。
Mr.Zhang
