我们刚开始使用ZYNQ时,习惯使用JTAG在线将ZYNQ的PS和PL部分的配置文件烧录进ZYNQ,这样方便我们进行调试,但是却带来了掉电配置文件丢失的问题,因此,在我们学习ZYNQ的路上,必须要学会如何把配置文件保存进非易失的存储器件当中去。
ZYNQ的配置信息包括了PS端程序以及PL端配置信息,其体现在文件上分别为:
当然,仅仅有这两个文件还不够,我们还需要一段代码帮助这两个文件配置,这也就是" FSBL.elf "文件。
对于ZYNQ Soc来说,PS端是作为主器件,率先上电,并且承当对PL端的配置任务,因此我们需要将BIT文件存储到和PS端连接的片外非易 失性存储器中:
并且由ZYNQ当中固化的的引导程序会一步步引导PL的配置和PS端程序的执行。具体来说,ZYNQ上电后先会执行片上的BootROM,BootROM 中的代码首先会在片外的非易失性存储器中寻找一个头文件,头文件里定义了一些启动信息,用于配置 BootROM 的运行。
BootROM执行完毕后,就进入First-Stage Boot Loader(FSBL)帮助配置PS和PL端具体顺序如下:
由ZYNQ引导程序的流程我们知道,我们应该在PS端所连接的外部非易失存储器中放置以下文件:
但是事实上我们并不需要将这些文件一股脑都烧录进存储器中,我们会将FSBL以及Bit文件和C程序(体现为elf文件)在SDK中一起制作成一个启动镜像,之后只需要烧录镜像到存储器当中即可。
制作FSBL----依次添加FSBL、bit、elf----生成镜像;一共三步即可
首先我们要制作FSBL文件;
打开SDK-->New application project,并且按部就班填好工程名:
之后工程模板选择ZYNQ FSBL
之后对工程进行编译(快捷键CTRL + B),这样FSBL文件就成功生成了,并且在工程文件夹下的DeBug文件夹下能找到
为了方便制作镜像,我们将FSBL文件、FPGA配置文件(Bit)、程序配置文件(elf)放到同一个文件夹下:
之后开始正式制作镜像:Xilinx---Creat Boot Image
在弹出来的界面中先配置好路径,这里有两个文件,第一个后缀.bif是镜像配置文件,第二个后缀.bin则是我们需要的镜像文件。
路劲配置好后,点击ADD,依次添加FSBL和FPGA配置文件以及程序配置文件,注意这里添加顺序十分重要。
FSBL文件添加时,类型需要选择bootloader,其余的两个文件选择默认datafile即可:
添加完毕之后,即可点击Creat Image,生成镜像文件:
我们可以在文件夹中查看到我们生成的 .bin文件,至此镜像制作完成。
SD卡启动比较简单,首先我们要确保SD卡格式化为Fat32格式,将BOOT.bin文件拷贝进SD卡(注意名字一定得是BOOT),最后将我们的Boot引脚调整为从SD启动即可。
Flash启动就类似FPGA的程序固化,我们需要先使用JTAG调试器将镜像烧录进Flash,之后再调整启动模式为QSPI Flash启动即可。
首先点击Xilinx里的Program Flash
之后定位BOOT文件和FSBL文件,再点击Program进行编程即可(注意此时开发板启动模式需要调整到JTAG启动)
之后将启动模式调整到QSPI Flash即可!
文中图片部分取自网络,仅做教学用途,联系侵删。