Edit online

Image 文件描述

4 Dec 2024
Read time: 3 minute(s)

“image” 对象描述要生成的镜像文件的基本信息,以及要打包的数据。包含几个部分:

  • “info”

  • “updater”

  • “target”

"image": {
    "info": {
        ...
    }
    "updater": {
        ...
    }
    "target": {
        ...
    }
}

Info 数据描述

“info” 对象用于描述该烧录镜像的基本信息,这些信息用于生成 Image Header。以 demo128_nand 为例:
"info": { // Header information about image
    "platform": "d21x",
    "product": "demo128_nand",
    "version": "1.0.0",
    "media": {
        "type": "spi-nand",
        "device_id": 0,
        "array_organization": [
            { "page": "2k", "block": "128k", "oob": "64" },
            // { "page": "4k", "block": "256k", "oob": "128" },
        ],
    }
},
info 属性 说明
“platform” 字符串,当前项目所使用的 SoC 的名字
“product” 字符串,产品名字、产品型号
“version” 字符串,按照 “x.y.z” 格式提供的版本号,其中 x,y,z 都是数字
“media” 对象,描述存储设备
media 属性 说明
“type” 字符串,取值可参考分区表描述
“device_id” 整数,要烧录的存储设备在 U-Boot 中的索引。
“array_organization” 对象,当存储设备为 “spi-nand” 时使用,描述存储单元的排列结构
array_organization 属性 说明
“page” 当前 SPI NAND 的 Page 大小,取值 “2K”, “4K”,
“block” 当前 SPI NAND 的 Block 大小, 取值 “128K”, “256K”

Updater 数据描述

Updater 是指进行 USB 刷机或者进行 SD 卡刷机时需要运行的刷机程序,该程序通常由 SPL/U-Boot 实现, 可能与正常启动时所运行的 SPL/U-Boot 相同,也可能不同,因此需要单独列出。

“updater” 对象描述在刷机过程中需要使用到的组件数据,其包含多个子对象,每个子对象即为一个组件 。 其中下列的组件是已知且必要的。

组件名称 说明
“spl” 第一级引导程序
“env” 刷机版 U-Boot 所需要使用的环境变量内容
uboot 第二级引导程序,同时也是刷机程序

上述的组件名字并非固定,可根据项目的需要修改、增加或者删除。

Updater 中的组件对象都有以下的配置字段:

Updater 组件属性 说明
“file” 指定该组件的数据来源文件
“ram” USB 刷机时,指定该文件下载的内存地址
“attr” 该数据对象的属性,可选的内容有:
  • - “required” : 该数据是必需的,如果指定文件不存在,则生成镜像文件出错。
  • - “optional” : 该数据不是必需的,如果指定文件不存在,则在生成镜像文件时忽略该数据对象。
  • - “run” : 该数据是可执行文件,USB 升级时,该数据下载完成之后会被执行。
重要: “updater” 中组件对象的顺序很重要。

在 USB 升级的过程中,组件数据传输和执行的顺序即为 “updater” 中组件数据出现的顺序, 因此如果组件数据之间有顺序依赖关系,需要按照正确的顺序排布。

Target 数据描述

“target” 描述要烧录到设备存储介质上的组件 。与 “updater” 中的组件一样,”target” 中出现的组件根据实际需要进行添加,组件的名字也可自行定义。

“target” 中的组件,都有下面的配置字段:

1. Target 组件属性
属性名 说明
“file” 指定该组件的数据来源文件
“part” 指定该组件被烧录的分区,分区名字通过字符串数组的形式提供。

如果一个组件被烧录到多个分区,则在数组中提供多个分区的名字,如 [“uboot1”, “uboot2”]。对于 UBI 的卷,使用 “<MTD Part>:<UBI Volume>” 的形式提供,如 [“ubiboot:kernel”]。这里 “ubiboot” 是该 UBI 设备所在的 MTD 分区名字,”kernel” 是该 UBI 设备中的 Volume 名字。

“attr” 该数据对象的属性,可选的内容有:
  • “required” : 该组件数据是必需的,如果指定文件不存在,则生成镜像文件出错。
  • “optional” : 该组件数据不是必需的,如果指定文件不存在,则在生成镜像文件时忽略该数据对象。
  • “burn” : 该组件数据是需要烧录到指定分区当中。
  • “mtd” : 表示该组件要烧录的设备是 MTD 设备。
  • “ubi” : 表示该组件要烧录的设备是 UBI 设备。
  • “block” : 表示该组件要烧录的设备是块设备。
重要: “target” 中组件对象的顺序

在 USB 升级的过程中,组件数据传输和烧录的顺序即为 “target” 中组件数据出现的顺序。