跳到主要内容

eMMC 固件打包

这里说明如何把已经编译好的分区镜像,重新打包成用于 eMMC 烧录的 Rockchip update.img

这个流程适合“分区镜像已经有了,只是需要重新生成整包固件”的情况。如果是从源码完整编译固件,还是先走 SDK 正常编译流程。

警告

重新打包时,parameter.txtpackage-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.shrk3588-mkupdate.shrk35XX-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

实际工作目录里如果是 parameterparameter.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.txtparameter 还是 Image/parameter,要和实际文件名一致。
提示 No found package-file确认当前目录下有 package-file
打包成功但烧录失败检查 package-file 里的镜像名字是否和当前目录一致。
烧录后不开机检查 parameter.txtpackage-file 和分区镜像是否来自同一次构建。