• 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即可!

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

  • 相关阅读:
    基于b/s架构搭建一个支持多路摄像头的实时处理系统 (3) -- Django 结合WebSocket 进行实时图像与消息的展示, 前后端交互与定时任务的重构
    Mapstruct应用
    看懂java的异常堆栈信息
    第一部分:HTML5
    博客摘录「 vue中调接口的方式:this.$api、直接调用、axios」2023年11月14日
    22款奔驰S400L升级原厂360全景影像 倒车更加的安全
    Python 爬虫学习之路 第一天
    Oracle 中文排序 Oracle 中文字段排序
    山东ITSS信息化资质
    Uniapp离线打包SDK-模块配置
  • 原文地址:https://blog.csdn.net/weixin_54358182/article/details/127031809