学习整理:uboot its文件

3 分钟阅读

语法说明

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

评论