zynq bootgen配置启动

一,Zynq-7000 SoC 启动头文件 

0x00-0x1F

Arm® 矢量表

由 Bootgen 使用虚拟矢量表填充(Arm 操作代码 0xEAFFFFFE,即用于捕获未初始化矢量的 branch-to-self 无限循环)。

0x20

宽度检测字

此项是识别单堆栈模式、双堆栈模式或双并行模式下的 QSPI 闪存所必需的。0xAA995566(小字节序格式)。

0x24

头文件签名

包含 4 个字节的“X”、“N”、“L”、“X”(按字节顺序),按小字节序格式为 0x584c4e58

0x28

密钥源

器件中加密密钥的位置:

  • 0x3A5C3C5A:BBRAM 中的加密密钥。
  • 0xA5C3C5A3:eFUSE 中的加密密钥。
  • 0x00000000:未加密。

0x2C

头文件版本

0x01010000

0x30

源偏移

此镜像文件中 FSBL(启动加载程序)的位置。

0x34

FSBL 镜像长度

解密后 FSBL 的长度。

0x38

FSBL 加载地址 (RAM)

FSBL 要复制到的目标 RAM 地址。

0x3C

FSBL 执行地址 (RAM)

FSBL 执行的入口矢量。

0x40

FSBL 总长

加密后 FSBL 的总大小,包括身份验证证书(如有)和填充。

0x44

QSPI 配置字

硬编码为 0x00000001

0x48

启动头文件校验和

从偏移 0x20 到 0x44(含)的字数总和。这些字假定按小字节序。

0x4c-0x97

用户定义的字段

76 个字节

0x98

镜像头文件表偏移

指向镜像头文件表的指针

0x9C

分区头文件表偏移

指向分区头文件表的指针

二,Zynq-7000 SoC 寄存器初始化表

Bootgen 中的“寄存器初始化表”采用 256 个地址/值对格式,用于为 MIO 多路复用器和闪存时钟初始化 PS 寄存器。

地址偏移

参数

描述

0xA0 到 0x89C

寄存器初始化对:

::

Address = 0xFFFFFFFF 表示跳过该寄存器并忽略该值。

所有未使用的寄存器字段都必须设置为 

Address=0xFFFFFFFF 和 value = 0x0

三,Zynq-7000 SoC 镜像头文件表

Bootgen 通过从 ELF 文件、比特流、数据文件等中提取数据来创建启动镜像。从中提取数据的这些文件被称为镜像。每个镜像都包含一个或多个分区。“镜像头文件 (Image Header)”表采用包含所有镜像公用的信息以及如下信息的结构:镜像数量、启动镜像中存在的分区数量以及指向其它头文件表的指针。下表提供了 Zynq®-7000 SoC 器件的地址偏移、参数和描述。

Zynq-7000 SoC 镜像头文件表

地址偏移

参数

描述

0x00

Version

0x01010000:仅包含以下可用字段:0x00x40x80xC 和填充

0x01020000:0x10 字段为添加的字段。

0x04

镜像头文件计数

表示镜像头文件的数量。

0x08

首个分区头文件偏移

指向首个分区头文件的指针。(字偏移)

0x0C

首个镜像头文件偏移

指向首个镜像头文件的指针。(字偏移)

0x10

头文件身份验证证书偏移

指向身份验证证书头文件的指针。(字偏移)

0x14

保留

默认为 0xFFFFFFFF

Zynq-7000 SoC 镜像头文件

“镜像头文件 (Image Header)”为阵列结构,其中包含每个镜像的相关信息,例如,ELF 文件、比特流、数据文件等。每个镜像都可具有多个分区,例如,每个 ELF 均可包含多个可加载节,每个节均构成启动镜像中的一个分区。该表还包含镜像相关分区数量的信息。下表提供了 Zynq-7000 SoC 器件的地址偏移、参数和描述。

Zynq-7000 SoC 镜像头文件

地址偏移

参数

描述

0x00

下一个镜像头文件。

链接到下一个镜像头文件。如果当前镜像头文件为

最后一个镜像头文件,则为 0(字偏移)。

0x04

对应的分区头文件。

链接到首个关联的分区头文件(字偏移)。

0x08

保留

始终为 0。

0x0C

分区计数长度

与此镜像关联的分区数量。

0x10

到 N

镜像名称

