FIT Image 配置和启动
28 May 2024
Read time: 2 minute(s)
FIT,即 Flattened Image Tree,是参考 Flattened Device Tree 命令而来,具有以下优势。
-
更灵活的处理各种类型的 image 类型(压缩、非压缩、各种格式,各种配置组合)
-
可以处理安全启动过程中的安全校验(签名校验)
FIT
原始参考文档如下:
source/uboot-2021.10/doc/usage/fit.rst
source/uboot-2021.10/doc/uImage.FIT/howto.txt
source/uboot-2021.10/doc/uImage.FIT/source_file_format.txt
source/uboot-2021.10/doc/uImage.FIT/command_syntax_extensions.txt
Flattened Image Tree,使用 DTS 的语法, 通过一些新增的节点,描述生成镜像文件所使用的 Image 文件和配置。下文以
source/uboot-2021.10/doc/uImage.FIT/kernel_fdt.its
为例进行说明:
/dts-v1/;
/ {
description = "Simple image with single Linux kernel and FDT blob";
#address-cells = <1>;
images {
kernel {
description = "Vanilla Linux kernel";
data = /incbin/("./vmlinux.bin.gz");
type = "kernel";
arch = "ppc";
os = "linux";
compression = "gzip";
load = <00000000>;
entry = <00000000>;
hash-1 {
algo = "crc32";
};
hash-2 {
algo = "sha1";
};
};
fdt-1 {
description = "Flattened Device Tree blob";
data = /incbin/("./target.dtb");
type = "flat_dt";
arch = "ppc";
compression = "none";
hash-1 {
algo = "crc32";
};
hash-2 {
algo = "sha1";
};
};
};
configurations {
default = "conf-1";
conf-1 {
description = "Boot Linux kernel with FDT blob";
kernel = "kernel";
fdt = "fdt-1";
};
};
};
上述示例包含了其中包含了 fdt + kernel,以及校验方式的配置。
FIT image 启动命令说明如下:
-
生成 itb image 的命令:
mkimage -f kernel_fdt.its kernel_fdt.itb
-
使用默认的配置进行启动:
bootm <kernel itb addr>
-
如果 its 中有多个配置,可以指定启动的配置组合,例如 bootm 0x81000000#conf-2。
bootm <kernel itb addr>#<conf-name>
更多说明请参考:source/uboot-2021.10/doc/uImage.FIT/command_syntax_extensions.txt