普通FPGA启动
FPGA的启动方式主要包含主动模式、被动模式和JTAG模式。
主动模式(AS模式)
当FPGA器件上电时,它作为控制器从配置器件EPCS中主动发出读取数据信号,并将EPCS的数据读入到自身中,实现对FPGA的编程。这种模式下,配置信息储存在EPCS等非易失性存储器中,适用于不需要频繁升级的场景。EPCS(Erasable Programmable Configurable Serial)是一种串行存储器,专门用于存储和加载FPGA的配置数据。
被动模式(PS模式)
则是由外部计算机或其他控制器件如微控制器来控制配置过程。在此模式下,EPCS作为控制器件把FPGA当作存储器,将数据写入FPGA,以实现编程。该模式可以实现在线可编程,方便升级。
JTAG模式
是一种直接对FPGA进行编程的模式,由于其基于SRAM,断电后需要重新烧写,主要用于调试目的。JTAG接口包括TDI、TDO、TMS、TCK和可选的TRST信号线。
此外,还存在一些特定的启动方式,例如SPI闪存设备启动、micro SD卡启动和U盘启动。这些方法通过将配置文件存储在相应的介质中,然后让FPGA在上电时通过对应的接口读取配置数据来实现启动。
ZYNQ启动
ZYNQ 的启动是由 ARM 主导的,此流程包括 FPGA 程序的加载,可参考UG585文件。主要有以下两到三个阶段:
Stage 0 :在上电复位或热复位后,处理器首先执行 BootRom 里的代码,该代码用户不可更改,代码里包含了最基本的 NAND,NOR,Quad-SPI,SD 和 PCAP 的驱动。以及把 stage 1 的代码(FSBL 代码(First Stage Boot Loader))搬运到OCM 中,空间限制为 192KB。
Stage 1 : 当 BootRom 搬运 FSBL 到 OCM 后,处理开始执行 FSBL 代码。FSBL主要有以下几个作用:1.初始化PS端的配置,包括初始化DDR,MIO,这些配置来源于vivado工程中对ZYNQ核的配置。2.如果有PL程序,加载PL端的bitstream。3.加载bootloader或者bare-metal程序到DDR,然后执行该程序。
Stage 2: Second stage bootloader 是可选项,一般是在运行操作系统的情况下使用,比如u-boot。
程序固化
1.新建FSBL项目到工程中
选择zynq FSBL模版
添加FSBL工程后,项目会自动编译。
2.创建boot.bin文件。
选在需要bin文件和bif文件导出的路径
3.添加启动文件,主要有FSBL.elf的bootloader文件,hello项目elf的datafile,以及PL的bitsream文件,没有的话可以不添加。
点击创建creat image
查看文件是否生成
4.对flash进行烧录