以大字节序打包。为对该字符串进行重构,请每次解包 4 个字节、

反转顺序然后串联。例如,字符串“FSBL10.ELF”打包为

 0x10: ‘L’,’B’,’S’,’F’, 0x14: ’E’,’.’,’0’,’1’, 0x18: ’\0’,’\0’,’F’,’L’

打包的镜像名称为 4 个字节的倍数。

字符串终止符

0x00000000

N+4

保留

默认为 0xFFFFFFFF,边界为 64 个字节。

四,Zynq-7000 SoC 分区头文件

“分区头文件 (Partition Header)”为阵列结构,其中包含每个分区的相关信息。每个分区头文件表均由启动加载程序进行解析。该表中将包含分区大小、闪存中的地址、RAM 中的加载地址、已加密/已签名等信息。针对每个分区(包含 FSBL)均存在一个此类结构。表中最后一个结构将全部标记 NULL 值(校验和除外)。下表显示了有关 Zynq-7000 SoC 分区头文件的偏移、名称和注释。

Zynq-7000 SoC 分区头文件

偏移

名称

注释

0x00

已加密的分区长度

已加密的分区数据长度。

0x04

未加密的分区长度

未加密的数据长度。

0x08

分区总字长(包括身份验证证书)

分区总字长由已加密的信息长度(含填充)、扩展长度和身份验证长度组成。

0x0C

目标加载地址。

此分区要加载到的 RAM 地址。

0x10

目标执行地址。

此分区执行时的入口点。

0x14

镜像中的数据字偏移

与启动镜像开始位置相关的分区数据的位置

0x18

属性位数

请参阅 Zynq-7000 SoC 分区属性位

0x1C

节数

单一分区内的节数。

0x20

校验和字偏移

启动镜像中对应校验和字的位置。

0x24

镜像头文件字偏移

启动镜像中对应镜像头文件的位置。

0x28

身份验证证书字偏移

启动镜像中对应身份验证证书的位置。

0x2C-0x38

保留

保留

0x3C

头文件校验和

“分区头文件”中的先前字数总和。

五,Bootgen GUI 选项

Vitis GUI 中的Create Boot Image Wizard 可提供有限数量的 Bootgen 选项以生成启动镜像。

要使用 GUI 创建启动镜像,请执行以下操作:

1,在Project NavigatorC/C++ Projects视图中选择应用工程,然后右键单击Create Boot Image。或者,单击Xilinx Create Boot Image

这样会打开Create Boot Image对话框,其中包含从所选 C 语言工程上下文中预选的默认值。注意:

(1)针对应用首次运行Create Boot Image时,在此对话框中将预填充 FSBL ELF 文件路径、所选硬件的比特流(如果在硬件工程中存在此比特流)以及所选应用 ELF 文件。

(2)如果先前为此应用运行了启动镜像,并且存在 BIF 文件,那么在此页面中将预填充来自 /bif 文件夹的值。

2,在Create Boot Image对话框中填充以下信息:

(1)从Architecture下拉菜单中选择所需的架构。

(2)选择Create a BIF fileImport an existing BIF file

(3)从Basic选项卡中,指定Output BIF file path

(4)如果适用,请指定 UDF data:请参阅 udf_data 以获取有关该选项的更多信息。

(5)指定 Output path

3,在Boot image partitions中,单击Add按钮以添加其它分区镜像。

4,为启动镜像中的分区创建偏移值、对齐值和分配值(如适用)。

默认情况下,输出文件路径设置为所选应用工程下的 /bif 文件夹。

5,从Security选项卡中,可指定用于创建安全镜像的属性。此安全选项可根据需要应用于各分区。

6,要为分区启用身份验证,请选中Use Authentication选项,然后指定 PPK、SPK、PSK 和 SSK 值。如需了解更多信息,请参阅 使用身份验证 主题。

1要为分区启用加密,请选择Encryption视图,然后选中Use Encryption选项。如需了解更多信息,请参阅 使用加密

2逐一为每个分区创建或导入 BIF 文件启动镜像,从启动加载程序开始。分区列表可显示 BIF 文件中的分区摘要信息。其中可显示文件路径、加密设置和身份验证设置。此区域可用于对分区进行添加、删除、修改和重新排序。您还可为启用加密、身份验证和校验和设置值,并指定其它分区相关的值,如,LoadAlignmentOffset

你可能感兴趣的:(eclipse,idea)