我们刚开始使用ZYNQ时,习惯使用JTAG在线将ZYNQ的PS和PL部分的配置文件烧录进ZYNQ,这样方便我们进行调试,但是却带来了掉电配置文件丢失的问题,因此,在我们学习ZYNQ的路上,必须要学会如何把配置文件保存进非易失的存储器件当中去。

配置文件有哪些?

        ZYNQ的配置信息包括了PS端程序以及PL端配置信息,其体现在文件上分别为:

  • PL端的Bit文件
  • PS端的ELF文件

        当然,仅仅有这两个文件还不够,我们还需要一段代码帮助这两个文件配置,这也就是" FSBL.elf "文件。

 ZYNQ的启动顺序

        对于ZYNQ Soc来说,PS端是作为主器件,率先上电,并且承当对PL端的配置任务,因此我们需要将BIT文件存储到和PS端连接的片外非易 失性存储器中:

  • Quad SPI Flash
  • NAND Flash
  • NOR Flash
  • SD 卡

         并且由ZYNQ当中固化的的引导程序会一步步引导PL的配置和PS端程序的执行。具体来说,ZYNQ上电后先会执行片上的BootROM,BootROM 中的代码首先会在片外的非易失性存储器中寻找一个头文件,头文件里定义了一些启动信息,用于配置 BootROM 的运行。

        BootROM执行完毕后,就进入First-Stage Boot Loader(FSBL)帮助配置PS和PL端具体顺序如下: 

  1.  初始化 PS;
  2.  配置 PL;
  3. 加载裸机应用程序到 DDR 中,或者加载 Second-Stage Boot Loader(SSBL);
  4. 开始执行裸机应用程序,或者 SSBL(用于操作系统引导)

程序固化需要整合的文件

        由ZYNQ引导程序的流程我们知道,我们应该在PS端所连接的外部非易失存储器中放置以下文件:

  1. BootROM的头文件,用来控制BootROM设置ZYNQ,比如就地执行、加密、FSBL 偏移量、镜像文件大小等;
  2. First-Stage Boot Loader;
  3. PL 配置文件,即 BIT 文件;
  4. 运行在 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卡启动比较简单,首先我们要确保SD卡格式化为Fat32格式,将BOOT.bin文件拷贝进SD卡(注意名字一定得是BOOT),最后将我们的Boot引脚调整为从SD启动即可。

        QSPI Flash

        Flash启动就类似FPGA的程序固化,我们需要先使用JTAG调试器将镜像烧录进Flash,之后再调整启动模式为QSPI Flash启动即可。

        首先点击Xilinx里的Program Flash

         之后定位BOOT文件和FSBL文件,再点击Program进行编程即可(注意此时开发板启动模式需要调整到JTAG启动)

         之后将启动模式调整到QSPI Flash即可!

文中图片部分取自网络,仅做教学用途,联系侵删。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