ZYNQ启动流程分析之BOOT.BIN头

BOOT.BIN头简介

  BOOT.BIN头其实就是BOOT.BIN文件前面的一段头部数据,并且这个头部数据是按照一定的格式组织在一起的,并且该头部数据能够被BootROM代码解析。
在这里插入图片描述
在这里插入图片描述
  在boot.bin文件中从地址0-0x8FF可以分为17个部分,每个部分都有一定的含义。注意:BOOT.BIN的数据存储为小端模式。
    (1)0x000:中断向量表。
    (2)0x020:固定值0xaa995566。
    (3)0x024:固定值0x584c4e58,ASCII:XLINX。
    (4)0x028:如果是0xa5c3c5a3或者0x3a5c3c5a则为加密的。
    (5)0x02C:bootrom头版本号,不用管。
    (6)0x030:此参数包含从有效bootrom头开始到fsbl/用户代码映像所在位置的字节数,也就是fsbl/用户代码的地址偏移量。该地址偏移量必须大于等于0x8C0,因为头部信息就是0x8C0结束的。
    (7)0x034:记录fsbl的长度,用于指导BootROM代码拷贝fsbl长度。
    (8)0x038:将fsbl拷贝到OCM的什么位置,一般为0x0,加载地址。
    (9)0x03C:fsbl在OCM中的运行地址,一般定义为0x0,运行地址。
    (10)0x040:同7。
    (11)0x044:0x01,为固定值。
    (12)0x048:头部校验和(将0x020-0x047之间的数据按照32bit长度进行相加,并安位取反即可!若相加之后的数据大小超过32bit,则取低32bit进行取反)。
    (13)0x04C~0x097: fsbl/用户代码自定义,不需要的话可以全部填充为0。
    (14)0x098:image header table 位置偏移量。
    (15)0x09C :partition header table的所在位置,记录的是第一个partition header table的位置。
    (16)0x0A0~0x89F: 寄存器初始化的参数。
    (17)0x8C0:fsbl、用户代码必须要等于或高于此地址。

如何通过BOOT.BIN头部找到FSBL

  BOOT.BIN头部信息当中记录了fsbl代码的位置、大小以及fsbl代码在SRAM内存中的加载地址。
  0x30地址记录了fsbl代码在BOOT.BIN文件中的位置偏移量。
  0x34记录了fsbl代码的长度。
  0x38记录了fsbl代码在SRAM中的加载地址。
  BootROM代码解析到这些信息之后,就会从fsbl代码中的位置偏移量去读取0x34中记录的大小,然后把它拷贝到fsbl代码的加载地址中。
    最后跳转到0x3C地址中记录的fsbl的运行地址中。

通过BOOT.BIN如何找到U-Boot和bitstream

  BOOT.BIN文件当中包含了fsbl+u-boot镜像以及bitstream文件。
  BootROM代码需要通过解析BOOT.BIN头部信息去找到fsbl。
  BootROM代码启动fsbl之后他的使命就完成了。
  fsbl代码运行之后,要负责从BOOT.BIN文件中找到U-Boot镜像和bitstream文件。然后把bitstream文件加载到ZYNQ PL端,然后要启动U-Boot。
  首先这里要涉及到三个数据表:image header table、partition header table以及image header。
partition header table和image header是成对出现的。
BOOT.BIN文件中包含了多少对镜像,那么就有多少对partition header table以及image header。
  下面的内容可以参考UG821
在这里插入图片描述
  (1)0x0:image header table的版本号。
  (2)0x4:image header的数量。
  (3)0x8:第一个Partition Header table的位置偏移量。注意这里是以word为单位进行计算的,所以实际的偏移量需要乘以4。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/661603.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析yolov5,为什么算法都是基于yolov5做改进的?(一)

YOLOv5简介 YOLOv5是一种单阶段目标检测算法,它在YOLOv4的基础上引入了多项改进,显著提升了检测的速度和精度。YOLOv5的设计哲学是简洁高效,它有四个版本:YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,分别对应不同的模型大小…

Dockerfile实战(SSH、Systemctl、Nginx、Tomcat)

目录 一、构建SSH镜像 1.1 dockerfile文件内容 1.2 生成镜像 1.3 启动容器并修改root密码 二、构建Systemctl镜像 2.1 编辑dockerfile文件 ​编辑2.2 生成镜像 2.3 启动容器,并挂载宿主机目录挂载到容器中,然后进行初始化 2.4 进入容器验证 三、…

基本STL使用

一 、关于vector 在STL中有一个称为vector的数据结构&#xff0c;可以用来代替数组。 定义Book特性 private:vector<string> shelf_books;Notic : 类中不能使用类似的定义&#xff1a;vector<sttring> shelf_boos( 10 ); 定义Book方法 public:void setName(str…

PDF 正确指定页码后,挂载的书签页码对不上

这个问题与我的另一篇中方法一样 如何让一个大几千页的打开巨慢的 PDF 秒开-CSDN博客 https://blog.csdn.net/u013669912/article/details/138166922 另作一篇的原因 一篇文章附带一个与该文章主题不相关的问题时&#xff0c;不利于被遇到该问题的人快速搜索发现以解决其遇到…

OpenCV如何实现背投(58)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV直方图比较(57) 下一篇&#xff1a;OpenCV如何模板匹配(59) 目标 在本教程中&#xff0c;您将学习&#xff1a; 什么是背投以及它为什么有用如何使用 OpenCV 函数 cv::calcBackP…

Windows之隐藏特殊文件夹(自定义快捷桌面程序)

作者主页&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年5月1日12点55分 祝大家劳动节快乐~ Windows中的特殊文件夹是指一些预定义的文件夹&#xff0c;用于存储特定类型的数据或文件。这些文件夹通常由操作系统或应用程序使用&#xff0c;但用户也可以访问和管理它…

数字旅游引领未来智慧之旅:科技应用深度重塑旅游生态,智慧服务全面升级打造极致高品质旅游体验

随着信息技术的飞速发展&#xff0c;数字旅游作为旅游业与科技融合的新兴业态&#xff0c;正以其独特的魅力和优势&#xff0c;引领着旅游业迈向智慧之旅的新时代。数字旅游不仅通过科技应用重塑了旅游生态&#xff0c;更通过智慧服务为游客带来了高品质的旅游体验。本文将深入…

bun 换源 国内阿里源 npmmirror 加速下载

Github https://github.com/oven-sh/bun 版本号 bun 1.1.5 windows 安装 bun 如果本机有 nodejs 环境, 可以 npm install -g bun 安装 ( 官方把 exe 已经传到了 npm 仓库, 走的国内 npm 镜像, 下载速度会很快) 没有 nodejs, 可以用 powershell 脚本安装 具体操作 全局 …

自定义之道:学习 Java 中如何打磨独特的异常

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…

HR招聘测评,什么是好用的在线人才测评工具?

选择哪一种人才测评工具&#xff1f;特别是每年的招聘高峰季节。根据以往的工作经验&#xff0c;一个好用的在线人才工具&#xff0c;可以起到事半功倍的效果&#xff0c;带给人力资源工作者一个轻松的工作体验。因此&#xff0c;我们必须对好用的人才测评工具有一个基本的认识…

2023 年 Django 开发者调查结果(jetbrains)

原文-中文 原文-英文 推荐观看原文。 本报告基于 2023 年 9 月至 10 月进行的第三次年度 Django 开发者调查&#xff0c;是 Django 软件基金会和 PyCharm 之间的合作成果。为了帮助我们更好地了解框架的当前状态及其周围的生态系统&#xff0c;来自世界各地的大约 4,000 名 Dja…

【论文笔记】Training language models to follow instructions with human feedback A部分

Training language models to follow instructions with human feedback A 部分 回顾一下第一代 GPT-1 &#xff1a; 设计思路是 “海量无标记文本进行无监督预训练少量有标签文本有监督微调” 范式&#xff1b;模型架构是基于 Transformer 的叠加解码器&#xff08;掩码自注意…