HarmonyHu 多思不如养志,多言不如守静,多才不如蓄德

学习整理:uboot its文件

2018-07-01

语法说明

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

Similar Posts

Content