镜像的烧写

之前一直用NFS+TFTP搭建开发环境,但实际生产环境不会用这种形式,会直接把镜像下载到存储介质中(SD/emmc…)

  • 不同厂商的SoC烧录镜像所使用的工具,镜像的格式都不相同,所以这部分不是通用的,需要根据所用的平台来学习

  • 我们在烧录时,不一定要把所有镜像(uboot、kernel、dtb、rootfs)都打包在一起再下载,可以分别下载各个部分

NXP平台

NXP平台主要有2中方式,分别是针对USB烧录和SD卡烧录:

  • USB烧录
    • MFGTool工具是NXP官方推荐的一个使用USB OTG来升级镜像的软件工具,它是NXP针对i.MX系列处理器专门使用的烧录工具,可以用来升级linux, 单独烧录某一系统分区,独立地烧录spi flash、 nor flash、sd card、nand flash,emmc等, 只需简单的配置就可以使用该工具将编译好的文件系统和镜像文件烧录到开发板上
  • SD卡烧录
    • NXP提供了imxdownload这个工具来烧录裸机程序(.bin格式),并会在其头部加入一些必要信息。但是如果要烧录非裸机程序比如Linux内核,则不适用了
    • 如果要烧录完整的镜像(uboot+kernel+设备树+rootfs)则要先打包,然后用Etcher等工具将打包好的镜像下载到SD卡
image-20250629200649070

MfgTool工作流程

MfgTool的工作主要分为2个阶段:

  • 将 firmware 目录中的 uboot、kernel和设备树(不包含rootfs)通过USB OTG下载到开发板的 DDR 中,目的就是在 DDR 中启动 Linux 系统,为后面的烧写做准备
  • 经过第①步的操作,此时 Linux 系统已经运行起来了,系统运行起来以后就可以很方
    便的完成对 EMMC 的格式化、分区等操作。EMMC 分区建立好以后就可以读取要烧写的 uboot、linux kernel、.dtb(设备树)和 rootfs 这 4 个文件,然后将其烧写到 EMMC 中

参考链接:

RK平台

对于瑞芯微的板子,主要使用RKDevTool这个工具来进行镜像的烧录

镜像的分类

  • 单个统一的镜像:由分区表、bootloader、uboot、kernel、system等所有文件打包合并成的单个文件(一般叫update.img
  • 多个分区镜像:即各个功能独立的文件,如分区表、bootloader、kernel等,在开发阶段生成。独立分区镜像可以只更新指定的分区,而保持其它分区数据不被破坏,在开发过程中会很方便调试。

通过统一镜像解包/打包工具,可以把统一镜像解包为多个分区镜像,也可以将多个分区镜像合并为一个统一镜像

分区烧录镜像:

image-20250629213640048
名字 对应文件名 备注
bootloader MiniLoaderAll.bin
parameter parameter.txt 定义有哪些分区,各分区的地址
uboot uboot.img
misc misc.img 部分系统无此分区
boot boot.img
recovery recovery.img 部分系统无此分区
backup 不添加,保留
rootfs rootfs.img 单独提供的文件系统名字会有变化,但都是rootfs-xxx.img
oem oem.img 部分系统无此分区
userdata userdata.img 部分系统无此分区

注意,使用RKDevTool时,大部分镜像都是.img格式的,这是RK规定的

参考链接: