BOOT.BIN文件
文章目录
- 前言
- 一、什么是BOOT.BIN?
- 二、BOOT.BIN头格式介绍
- 三、通过BOOT.BIN头如何找到FSBL
- 四、通过BOOT.BIN如何找到U-Boot和bitstream
- 总结
前言
本篇关于ZYNQ启动当中的所需要的的BOOT.BIN文件的介绍
一、什么是BOOT.BIN?
BOOT.BIN头其实就是BOOT.BIN文件前面的一段头部数据,并且这个头部数据是按照一定格式组织在一起的,并且该头部数据能够并BootROM代码所解析。
二、BOOT.BIN头格式介绍
在boot.bin文件中从地址0-0x8FF可以分成17个部分,每个部分都有一定的含义
- 0x000 中断向量表
- 0x020 固定值 0xaa995566
- 0x024 固定值 0x584c4e58 ASCII: XLNX
- 0x028 如果是0xa5c3c5a3或者0x3a5c3c5a为加密的
- 0x02C bootrom头版本号,不用管
- 0x030 此参数包含从有效bootrom头开始到fslb/用户代码映像所在位置的字节数,也就是fsbl/用户代码的地址偏移量。该地址偏移量必须要大于等于0x8C0,原因就很简单了!
- 0x034 记录fsbl的长度,用于指导BbootROM代码拷贝fsbl长度
- 0x038将fsbl拷贝到OCM的什么位置 一般为0x0 加载地址 指导BootROM代码拷贝fsbl到SRAM内存中的哪个位置。
- 0x03C fsbl在OCM中的运行地址一般定义为0x0 运行地址 指导BootROM代码跳转到SRAM的哪个地址去运行fsbl(去启动)
- 0x040 同7
- 0x044 0x01为固定值
- 0x048 校验和(将0x020-0x047之间的数据按32bit长度进行相加,并取反即可!若相加之后的数据大小超过32bit,则取低32bit数据进行取反)
- 0x04C~0x097 fsbl/用户代码自定义,不需要的话可以全部填充为0
- 0x098 image header table 位置偏移量 image header table的位置
- 0x09C 记录了第一个partition header table的所在位置
- 0x0A0~0x89F 寄存器初始化的参数
- 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的运行地址中去启动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。
image header table只有一个,partition header table 和 image header 是成对出现的
BOOT.BIN文件中包含了多少个镜像,那么就有多少对partition header table 和 image header。
总结
BOOT.BIN头是按照一定格式组织在一起的,并且可以由BootRom代码所解析,在BOOT.BIN头中记录了fsbl代码的位置、大小等信息,通过BOOT.BIN可以找到U-BOOT和bitstraem,并将bitstream加载到ZYNQPL端,然后启动U-BOOT。
BOOT.BIN文件相关推荐
- 命令行方式生成BOOT.BIN文件
命令行形式生成BOOT.BIN,一方面是不打算启动SDK的情况下生成,另一方面,是给生产人员或者非软件人员使用. 需要如下必要工具和文件. (I)BOOTGEN.exe,这个从安装SDK的目录下拷贝出 ...
- 玩转Zynq连载29——[ex51] 制作裸跑程序的启动文件BOOT.bin
特权同学玩转Zynq连载29--[ex51] 制作裸跑程序的启动文件BOOT.bin 1 概述 对于Zynq的裸跑程序加载,比linux的SD卡启动文件制作要简单得多. 只需要在FAT32格式化后的S ...
- boot.asm文件注释
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; ...
- ELF与BIN文件的生成和转换
Gcc编译出来的是ELF文件.通常gcc –o test test.c,生成的test文件就是ELF格式的,在linuxshell下输入./test就可以执行. Bin文件是经过压缩的可执行文件,去掉 ...
- J-LINK直接烧录.bin文件到开发板
1.使用的程序 步骤: 点击 File->Open date file 设置下载的起始地址 点击->Connect进行连接. 点击->Production Programming/F ...
- 米联客 ZYNQ/SOC 精品教程 S02-CH29 基于TCP的QSPI Flash bin文件网络烧写
软件版本:VIVADO2017.4 操作系统:WIN10 64bit 硬件平台:适用米联客 ZYNQ系列开发板 米联客(MSXBO)论坛:www.osrc.cn答疑解惑专栏开通,欢迎大家给我提问!! ...
- 合并bin文件-----带boot发布版本比较好用的bat(便捷版)
直接上图上代码(代码在结尾),有不会用的可以留言: 第一步:工程介绍,关键点--- 1.bat文件放所在app和boot工程的同级目录下 2.release为运行bat自动生成文件夹 第二步:合版. ...
- LPC1758积累--boot程序bin文件校验
boot程序在线升级注意事项: (1)直接通过MDK生成的boot程序bin文件,需要对其修改校验位才可以生效,否则直接通过J-Link写入FLASH会造成死机. (2)修改步骤如下: a.找到通过M ...
- ZYNQ开发学习笔记(一):BOOT.bin,fsbl文件,将程序固化到板上的QSPI_Flash中
文章目录 1.环境介绍: 2.正文: vivado工程方面: vitis工程方面: 3.参考文献: 1.环境介绍: ZYNQ-7000 MZ7XA板卡 vivado 2020.1 vitis 2020 ...
- 全志H3 uboot传参到内核分析,boot.scr文件分析
传参过程 uboot倒计时结束,默认以bootcmd来启动内核,它等于 fatload mmc 0:1 ${scriptaddr} boot.scr; source ${scriptaddr} 上面两 ...
最新文章
- python sizeof函数_C++ sizeof 运算符 | 菜鸟教程
- MFC文档/视图结构体系及SDI回顾(2)
- css3玩转各种效果【资源】
- centos7挂载nas存储_Geeki说丨浅谈几种存储添加主机映射方式
- vector function trmplate
- Mysql group by 问题
- python manager详解_python 多进程共享全局变量之Manager()详解
- jQuery弹出层登录和全屏注册表单
- 我的nginx+php是如何配置的?
- js基本函数和基本方法
- Docker的常用操作
- 关于sql备份到其他服务器的问题
- Swagger学习和实践
- Linux进程调度技术的前世今生
- CSDN设置主题背景
- Linux screen capture
- 图形的装饰教案计算机,《有趣的图形》中班教案
- ARM-LINUX平台下的文本文件打印机打印
- 谷歌浏览器清除指定网站cookie和缓存方法步骤
- 纯php 给pdf加水印,如何使用PHP为现有PDF文件添加水印?