实战指南:在Vivado与Vitis环境下,实现Zynq-7000系列PL程序到QSPI Flash与SD卡的双重固化策略

1. 为什么需要双重固化?从一次“掉电丢失”的尴尬说起

几年前,我接手了一个基于Zynq-7000的工业控制器项目。项目调试一切顺利,功能完美,客户现场演示也大获成功。就在我们准备收工,拔掉下载器、关掉电脑电源的瞬间,客户随口问了句:“这板子重启后,刚才调好的参数还在吧?” 我信心满满地点头,然后按下了复位键。结果,屏幕一片漆黑,所有逻辑功能“消失”了。那一刻的尴尬,我至今记忆犹新。原来,我只把程序下载到了FPGA的易失性内存里,一掉电,所有努力付诸东流。

这就是程序固化的意义所在。对于Zynq-7000这类包含处理器系统(PS)和可编程逻辑(PL)的芯片,我们开发的PL逻辑(比如你的图像处理算法、电机控制IP核)需要存储到非易失性存储器中,让板子上电就能自动加载运行。而“双重固化”策略,简单说,就是给你的程序上“双保险”:既能在板载的QSPI Flash里安家,也能拷贝到通用的SD卡里启动。这在实际项目中太有用了:QSPI Flash焊死在板上,适合量产产品,稳定可靠;SD卡则可以随时更换不同版本的程序,极其适合前期开发调试、现场升级或者小批量试产。

很多刚接触Zynq的朋友会疑惑,我的设计只用到了PL(纯FPGA逻辑),为什么固化还得拉上ARM核(PS)?这确实是Xilinx设计的一个特点。Zynq的启动流程是由PS主导的,PS负责从外部存储器读取配置数据来配置PL。所以,即使你的应用完全不用ARM跑软件,为了固化PL程序,你也必须在Vivado里把ZYNQ7 Processing System这个IP核请出来,并正确配置它去管理Flash或SD卡。别担心,这个过程就像给PL程序配一个“专属启动秘书”,秘书(PS)虽然不干你的主要业务,但离了它,你的业务(PL逻辑)就没法自动开张。

在Vivado和Vitis 2019.2这个经典版本下,工具链其实已经为我们做了很多自动化的工作,但关键的配置步骤和原理如果没搞清,依然会踩坑。接下来,我就带你一步步实现从零开始,构建一个同时支持QSPI Flash和SD卡启动的双重固化方案,把踩过的坑和验证过的经验都分享给你。

2. 第一步:在Vivado中打造“硬核”基础工程

万事开头难,但开头对了,后面就顺了。我们的起点是一个功能正常的纯PL工程。假设你已经用Vivado 2019.2完成了一个LED闪烁或自定义IP的设计,并且通过了功能仿真和上板调试。记住这个工程,我们称之为“纯PL工程”。接下来,我们要做的就是在这个工程里,引入Zynq的PS系统,并把它和我们的PL逻辑“捆绑”在一起。

2.1 引入Zynq PS核并完成关键配置

首先,在Vivado中打开你的纯PL工程。在左侧Flow Navigator点击 Create Block Design,给bd文件起个名字,比如 system。在画布中,点击“+”号添加IP,搜索并添加 ZYNQ7 Processing System

双击添加进来的Zynq IP核,打开重配置窗口。这里是我们配置的核心战场,配置错了,后续固化必然失败。

首先,勾选你需要的存储控制器。 在左侧导航栏找到 Peripheral I/O Pins

  • 如果你计划使用QSPI Flash固化,就在这里勾选 Quad SPI Flash。勾选后,下方会显示具体的引脚复用(MIO),通常保持默认即可,除非你的硬件原理图有特殊连接。
  • 如果你计划使用SD卡启动,同样在这里勾选 SD 0SD 1(根据你的板卡原理图选择)。这样,PS才会把对应的MIO引脚配置为SD卡模式。

一个关键细节:我强烈建议,即使你目前只确定用一种方式,也把这两个都勾选上。这为你后续增加启动方式留出了硬件定义空间,而且不会增加额外的逻辑资源消耗。配置界面大概长这样(以同时勾选为例):

Quad SPI Flash: [√]
SD 0: [√]

其次,根据硬件调整Bank电压和DDR配置。 切换到 MIO Configuration -> Bank1 I/O Voltage。这里必须和你的板卡硬件匹配!比如,很多开发板(像Digilent、正点原子的一些型号)的Bank1电压是1.8V,你就需要在下拉菜单中选择 LVCMOS 1.8V。选错了电压,可能导致PS无法启动或Flash/SD通信失败。

接着,找到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值