ZYNQ 与 ZYNQ MPSoC的程序固化方法(PL+PS)


       后面补写了 ZYNQ多核的固化,有需要的可以看看。

固化程序介绍

ZYNQ的启动流程

       普通的FPGA一般是可以从flash启动,或者被动加载,ZYNQ的启动是由ARM主导的,包括FPGA程序的加载。ZYNQ 与 ZYNQ MPSoC 的启动流程相同,下面以ZYNQ MPSoC为例进行介绍。

       ZYNQ MPSoC启动一般为三个步骤,在UG1085中也有介绍:

       ①Pre-configuration stage:预加载阶段由PMU(平台管理单元)控制,执行PMU ROM中的代码设置系统。PMU处理所有的复位和唤醒过程

       ②Configuration stage:接下来进入最重要的一步,当BootRom(CSU(配置安全单元)ROM代码的一部分)搬运FSBL到OCM后,处理器开始执行FSBL代码,FSBL主要有以下几个作用:

              1,初始化PS端配置,MIO,PLL,DDR,QSPI,SD等

              2,如果有PL端程序,加载PL端bitstream

              3,搬运用户程序到DDR,并跳转执行

       ③Post-configuration stage:FSBL开始执行后,CSU ROM代码进入post-configuration阶段,负责起系统干预响应,CSU 为验证文件正确性、通过 PCAP 加载 PL、存储管理安全密钥、解密等提供持续的硬件支持

       另外需要注意的是,对于ZYNQ而言,是不能够单独固化PL的程序的,这是因为ZYNQ系列中的PL部分通常是通过PS来配置的(可认为PL是作为PS的外设),且许多非易失性存储器(如NorFlash、SD卡等)是连接在PS端的。PL的配置和启动通常依赖于PS端的引导过程,因此ZYNQ不能单独固化PL的程序。PL的程序需要通过PS端的引导过程来加载和配置

       那么如果只关注PL部分(相当于“只固化”PL端),该怎么办呢?其实也很简单,只需要利用Vivado导出的xsa文件再创建一个简单的Vitis程序就行了,比如可以直接在创建Vits工程的时候选择Xilinx提供的hello world应用工程,后续操作按照下面介绍的进行即可

在这里插入图片描述

Vitis 的FSBL代码所在位置

       以我的一个zynqmp的工程为例,如下图所示,zynq-7000系列类似。
在这里插入图片描述

让FSBL在启动时打印更多信息

       只需在fsbl文件夹中,找到xfsbl_config.h文件,把宏定义中的FSBL_DEBUG_INFO_VAL值改为1,但需要注意的是,这也会导致在启动的时间比较长,因为打印的信息比较多。
在这里插入图片描述

如何生成boot.bin

生成步骤

       1,选中应用工程
在这里插入图片描述

       2,右键选择Bulid Project,或者直接点击上方的锤子

在这里插入图片描述

       3,等待完成生成boot.bin
在这里插入图片描述

生成的boot.bin在工程文件夹中的位置

在这里插入图片描述

       这里注意是带"_system"的文件夹,不是那个不带"system"的文件夹
在这里插入图片描述

方式1 SD卡启动

       1,按照如何生成boot.bin中的方法先生成boot.bin

       2,将生成的boot.bin放入SD卡中即可。Alinx这里是把生成的boot.bin替换掉了它们出厂的boot.bin,但它们出厂的盘中还有boot.scr与image.ub两个文件,视频中并未介绍这两部分如何生成。用SD卡启动时也需要注意把自己的板子切换到SD卡启动模式!

方式2 QSPI Flash启动(Vitis下载)

       1,按照如何生成boot.bin中的方法先生成boot.bin

       2,先把开发板的启动模式改为JTAG模式,否则它下载时可能会出现一些问题,给板子上电

       3,在上方导航栏点击Xilinx,后选择"Program Flash"

       4,在Image File栏中,点击Browse,找到前面生成的boot.bin,boot.bin所在位置参考boot.bin在工程文件夹中的位置,当然,这里也可以直接选择Search,它会在当前的工程目录下去寻找,实测都能找到。Flash Type根据自己的板子进行选择,再把"Verify after flash"勾选上,最后点击Program下载即可,下载速度与程序复杂程度相关

       5,把开发板切换到QSPI Flash启动模式,启动即可

方式2 QSPI Flash启动(Vivado下载)

       从步骤上来看要比vitis麻烦,而且依赖vitis生成boot.bin,看不出来有什么优势,这里仅作介绍。

       1,在Vivado左侧,点击"Open Hardware Manager",打开自动连接"Auto Connect"

       2,右键芯片型号,选择"Add Configuration Memory Device"

       3,选择板载的flash型号,点击“OK"

       4,在接下来的窗口被询问是否立即去下载memory,点击“OK"

       5,在Configuration file选择boot.bin,boot.bin所在位置参考boot.bin在工程文件夹中的位置,在Zynq FSBL中选择FSBL文件。

       FSBL文件所在位置如下图所示,design_1_wrapper为硬件描述平台的名字,若Vivado导出xsa中没有改名字,默认就是这个

       最后点击OK即可下载

方式2 QSPI Flash启动(批处理文件下载)

       该方法本质上与使用Vitis相同

       1,创建一个文件夹,在文件夹中放入boot.bin与fsbl.elf,新建一个批处理文件

       2,在批处理文件中输入以下内容,只需要把自己的Vitis路径进行替换(定位到bin就行),选择自己的flash类型即可

call E:\XilinxVitis\Vitis\2020.1\bin\program_flash -f BOOT.bin    -offset 0 -flash_type qspi-x4-single  -fsbl fsbl.elf -verify
pause

       3,直接运行批处理文件即可完成下载

参考资料

       主要参考了Alinx的MPSoC开发之固化程序视频,选取了其中的重点部分进行记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辣个蓝人QEX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值