文章目录
环境:Windows
烧写环境设置
1、设置烧写工具打开时默认分区配置
路径:tools\windows\RKDevTool\RKDevTool_Release
原理:运行烧写工具会调用config.ini配置文件里面的DEFAULT_IMAGE_CONFIG(指定启动时加载的镜像配置,默认为config.cfg)
修改启动文件配置:
2、镜像汇总
运行脚本./mkfirmware.sh,连接在rockdev里
连接到Windows烧写工具配置中…\rockdev\Image*下
ln -s /home/linkh/linux/rk356x/rk356x_src/rockdev Image
3、根据生成parameter文件调整烧写工具的地址导出,替换config.cfg
4、烧写时发现没有rootfs镜像,在mkfirmware.sh最后添加
if [ -f $TOP_DIR/debian/linaro-rootfs.img ]
then
echo -n "create linaro-rootfs.img..."
ln -rsf $TOP_DIR/debian/linaro-rootfs.img $ROCKDEV/rootfs.img
echo "done."
else
echo "warning: $TOP_DIR/debian/linaro-rootfs.img not found!"
fi
注:烧写包烧写的镜像是写到emmc中,启动的时候uboot会从emmc读取启动
制作固件update.img
1、指定windows/RKDevTool/rockdev对应的打包工具,调整package-file里要打包的镜像
2、在windows环境下运行mkupdate.bat打包固件update.img
解压固件update.img
解包后的文件会保存在工具下的 output 目录中
环境:Linux
烧写工具
linux/Linux_Upgrade_Tool/Linux_Upgrade_Tool/upgrade_tool
烧写分区镜像
镜像分区存放位置:linux/Linux_Pack_Firmware/rockdev/Image
sudo upgrade_tool ul MiniLoaderAll.bin
sudo upgrade_tool di -p parameter.txt
sudo upgrade_tool di -u uboot.img
sudo upgrade_tool di -t trust.img
sudo upgrade_tool di -misc misc.img
sudo upgrade_tool di -r recovery.img
sudo upgrade_tool di -b zboot.img
sudo upgrade_tool di -rootfs rootfs.img
sudo upgrade_tool di -oem oem.img
sudo upgrade_tool di -userdata userdata.img
sudo upgrade_tool rd
制作固件update.img
制作固件位置:linux/Linux_Pack_Firmware/rockdev/
运行命令./mkupdate.sh
烧写统一固件 update.img
sudo upgrade_tool uf update.img
如果因 flash 问题导致升级时出错,可以尝试擦除 flash
sudo upgrade_tool ef update.img
解压固件update.img
cd tools/linux/RK_Tool/
make
cd tools/linux/Linux_Pack_Firmware/rockdev/
mkdir output
../../RK_Tool/img_unpack update.img output
cd output/
mkdir update
../afptool -unpack update.img update
详细截图log
知识点解析
update.img结构
编译出来的RK 固件 release_update.img(默认名字为update.img,重名为release_update.img) 包含引导加载程序 loader.img 和实际的固件数据update.img
update.img 是打包工具读取 package-file 索引文件从而将多个映像文件打包而成固件 。
解包与打包流程
解包是从 release_update.img 中提取 update.img,然后解开里面的所有映像文件。
重新打包时,则是相反的过程。它将由 package-file 描述的所有映像文件合成到 update.img 中,该文件将与 bootloader 一起打包以创建最终的 release_update.img