【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?

基于vitis的程序固化~如何把程序烧录到QSPI?

  • 前言
    • 废话
    • 背景
  • 开发环境
  • 实现流程
    • 解压项目到工程目录
    • subst(可选)
    • Vivado部分
      • 升级项目
      • 升级IP核
      • (重要)使能QSPI
      • 生成比特流
      • 导出硬件
    • vitis部分
      • 新建Platform Project
      • 新建应用工程
      • (重要)导入引用路径
      • 导入代码
      • 编译工程
      • 生成boot镜像
      • 下载镜像
  • 项目下载
  • 后语

前言

废话

本来已经找好工作了,没想到自己成功考研上岸,马上把工作辞了去读研。研究生的生活非常繁忙,本科可以自由地探索各种感兴趣的东西,但到了研究生,做什么都得先制定计划,一旦失败了就直接几天浪费了。进入研究生开始要发论文,写专利,我很多想发的文章都写成了论文与专利,所以最近一年都没有发布什么新文章,等我论文公开后,一定会有精彩的文章呈现给各位!

背景

最近使用Vivado2019开发ZYNQ程序,需要把代码固化到ZYNQ开发板上,然而正点原子以及网上的很多教程都是针对2018的,2019的vivado已经在使用vitis了,找了一圈没找到能用的教程,经过三天的测试,我终于研究出怎么使用vitis固化代码到QSPI了,发在此处,为各位节省时间,也算是在以后我忘记时提醒我自己。
PS:本教程很多参考了正点原子的文档,感谢正点原子与开源电子网提供的技术文档
PS2:其实vitis的固化比2018的SDK更简单,不用再新建FSBL工程了!!!

开发环境

软件:vivado v2019.2(64-bit)
硬件:正点原子启明星开发板底板+7020核心板
演示使用的项目:正点原子启明星《OV5640摄像头HDMI显示》

实现流程

解压项目到工程目录

【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第1张图片

subst(可选)

建议用subst命令把项目目录挂载为根目录,可以解决vivado的长文件路径问题,防止一些奇奇怪怪的编译错误。
按下win+R,在“运行”中输入cmd打开命令行,使用subst命令把项目路径挂载为硬盘,如下图所示
【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第2张图片
笔者把工程目录挂载为了P盘。

Vivado部分

升级项目

  1. 双击xpr文件打开项目,vivado提示要升级,选择“Automatically。。。”,点击ok,vivado自动升级项目。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第3张图片

升级IP核

  1. 打开项目,提示IP核要升级,点击“Report IP status”,然后选择下方的“Upgrade Selected”,弹出确定窗口,点“OK”升级IP核。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第4张图片

【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第5张图片
3. 升级完成后,打开Block Designed,双击“ZYNQ Processing System”IP核,打开配置界面。
【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第6张图片

(重要)使能QSPI

  1. 在IP核配置中,需要使能Quad SPI Flash,查阅正点原子提供的开发板IO引脚分配表,可以看到QSPI使用了MIO1~MIO6,在配置中使能它:
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第7张图片
    PS:在正点实验中有一个《程序固化实验》,其中并没有使能Quad SPI Flash这一步,但实测也可以成功固化,这个问题卡了我几天,最后发现是因为我的项目使用了MIO,而MIO不能自定义引脚,一旦启用MIO,vivado会把所有空闲的引脚都作为MIO,导致QSPI被MIO“覆盖”了,所以为了成功烧写,需要使能QSPI,为固化“预留”QSPI接口。

生成比特流

  1. 保存Block Designed,点击“Generate Bistream”生成比特流,点击“OK”运行。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第8张图片
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第9张图片
  2. 等待,vivado编译很慢。。。这个时候可以看看我以前的文章^ - ^
  3. 生成比特流完成,弹出如下提示框,点击“Cancel”关闭掉。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第10张图片

导出硬件

  1. 导出硬件。点击左上角"File"->“Export”->“Export Hardware”,弹出对话框:
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第11张图片
    在vivado2019中,不再是导出SDK,而是变成了xsa文件,因为我们有PL设计,所以要把“Include bitstream”选上,导出的目录建议在工程目录下新建一个vitis文件夹,并保存到其中,点击“OK”,成功导出硬件。

vitis部分

