zynq bootgen配置启动

2023-05-16

一,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>:<value>:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

zynq bootgen配置启动 的相关文章

  • 听说Zynq-Zynq7 Processing System配置导入导出

    概述 zynq开发中 我们如何才能将一个工程的Zynq Process System快速准确的配置到另一个工程 这里就需要我们对Zynq7 Processing System ip核的配置导入导出 注意 开发环境 vivado2018 2
  • 听说Zynq-petalinux编译linux程序

    概述 PetaLinux 是一种嵌入式 Linux 软件开发套件 SDK 主要用于赛灵思 FPGA 基片上系统设计 注意 开发环境 linux4 9 VirtualBox 6 1 ubuntu 16 04 开发板 TLZ7x EasyEVM
  • ZYNQ 在linux 通过AXI_GPIO操作电平

    在petalinux 通过AXI GPIO操作电平 以zynq为例 xff0c vivado工程 xff1a axi gpio n都是选择的一位输出 xff1a 管脚约束 xff1a set property SEVERITY Warnin
  • 基于ZYNQ平台的powerlink接口平台搭建

    1 xff0c 搭建powerlink接口所需硬件平台 xff1a Zynq ZC702 board used as openPOWERLINK MN AVNET expander board AES FMC ISMNET G Linux
  • zynq bootgen配置启动

    一 xff0c Zynq 7000 SoC 启动头文件 0x00 0x1F Arm 矢量表 由 Bootgen 使用虚拟矢量表填充 xff08 Arm 操作代码 0xEAFFFFFE xff0c 即用于捕获未初始化矢量的 branch to
  • xilinx zynq-7000 linux下rs422串口通信测试步骤

    这几天使用xilinx的zynq 7000系列调试rs422串口 xff0c 期间遇到不少问题 xff0c 好在最终调试完成 xff0c 在这里记录一下调试步骤 我用的soc型号是xc7z100 xff0c 板载了2个rs422外设 xff
  • ZYNQ有两个CPU?(一)——AMP搭建

    ZYNQ有两个CPU xff1f xff08 一 xff09 AMP搭建 罗宾老师 嵌入式教师 码峰社QQ群541931432
  • Zynq Cache问题的解决方法

    在进行PS PL之间的DMA传输时 xff0c 不可避免会遇到Cache问题 今天在这里讲一下Cache的解决方法 其中参考了forums xilinx com的处理方法 首先解释为什么DMA会引入Cache问题 xff08 专业名称为Ca
  • Memory write error at 0x100000. MMU section translation fault

    在使用vitis2020 2 JTAG调试MZ702P板子的时候会报下面的错误 原因都是启动模式没有设置到JTAG启动或SD启动 记得之前用SDK的时候好像没有这个问题 记录一下 备忘 Downloading Program F FPGA
  • PHY芯片的使用(三)在U-boot下网络PHY的移植

    1 概述 以太网 PHY 驱动移植 主要包括 Linux u boot 及设备树等三个方面标准框架下的移植 本文以裕太8511PHY为例展开说明 一般国产芯片厂商会提供在uboot linux下PHY的驱动 在uboot linux的PHY
  • ZYNQ无SD卡配置Linux系统到QSPI Flash和eMMC

    硬件 黑金AX7450开发板 zynq7100 QSPI Flash eMMC Flash 软件 Vivado 2017 4 Petalinux 2017 我用了一台Windows主机 用于设计Vivado和烧写QSPI Flash 一台U
  • ZYNQ QFLASH MX25L256 调试笔记

    该QFlash是32MB的 而ZYNQ的控制器是16MB的 所以想使用后半部分时 必须要使用4byte地址模式或者扩展模式 先调试扩展模式 在QFlash手册里面有一个写扩展模式命令 C5 写命令的时候 然后再读扩展模式寄存器 C8 就可以
  • XHS信号和XVS信号

    XHS信号和XVS信号 camera的总体示意图如下 控制部分为摄像头上电 IIC控制接口 数据输出为摄像头拍摄的图像传到主控芯片 所有要有DATA 行场同步和时钟信号 摄像头有两种同步方式 行同步信号 HSYNC 和场同步信号 VSYNC
  • IP核之FIFO实验

    FIFO 的英文全称是 First In First Out 即先进先出 FPGA 使用的 FIFO 一般指的是对数据的存储具有先进先出特性的一个缓存器 常被用于数据的缓存 或者高速异步数据的交互也即所谓的跨时钟域信号传递 它与 FPGA
  • 如何添加PYNQ-Z2板文件到Vivado

    添加板文件到vivado 先下载pynq z2板文件 PYNQZ2板文件 含约束文件 原理图 zip 下载后将文件复制到 Vivado安装目录 2018 3 data boards board files 重启vivado 完成
  • ZYNQ #2 - Linux环境下烧录BOOT.BIN从QSPI-FLASH启动

    这篇博文讲述的是在Linux环境下 将生成的新BOOT BIN利用dd指令写入板上qspi flash中 板子从flash启动后 转至SD卡执行linux内核 这篇博文是为了之后不使用SD卡 将linux内核以及根文件系统放入emmc启动做
  • ZYNQ中FreeRTOS中使用定时器

    使用普通的Timer中断方式时 Timer中断可以正常运行 但是UDP通信进程无法启动 其中TimerIntrHandler是中断服务程序 打印程序运行时间与从BRAM中读取的数据 void SetupInterruptSystem XSc
  • 【IC设计】ZC706板卡点灯入门(含Verilog代码,xdc约束,实验截图)

    文章目录 假定已知的前置知识 需求 注意点 代码实现 顶层模块 led闪烁模块 xdc约束 这篇博客将针对AMD Zynq 7000 SoC ZC706 Evaluation Kit板卡 对应Vivado创建工程时FPGA型号 XC7Z04
  • ZYNQ PL开发流程

    2 ZYNQ PL开发 开发流程 开发使用vivado 流程如下 1 新建工程 工程项目含义 这里简单介绍下各个工程类型的含义 RTL Project 是指按照正常设计流程所选择的类型 这也是常用的一种类型 RTL Project 下的 D
  • [ZYNQ随笔] uboot移植中bitstream比特流加载问题:zynq_validate_bitstream: Bitstream is not validated yet

    问题介绍 由于项目设计需要 需要频繁的更换比特流文件 之前使用petalinux生成的boot bin每次都需要合并比特流 比较麻烦 遂换了一个uboot版本 米联客默认的u boot 将bitstream放到了独立于boot bin的文件

