【Xilinx 程序固化】FPGA程序固化方法:SD卡、flash

什么是FPGA程序的固化?

 

通常对FPGA下载程序时,会采用JTAG口下载,完成好HDL设计,并且验证无误后,对设计文件进行综合,布局布线以及生成比特流文件,而FPGA开发板要想工作,需要将该文件烧写进FPGA芯片中。但是FPGA是基于RAM工艺(如LUT的实质就是RAM),因此会掉电丢失,再次上电后需要重新加载bit流。一般FPGA的外围会有一个非易失性存储器:Flash或SD卡等。可以将程序加载进去,这样的话,下次上电后可以直接从该存储器中加载程序,这就是固化的过程。

FSBL的功能:(first stage boot loader 第一阶段引导加载程序)

①初始化PS的配置,具体的配置方法由Xilinx硬件配置工具提供。

②如果镜像中有bitstream文件部分,则用它配置PL部分。

③从非易失性存储器(NAND/NOR FLASH)中加载SSBL(second stage boot loader,u-boot)或裸机程序到RAM(DDR)中,并将执行权限移交给它。

注意,在将权限移交给SSBL或裸机程序之前,FSBL会关闭cache和MMU,因为u-boot在执行开始时假设它们都是关闭的。

两种程序固化方法:(1、SD卡方式 2、Quad SPI Flash方式)

以AXI_GPIO工程为例(利用AXI总线中断,用PL端的开关对PS端的LED进行控制)

1、SD卡方式

①首先需要在原有的block design中更改配置,点开zynq模块配置界面,因为要用两种sd卡和flash两种方法进行固化,所以在外设i/o引脚配置界面中,需要勾选Quad SPI Flash和SD0(同时选择40-45引脚,可以在原理图中查看),点击ok。

【Xilinx 程序固化】FPGA程序固化方法:SD卡、flash_第1张图片

 

 

②在sources界面中重新generate output products,由于不需要对PS端的引脚重新绑定,所以无需重新生成顶层文件,重新导出file->export->export hardware(注意包含bitstream),最后launch SDK。

 

【Xilinx 程序固化】FPGA程序固化方法:SD卡、flash_第2张图片

 【Xilinx 程序固化】FPGA程序固化方法:SD卡、flash_第3张图片

 

 

③在SDK中先创建一个新的工程名为FSBL,在templates中选择Zynq FSBL选项,点击finish。

【Xilinx 程序固化】FPGA程序固化方法:SD卡、flash_第4张图片

 

 

④鼠标选中所建的工程本例子中为axi_gpio文件工程,点击xilinx->点击creat boot image,自动会帮助我们在相应的文件夹中生成BOOT.bin文件,在file path中有三个文件,分别是FSBL.elf、比特流文件、裸机引用程序elf,这三个文件的顺序不能乱,他们是按顺序执行的,最后点击creat image即可。

【Xilinx 程序固化】FPGA程序固化方法:SD卡、flash_第5张图片

 

 

⑤找到相对应的BOOT.bin文件拷贝到SD卡中,然后将SD卡插入板子中,将MIO4、MIO5接至高电位(SD Card启动模式),在ug585手册中如下图中可以看出当需要配置成SD卡启动,则需要将MIO4、MIO5配置成1,也就是高电位,最后开关打开上电即可自动通过SD卡下载程序。效果如图所示。

 

【Xilinx 程序固化】FPGA程序固化方法:SD卡、flash_第6张图片

 

 

 

2、Flash启动

①1-3同SD卡的操作,在flash启动时,将MIO5接高电位、MIO4接低电位(Quad-SPI启动模式),在SDK中点击Xilinx->program flash->在device中点击select选择Auto Detect->在image中浏览BOOT.bin文件->在FSBL File中浏览FSBL.elf文件->点击program即可。结果也如上图所示。

【Xilinx 程序固化】FPGA程序固化方法:SD卡、flash_第7张图片

 本工程基于vivado 2018.2

 

 

 

你可能感兴趣的:(FPGA,fpga开发,硬件工程)