新建Platform Project

  1. 点击上方菜单栏的“Tools”->"Launch vitis"打开vitis,选择刚才导出硬件的目录(笔者是P:\vitis)作为Workspace,点击”Launch“,运行vitis。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第12张图片
  2. 新建一个Platform Project。点击"Create Platform Project",如下图所示,填写项目名(项目名建议加上plat前缀,方便后期辨认),点击next。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第13张图片
  3. 选择以XSA文件建立,然后”Next“
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第14张图片
  4. 选择刚才导出的xsa文件,然后”Finish“
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第15张图片
  5. 新建完成后如下图所示:
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第16张图片

新建应用工程

  1. 选择"File"->“New” ->"Application Project…"新建一个应用工程。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第17张图片

  2. 填入项目名(建议加上”app“前缀),然后next
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第18张图片

  3. 选择平台,选择刚才新建的平台”plat_ov5640_hdmi“,然后next。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第19张图片

  4. 接下来默认即可,直接Next
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第20张图片

  5. 选择”Empty Application“,然后”Finish“
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第21张图片
    新建完成后如下图所示:
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第22张图片

(重要)导入引用路径

  1. 右键点击”app_ov5640_hdmi[ standalone_domain ]“->"Properties"打开项目配置。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第23张图片
  2. 点击”C/C++ General“->“Paths and Symbols”->“Include”->"Add"添加路径。
    PS:有时候项目编译提示找不到头文件也可以通过本方法解决。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第24张图片
  3. 点击”Workspace“,选择项目下的"/plat_ov5640_hdmi/ps7_cortexa9_0/standalone_domain/bsp/ps7_cortexa9_0/include",然后OK,OK。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第25张图片
    添加好后如下图所示,点击”Apply and Close“,然后”Yes“关闭对话框。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第26张图片

导入代码

  1. 打开工程目录下(我的是P:\ov5640_hdmi.sdk\ov5640_hdmi\src)的文件夹,复制其中的文件夹与main.c到刚才新建的应用项目”app_ov5640_hdmi“的src文件夹下。选中要复制的文件(夹),ctrl+c,再选中项目的src文件夹,ctrl+v,即可导入代码文件
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第27张图片
    导入后如下图所示:
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第28张图片

编译工程

  1. 双击main.c文件打开主函数,然后点击上方的锤子图标,编译工程。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第29张图片
  2. 漫长等待。。。
  3. 编译完成后如下图:
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第30张图片

生成boot镜像

  1. 右键选择"app_ov5640_hdmi[ standalone on ps7_cortexa9_0 ]"->“Create Boot Image”,打开对话框,vitis会自动生成bif文件(vitis的先进之处)。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第31张图片
  2. 等待一会后,自动打开”Create Boot Image“对话框,此时vitis自动选择好了,不用修改任何配置,直接点击”Create Image“即可!!!
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第32张图片
  3. 等到命令行弹出这个后,生成完成。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第33张图片

下载镜像

  1. 把开发板下方的”BOOT_CFG“拨码开关都打上去,选择以”JTAG“形式运行,然后断电,再上电,重启开发板。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第34张图片
  2. 连上烧录器,插上OV5640摄像头与HDMI显示器。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第35张图片
  3. 右键选择"app_ov5640_hdmi[ standalone on ps7_cortexa9_0 ]",点击”Program Flash“,打开对话框
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第36张图片
  4. 不要修改任何设置,直接点击”Program“,程序开始下载。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第37张图片
  5. 烧录完成,命令行如下图显示。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第38张图片
  6. 把开发板下方的”BOOT_CFG"拨码开关的2打到off,选择以QSPI方式启动,然后给开发板断电,重新上电。
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第39张图片
  7. 成功,享受固化程序,烧录程序到QSPI的喜悦
    【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?_第40张图片
    PS:开发烧录完成后,可用subst ?: /d结束挂载
    结束挂载

项目下载

以防一些问题,在此附录上我成功烧写的项目,欢迎参考。
链接:https://pan.baidu.com/s/1C_mNXXFBwHp032ZZvkfMMA?pwd=xrt4
提取码:xrt4

后语

本文以一个例子介绍了vivado2019用户如何通过vitis固化自己的程序到QSPI中,研究这个步骤加上写文章花费了我大概三天的时间了。如果有任何问题,欢迎在评论区评论或者私信我哦。
如果解决了你的问题,不妨点个赞再走?

你可能感兴趣的:(逻辑电路设计,教程,fpga开发,verilog,逻辑电路)