• ZYNQ之路--程序固化教程


             我们刚开始使用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即可!

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

  • 相关阅读:
    力扣HOT100 - 994. 腐烂的橘子
    Spring Boot项目整合swagger进行接口测试
    DC/AC电源模块:提升光伏发电系统的能源利用率
    【Java】抽象类案例
    04|主观与客观评价音频质量
    如何进行远程adb真机调试?
    Unity之C#脚本学习笔记
    深入剖析 RocketMQ 源码 - 负载均衡机制
    编译原理课程设计-对pl0语言进行扩充
    Vue3基础——条件渲染、列表渲染、事件&事件修饰符、父子组件间的数据传递、生命周期钩子
  • 原文地址:https://blog.csdn.net/weixin_54358182/article/details/127031809