烧录镜像格式和工具
4 Dec 2024
Read time: 2 minute(s)
镜像格式
ArtInChip 的烧录镜像文件由组件 (FirmWare Component, FWC) 以及对应的组件元信息组成。 数据分布如下图所示:
其中一些需要打包的数据文件,都被当做组件 (FWC) 进行处理,包括 SPL , os , rodata , data 等数据。
-
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 以及相关固件组件处理相关的工具如下表所列。
工具 | 用途说明 |
---|---|
mkimage |
U-Boot 编译时生成。编译生成目录 /tools/mkimage。 |
mkenvimage |
编译生成 env.bin U-Boot 编译时生成,编译生成目录 /tools/mkenvimage。 |
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 |