eMMC 固件打包
这里说明如何把已经编译好的分区镜像,重新打包成用于 eMMC 烧录的 Rockchip update.img。
这个流程适合“分区镜像已经有了,只是需要重新生成整包固件”的情况。如果是从源码完整编译固件,还是先走 SDK 正常编译流程。
警告
重新打包时,parameter.txt、package-file 和各个分区镜像必须来自同一次构建。不要混用不同版本的文件,否则可能烧录失败或启动失败。
准备工作目录
新建一个干净的工作目录:
mkdir emmc-update
cd emmc-update
从 SDK 中拷贝 Rockchip 打包工具:
cp /path/to/sdk/tools/linux/Linux_Pack_Firmware/rockdev/rkImageMaker .
cp /path/to/sdk/tools/linux/Linux_Pack_Firmware/rockdev/afptool .
cp /path/to/sdk/tools/linux/Linux_Pack_Firmware/rockdev/rk35XX-mkupdate.sh .
不同 SDK 中脚本名字可能不一样,例如 rk3576-mkupdate.sh、rk3588-mkupdate.sh 或 rk35XX-mkupdate.sh。实际使用时以 SDK 里的文件为准。
拷贝 package file:
cp /path/to/sdk/device/rockchip/.chips/rk3576/package-file .
拷贝 rockdev/ 下已经生成的固件文件:
cp /path/to/sdk/rockdev/* .
创建 Image 目录:
mkdir -p Image
拷贝完成后,目录里大致会有这些文件:
afptool
boot.img
Image/
MiniLoaderAll.bin
misc.img
oem.img
package-file
parameter.txt
recovery.img
rk35XX-mkupdate.sh
rkImageMaker
rootfs.img
uboot.img
update.img
userdata.img
如果你的 SDK 原本就是把文件放到 Image/ 目录下,保持脚本要求的原始结构即可。
修改打包脚本
打开打包脚本:
vim rk35XX-mkupdate.sh
找到 rkImageMaker 命令,在 OS 类型参数后面加上 -storage:emmc:
./rkImageMaker -RK3576 ./MiniLoaderAll.bin Image/update.img update.img -os_type:androidos -storage:emmc
命令中的芯片名要和实际 SDK 脚本保持一致。PI3 是 RK3576,优先使用 RK3576 对应脚本;如果 SDK 脚本名字不同,按实际脚本调整。
另外检查脚本里的 parameter 文件名。有些脚本里可能写的是:
Image/parameter
实际工作目录里如果是 parameter 或 parameter.txt,就要改成真实存在的文件名。
重新打包 update.img
执行脚本:
chmod +x rk35XX-mkupdate.sh
./rk35XX-mkupdate.sh
正常执行后,会在当前目录生成:
update.img
这个 update.img 就可以用 Rockchip 烧录工具烧录到板子。
烧录固件
按普通 Type-C 烧录流程操作即可:
- Windows:使用 RKDevTool / FactoryTool。
- Linux:使用
upgrade_tool。
具体烧录步骤见 Type-C 烧录。
常见检查
| 现象 | 检查方向 |
|---|---|
提示 No found parameter | 检查脚本里写的是 parameter.txt、parameter 还是 Image/parameter,要和实际文件名一致。 |
提示 No found package-file | 确认当前目录下有 package-file。 |
| 打包成功但烧录失败 | 检查 package-file 里的镜像名字是否和当前目录一致。 |
| 烧录后不开机 | 检查 parameter.txt、package-file 和分区镜像是否来自同一次构建。 |