Edit online

烧录镜像格式和工具

4 Dec 2024
Read time: 2 minute(s)

镜像格式

ArtInChip 的烧录镜像文件由组件 (FirmWare Component, FWC) 以及对应的组件元信息组成。 数据分布如下图所示:


image_format

1. 烧录镜像格式

其中一些需要打包的数据文件,都被当做组件 (FWC) 进行处理,包括 SPLosrodatadata 等数据。

  • Image Header 的具体格式如下:
    struct artinchip_fw_hdr{
        char magic[8];              // 固定为 "AIC.FW"
        char platform[64];          // 该镜像文件适用的芯片平台
        char product[64];           // 该镜像文件适用的产品型号
        char version[64];           // 该镜像的版本
        char media_type[64];        // 该镜像文件可烧录的存储介质
        u32  media_dev_id;          // 该镜像文件可烧录的存储介质 ID
        u8   nand_array_org[64];    /* NAND Array Organization */
        u32  meta_offset;           /* Meta Area start offset */
        u32  meta_size;             /* Meta Area size */
        u32  file_offset;           /* File data Area start offset */
        u32  file_size;             /* File data Area size */
    };
  • FWC Meta 的格式如下:
    struct artinchip_fwc_meta {
        char magic[8];      // 固定为 "META"
        char name[64];      // 对应组件的名字
        char partition[64]; // 该组件要烧录的分区名字
        u32  offset;        // 该组件数据在镜像文件中的偏移
        u32  size;          // 该组件数据的大小
        u32  crc32;         // 该组件数据的 CRC32 校验值
        u32  ram;           // 当组件要下载到平台 RAM 时,要下载的地址
        char attr[64]       // 该组件的属性,字符串表示
    };

制作工具

U-Boot 以及相关固件组件处理相关的工具如下表所列。
1. 工具列表
工具 用途说明
mkimage
  • 制作 uImage 格式的 U-Boot 镜像

  • 制作 FIT 镜像

  • 对 FIT 镜像进行签名

U-Boot 编译时生成。编译生成目录 /tools/mkimage

mkenvimage

编译生成 env.bin

U-Boot 编译时生成,编译生成目录 /tools/mkenvimage

mk_image.py
  • 制作 AIC 格式的启动镜像,包括签名和加密

  • 打包固件组件,生成用于升级的固件镜像文件 scripts/tools/mk_image.py

tools/scripts/mk_image.py

get_env_info.py

解析 env.txt,获取相关分区信息。

打包固件过程中使用。

tools/scripts/get_env_info.py

get_image_cfg.py

解析 image_cfg.json,获取相关组件配置信息。

打包固件过程中使用。

tools/scripts/get_image_cfg.py

get_nand_info.py

解析 nand_list.json,获取 NAND 器件的相关参数信息,

生成 UBIFS 时使用。

tools/scripts/get_nand_info.py