ZYNQ 启动问题 :FSBL
0、ZYNQ外部启动条件
1、 电源要求:
在阶段0 BootROM时,安全模式下PS与PL都是必须上电的;非安全模式PS需要上电,如图:

在阶段1 FSBL时,PS与PL都是必须上电的,因为PL将在这个阶段进行配置,而PS将负责配置的过程。
2、 时钟要求:必须满足时钟 。
3、 复位要求:主要有两个外部复位源将影响BootROM的执行。(电源复位信号,系统复位信号)
4、 启动引脚设置:需要配置好引脚才能正确启动平台。
1、Stage 0 :BootROM
1、 上电复位以后,PS端即开始进行配置。在不使用JTAG的情况下,ARM将在片上的BootROM中开始执行代码。
2、BootROM中的代码对NAND、NOR、Quad-SPI、SD与PCAP的基本外设控制器进行初始化,使得ARM核可以访问、使用这些外设。
3、加载阶段1的启动镜像(Bin文件:包含fsbl应用程序,bit文件、应用程序)到OCM。
4、需要注意的是PL的配置并不在BootROM中完成,BootROM只为配置PL做好准备。
DDR等其他外设将在阶段1或者之后进行初始化。
PS的启动源是由外部模式引脚的高低电平来选择的,也就是指BootROM将根据外部配置引脚的设置来从不同的外部存储中加载阶段1的启动镜像。
在non-POR或者POR以后,Zynq会完成:
1锁存配置引脚,如下图所示,
2初始化PLL(根据复位时锁存的进行选择初始化或者不初始化)
3初始化APU(由两个ARM CPU构成)
4ROM CRC check
5初始化boot用的引脚(Q-spi,NOR,SD,NAND等等),根据上一步锁存的配置引脚进行选择。
6出发并等待PL完成初始化,前提是PL部分上电已经完成的话。如果此时PL上电没有完成,这这一步直接跳过
7开始搜索BootROM Header,如果搜索到了一个合法的header,就会基于这个header加载FSBL(加密或不加密)
8被加载的FSBL可能是XIP(execute in place,在存储器里直接运行)或者是被加载到了DDR中,加载完毕后BootROM完成任务,将控制权交给了FSBL。
2、Stage 1 :FSBL
1、 FSBL是在BootROM之后启动的引导程序。由BootROM加载到OCM或者直接在线性Flash上运行。FSBL主要完成以下工作:
1) 根据XPS(或vivado)中的配置,完成PS端的初始化。(MIO 、Clock 、DDR)
2) 使用比特流文件对PL进行配置 。
3) 加载第二阶段引导程序(SSBL)或者裸跑程序(无操作系统时)到DDR。
4) 跳转到DDR执行SSBL或者裸跑程序。
注意:FSBL在跳转到SSBL或者裸跑程序前,并不使能MMU。这是因为许多操作系统,例如linux假设MMU在启动时是禁用的。FSBL启动流程:
另外需要注意的是:(fsbl.elf、PL的比特流文件、SSBL或裸跑的应用程序) 等都必须组织成Bin镜像。FSBL将会遍历分区头表来寻找比特流文件、SSBL或裸跑程序所在的位置,然后进行加载DDR或配置。
3、Stage 1 :SSBL(无操作系统时,则不需要)
1、SSBL的引导程序称为BootLoader。Zynq平台中的嵌入式linux就是U-Boot,FSBL帮助我们引导U-Boot到内存中。
2、U-Boot拥有非常强大的功能,提供了许多用户指令、读写内存、flash、USB设备。U-Boot会帮助我们完成linux内核启动之前所必须的硬件初始化,例如串口、DDR控制器等。
4、Linux启动过程:
嵌入式linux从软件层面考虑可以分为以下四个部分:
引导程序(BootLoader)、
linux内核、
文件系统、
应用程序。
U-Boot将为linux内核初始化内存和必要的外设,设置好启动参数。在zynq平台中,采用设备树来传递驱动部分的参数,所以U-Boot还将为内核拷贝设备树镜像文件到内存中。由U-Boot传递给内核的启动参数中通常包含了设备树的地址,文件系统的类型、地址等信息。而后U-Boot将把系统控制权交给linux内核。
当linux内核拥有系统的控制权后,将先进行初始化,建议起内核的运行环境。Linux内核在完成了虚拟地址到物理地址映射后,还有就是驱动设备初始化与挂载。在zynq平台中,采用设备树的方式传递设备驱动的信息,如果有为PL中的IP核编写了驱动程序,也可以使用模块化的方式,待linux启动后再进行挂载。
Linux内核将根据U-Boot传递过来的参数信息选择挂载文件系统的格式与挂载点。最后linux内核将运行init函数,这是内核引导的终点,也是系统所有进程的起点。应用程序都是放在文件系统中。
原文链接:https://www.sohu.com/a/343257597_467791
-------------------------------------分割线------------------------------------------------------------------------------------------
FSBL时间测试:
软重启开始:
到Status = ps7_init()结束; ----------------约107ms
到 DDRInitCheck 结束 ------约1ms
到PcapCtrlRegVal = XDcfg_GetControlRegister(DcfgInstPtr); ----------约0ms
到HandoffAddress = LoadBootImage(); 结束----------约676ms
FsblHandoff(HandoffAddress); 进入该函数内部后运行到 FsblHandoffExit(FsblStartAddr); 直接退出fsbl主程序 -----约2ms
上面步骤结束到进入应用程序------约721ms (应该是FSBL加载应用程序到OCM的时间)
∴软重启到应用程序开始:耗时1.507s 。
fsbl.h :
#define EFUSE_STATUS_REG (0xF800D010) /**< Efuse Status Register */
#define EFUSE_STATUS_RSA_ENABLE_MASK (0x400) /**< Status of RSA enable */
eFuse Write Protection (2-bits) = Bit[8:9]
OCM ROM 128KB CRC Enable = Bit[10]
RSA Authenticaiton Enable = Bit[11]
DFT JTAG Disable = Bit[12]
DFT Mode Disable = Bit[13]
Bit value : 0 = unprogrammed; 1 = programmed
ZYNQ 启动问题 :FSBL的更多相关文章
- Zynq启动流程
前言 Zynq启动流程和ARM处理器类似,PS部分是启动和配置过程的主设备,芯片引导必须由处理器驱动,系统上电复位后会读取设备模式引脚来决定从什么设备启动芯片.如下表Boot Devices条目所示, ...
- Zynq系列FPGA如何固化bit文件到QSPI_Flash
最近由于项目需要,要将bit文件固化到zedboard的flash中,使程序上电自启,断电不丢失. 我们知道,一般板级调试的时候都是直接下载bit流到FPGA就行,固化到Flash的话,也是先生成.m ...
- 嵌入式开发之zynqMp ---Zynq UltraScale+ MPSoC 图像编码板zcu102
1.1 xilinx zynqMp 架构 1.1.1 16nm 级别工艺 Zynq UltraScale+ MPSoC架构 Xilinx新一代Zynq针对控制.图像和网络应用推出了差异化的产品系,这 ...
- ZYNQ学习之路1. Linux最小系统构建
https://blog.csdn.net/u010580016/article/details/80430138?utm_source=blogxgwz1 开发环境:window10, vivado ...
- zynq基础-->linux下软件应用
操作系统:Ubuntu 16.04 LTS 应用软件:Vivado 2016.2 + petalinux 2016.2 参考官方应用手册:ug1144-petalinux-tools-referen ...
- 第十章 MIZ702 ZYNQ制作UBOOT固化程序
10.0难度系数★☆☆☆☆☆☆ 10.1是什么是固化 我们前几章将的程序都是通过JTAG先下载bit流文件,再下载elf文件,之后点击Run As来运行的程序.JTAG的方法是通过TCL脚本来初始化P ...
- 第四章 MIZ701 ZYNQ制作UBOOT固化程序
4.0难度系数★☆☆☆☆☆☆ 4.1是什么是固化 我们前几章将的程序都是通过JTAG先下载bit流文件,再下载elf文件,之后点击Run As来运行的程序.JTAG的方法是通过TCL脚本来初始化P ...
- S02_CH05_UBOOT实验Enter a post title
S02_CH05_UBOOT实验 5.1什么是固化 我们前几章的程序都是通过JTAG先下载bit流文件,再下载elf文件,之后点击Run As来运行的程序.JTAG的方法是通过TCL脚本来初始化PS, ...
- 基于ZYNQ的双核启动与通信问题解决
1 处理器间的通信 为AMP 设计创建应用之前,您需要考虑应用如何进行通信(如有需要).最简单的方法是使用片上存储器.Zynq SoC 配备256KB 的片上SRAM,可从以下四个源地址进行访问 ...
随机推荐
- Java多线程之读写锁机制
Java多线程中有很多的锁机制,他们都有各自的应用场景,例如今天我说的这种锁机制:读写锁 读写锁,见名知意,主要可以进行两种操作,读和写操作,他们之间结合使用起来又是各不相同的.比如多个线程之间可以同 ...
- 国外很便宜的服务器 一年 2核2G 一年20美元
今年 服务器 //=====================================一下是去年的================================= 优惠码:zhujicepin ...
- 基于TI DSP TMS320C6455、Xilinx V5 FPGA XC5VSX95T的高速数据处理核心板
一.板卡概述 该DSP+FPGA高速信号采集处理板由我公司自主研发,包含一片TI DSP TMS320C6455和一片Xilinx V5 FPGA XC5VSX95T-1FF1136i.包含1个千兆网 ...
- Solution -「AGC 010C」「AT 2304」Cleaning
\(\mathcal{Description}\) Link. 给定一棵 \(n\) 个点的无根树,点有点权,每次选择两个不同的叶子,使它们间的简单路径的所有点权 \(-1\),问能否将所有点 ...
- 防世界之NaNNaNNaNNaN-Batman
题目: 只有一个附件,下载解压放到桌面. web应该是个html文件,改下后缀打开看看 发现就一个框和按钮,测试发现也没注入点,应该不是考sql.打开源码查看一下,发现是个js脚本,但是,代码是乱码, ...
- 攻防世界之Web_PHP2
题目: 扫描目录发现index.phps,进入查看发现源码. 代码审计:GET传一个id,id通过url解码后为admin,所以传?id=admin 通过url加密两次的值 使用burpsuite编码 ...
- 为什么说国产BI更适合国内企业?
就算国外BI发展迅速,产品更加完善成熟,但对国内的企业来说,使用起来难免"水土不服",何况还有服务对接过程中的繁琐程.今天就来讨论一下,国内BI和国外BI到底该怎么选择? 国外B ...
- 善用商业智能BI系统,让数据分析更智能
数据分析,是一种基于系统化分析问题的方式,是一种手段,也可以是一种工具,可以很简单也可以很复杂.它可以用在各个场景,比如现在的B2C\B2B--等等. 简单点的例子:通过分析购买产品的人大多都来自于北 ...
- 【Windows 访问控制】九、AccessCheck 的工作原理
授权和访问控制组件 下图说明了授权Windows访问控制过程. 在此图中,主题 (由用户启动) 访问对象(如共享文件夹)的过程. 将用户的访问令牌中的信息与对象的安全描述 (AES) 中的访问控制项进 ...
- Ecma335、CLR、CLI、CTS、 IL、.net 以及他们之间的关系
以上是个人对他们直接关系的理解:图片是原创 CLI 通用语言基础架构(Common Language Infrastructure), CLI是一个开放型的技术规范,它定义了一个语言无关的跨体系结构的 ...