随机推荐

  • 树莓派串口连接ESP8266

    陈拓 chentuo 64 ms xab ac cn 2020 03 12 2020 03 12 1 概述 ESP8266是物联网行业广泛使用的WiFi模块 xff0c 小巧 功能强大 xff0c 而且价格低廉 通常用电脑进行ESP8266
  • Linux 创建TCP连接流程

    文章目录 Linux创建TCP的步骤服务端客户端TCP建立流程示例代码 Linux创建TCP的步骤 TCP编程需要客户端和服务器两套编码 xff0c 其创建TCP的流程也是不完全一致的 服务端 使用socket函数创建一个套接字使用sets
  • 结构体类型完全归纳

    结构体类型 目录 基本概述 一 结构体类型变量的定义方法及其初始化 1 定义结构体类型变量的方法 2 结构体变量的初始化 二 结构体变量的引用 三 结构体数组 1 定义结构体数组 2 结构体数组应用举例 四 指向结构体变量的指针 1 类型一
  • Ubuntu20.04LTS下安装Intel Realsense D435i驱动与ROS包

    文章目录 目标一 D435i简介二 环境配置三 RealSense的SDK2 0安装四 ROS包安装五 摄像机CV的ROS包节点 六 问题排查 目标 在Ubuntu20 04LTS系统下安装D435i的驱动SDK2和ROS包 xff0c 实
  • C# 调用NationalInstruments的dll报错问题 未能加载文件或程序集

    C 调用NationalInstruments的dll报错问题 问题原因 xff1a dll版本不匹配导致的 xff0c 需要做如下操作解决问题 未能加载文件或程序集 NationalInstruments Common Version 6
  • 需要授权的 API ,必须在请求头中使用 Authorization 字段提供 token 令牌

    需要授权的 API xff0c 必须在请求头中使用 添加字段 需要授权的 API xff0c 必须在请求头中使用 Authorization 字段提供 token 令牌 实现方法 通过 axios 请求拦截器添加 token xff0c 保
  • 关于HTTP解析的一点思考

    原文 似乎已经很久没有提到关于服务器的消息了 xff0c 其实我一直都在写 xff0c 只是有时事情比较多 xff0c 会耽搁一点时间 在使用C重写前 xff0c 我就已经用Dlang实现了近2个版本的HTTP解析器 xff0c 换成C之后
  • Paparazzi UAV Lisa/M2飞控使用说明书

    第一部分 地面站 Paparazzi xff08 简称PPZ xff09 UAV项目起始于2003年 xff0c 由法国民航大学发起的一套软硬件开源无人机项目 xff0c 它提供了一整套完整的无人机软硬件解决方案 PPZ 地面站软件运行在L
  • Anaconda3-2020.02-Windows-x86_64安装及使用步骤

    Conda是一个开源的包 环境管理器 xff0c 可以用于在同一个机器上安装不同版本的软件包及其依赖 xff0c 并能够在不同的环境之间切换 Anaconda包括Conda Python以及一大堆安装好的工具包 xff0c 比如 xff1a
  • vivado 2017.4安装步骤

    目录 xff1a windows安装vivado2017 4 xff1b 虚拟机ubuntu安装vivado 2017 4 xff1b ios安装vivado 一 xff0c windows安装vivado2017 4 xilinx官网下载
  • LINUX C语言TCP客户端和服务器传输结构体数据

    1 xff0c TCP服务器流程 服务器 xff1a 1 创建socket xff0c 使用socket函数 2 准备通信地址 xff0c 使用结构体类型 3 绑定socket和通信地址 xff0c 使用bind函数 4 进行通信 xff0
  • FDC系列电容传感器及FDC2214使用要点

    陈拓 2021 02 21 2021 02 21 1 概述 电容式传感是一种低功耗 低成本且高分辨率的非接触式感测技术 xff0c 适用于从接近检测 手势识别到远程液位感测的各项应用 电容式传感系统中的传感器可以采用任意金属或导体 xff0
  • 卫星数据高动态捕获

    一 xff0c 高动态导航接收终端的现状 早期的扩频通信系统由于受到集成电路水平的限制 xff0c 多采用串行搜索技术 由于串行捕获速度慢 xff0c 耗时长不能满足高动态等环境对速度的要求 xff0c 随着数字信号处理等技术的发展 xff
  • 基于ZYNQ平台的powerlink接口平台搭建

    1 xff0c 搭建powerlink接口所需硬件平台 xff1a Zynq ZC702 board used as openPOWERLINK MN AVNET expander board AES FMC ISMNET G Linux
  • 雷达测距测速测角基本原理

    由雷达发射机产生的电磁波经收发开关后传输给天线 xff0c 由天线将此电磁波定向辐射于大气中 电磁波在大气中以近光速传播 xff0c 如目标恰好位于定向天线的波束内 xff0c 则它将要截取一部分电磁波 目标将被截取的电磁波向各方向散射 x
  • 信号处理之脉冲压缩

    一 xff0c 脉冲压缩的背景 随着飞行技术的飞速发展 xff0c 对雷达的作用距离 分辨能力 测量精度和单值性等性能指标提出越来越高的要求 测距精度和距离分辨力对信号形式的要求是一致的 xff0c 主要取决于信号的频率结构 xff0c 为
  • MTI动目标指示和MTD动目标检测

    MTI 是一种频域滤波器 radar主席的ppt 中说到 xff0c 它是对多组脉冲回波的同一个距离单元加权求和 xff0c 得到一个结果 xff1b 也就是多个输入一个输出 xff1b 相当于一个高通滤波器 xff0c 用来抑制固定目标和
  • 复旦微开发过程中遇到的问题总结(二)

    一 xff0c 将bin文件放到flash中0地址处能识别并且启动吗 xff1f xlinx的放在0地址处可以识别启动 xff0c 我尝试复旦微这个没反应 要用procise生成 xff0c 第一个必须是FSBL out 只能是procis
  • 用链表实现fifo功能缓存和拼接数据功能

    fifo h ifndef LIST QUEUE H define LIST QUEUE H include lt stdio h gt include lt stdlib h gt include 34 xil types h 34 in
  • zynq bootgen配置启动

    一 xff0c Zynq 7000 SoC 启动头文件 0x00 0x1F Arm 矢量表 由 Bootgen 使用虚拟矢量表填充 xff08 Arm 操作代码 0xEAFFFFFE xff0c 即用于捕获未初始化矢量的 branch to