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,可从以下四个源地址进行访问 ...
随机推荐
- 框架5--nginx安装部署 上(web服务)
目录 框架5--nginx安装部署(web服务) 1.练习 2.昨日问题 3.今日内容 4.什么是web服务 5.web服务器软件 6.部署Nginx 7.平滑增加Nginx模块 8.Nginx的命令 ...
- Dubbo源码剖析五之服务本地缓存
Dubbo调用者需要通过注册中心(例如:ZK)注册信息,获取提供者.但是如果频繁从ZK获取信息肯定会存在单点故障问题,所以Dubbo提供了将提供者信息缓存在本地的方法. Dubbo在订阅注册中心的回调 ...
- Spring高级特性之一: Aware之ApplicationContextAware
关于Spring Aware之前似乎涉及过,但是未写过单独的小作文.这里为它专门写个小作文吧,关于它在自定义注解中的应用. 首先,概要介绍下Aware. Spring的依赖注入的最大亮点就是你所有的B ...
- vue如何获取thymeleaf渲染的input值?
写项目时前端用了vue+模板引擎用了thymeleaf,然后有一个输入框取值问题让我很纠结,问题如下: <input class="count-num" type=" ...
- Linux系列——挂载Windows虚拟文件夹到Linux系统
在windows操作系统上安装多台Linux虚拟机,需要方便的在windows系统和虚拟机上的Linux系统进行文件拷贝. 需要用到共享虚拟文件夹技术,将windows文件夹挂载到linux系统中 ...
- kali各工具使用介绍
各工具kali官方简介(竖排):https://tools.kali.org/tools-listing 安装kali虚拟机可参考:https://www.cnblogs.com/lsdb/p/650 ...
- DHCPv4协议测试——信而泰网络测试仪实操
一.DHCP简介 1. DHCP原理 DHCPv4概述 上网最基本元素 · IP地址 · 子网掩码 · 缺省网关 · DNS服务器 DHCP概述-手工配置 为什么需要自动分配,手工配置不行吗? · 答 ...
- 金融行业BI可视化报表,直观体验数据的价值
现在,数据已成为非常重要的资产.之前,人们只是把它当作一种附属品,由客户来办理业务,在系统中产生了这样的附属品.但如今,发现在客户办理业务这一信息中,蕴藏着一些客户的需求,积聚成千条这种信息,可以洞察 ...
- Smartbi与Tableau功能盘点,我选Smartbi!
只要对大数据BI行业有所了解的人群,想必这两个数据分析工具Tableau和PowerBI都已经耳熟能详了吧. ·关于Tableau Tableau是一种数据可视化的工具,可提供复杂的计算.数据混合和仪 ...
- 一图胜千言,想让数据产生影响力,必须拥有好上手的BI数据分析工具
当杂乱无章的数据,经过数据清洗后,得到了想用的数据,但是查看这些数据通过数据库只能看到数据本身,无法看到其中的规律,可以通过BI数据分析工具,图形化展示数据,使数据更形象化的展现在用户面前,更容易看出 ...