学习整理:uboot its文件
- ITS: image tree source,使用mkimage和dtc工具可以将.its和对应的image文件打包成itb文件。该文件可以下载到memory中,用bootm执行。
- 参考链接:
语法说明
images节点
指定所要包含的二进制文件,可以指定多种类型的多个文件,例如multi.its中的包含了3个kernel image、2个ramdisk image、2个fdt image。每个文件都是images下的一个子node,例如:
kernel@2 {
description = "2.6.23-denx";
data = /incbin/("./2.6.23-denx.bin.gz");
type = "kernel";
arch = "ppc";
os = "linux";
compression = "gzip";
load = <00000000>;
entry = <00000000>;
hash@1 {
algo = "sha1";
};
};
- description,描述,可以随便写;
- data,二进制文件的路径,格式为—-/incbin/(“path/to/data/file.bin”);
- type,二进制文件的类型,”kernel”, “ramdisk”, “flat_dt”等;
- arch,平台类型,“arm”, “i386”等;
- os,操作系统类型,linux、vxworks等;
- compression,二进制文件的压缩格式,u-boot会按照执行的格式解压;
- load,二进制文件的加载位置,u-boot会把它copy对应的地址上;
- entry,二进制文件入口地址,一般kernel Image需要提供,u-boot会跳转到该地址上执行;
- hash,使用的数据校验算法。
configurations
可以将不同类型的二进制文件,根据不同的场景,组合起来,形成一个个的配置项,u-boot在boot的时候,以配置项为单位加载、执行,这样就可以根据不同的场景,方便的选择不同的配置,实现unify kernel目标。还以multi.its为例:
# 包含了3种配置,每种配置使用了不同的kernel、ramdisk和fdt,默认配置项由“default”指定,当然也可以在运行时指定。
configurations {
default = "config@1";
config@1 {
description = "tqm5200 vanilla-2.6.23 configuration";
kernel = "kernel@1";
ramdisk = "ramdisk@1";
fdt = "fdt@1";
};
config@2 {
description = "tqm5200s denx-2.6.23 configuration";
kernel = "kernel@2";
ramdisk = "ramdisk@1";
fdt = "fdt@2";
};
config@3 {
description = "tqm5200s denx-2.4.25 configuration";
kernel = "kernel@3";
ramdisk = "ramdisk@2";
};
};
生成和使用
生成
$ mkimage -f kernel_fdt.its kernel_fdt.itb # 生成
$ mkimage -l kernel_fdt.itb #查看信息
使用
# 1)用dfu工具将.idb加载到memory中,如0x100000
# 2) 用iminfo,可以查看memory中存在的images和configuratons
# 3) 如果默认启动,则执行:
$ bootm 0x100000
# 如果选择其他配置,则执行:
$ bootm 0x100000#config@2