当前位置: 首页 > news >正文

第五章 搭建ZYNQ视频图像处理系统——软件设计

5.1导出硬件平台

       ZYNQ的软件设计是在硬件平台的基础上进行的,因此需要将我们在前两章完成的硬件设计导出为Hardware Platform。首先在工程目录中新建一个名为“Vitis”的文件夹,作为后续软件开发的工作空间,如下图所示:

图 5.1.1 新建Vitis文件夹

       在Vivado工程界面点击菜单栏中的File,然后在下拉列表中选择“Export > Export Hardware”,如下图所示:

图 5.1.2 导出硬件

在弹出的向导界面中点击Next:

图 5.1.3 导出硬件平台向导界面

       由于在前面的硬件设计中,我们使用了PL端的资源,因此需要将编译生成的BIT流文件包含到硬件平台中。在下图所示的界面中选择“Include bitstream”,然后点击Next:

图 5.1.4 选择包含BIT流

接下来选择导出的路径,将硬件平台文件导出到新建的Vitis文件夹中,如下图所示:

图 5.1.5 选择导出路径

       最后确认导出信息,可以看到硬件平台会以.xsa的文件格式保存到Vitis文件夹中,同时还包含了bitstream文件。确认无误后点击右下角的Finish,如下图所示:

图 5.1.6 确认导出硬件平台信息

在成功导出硬件平台后,在工程目录下的Vitis文件夹中可以看到生成的.xsa文件,如下图所示:

图 5.1.7 导出的硬件平台文件

5.2创建软件平台

        在第二章《Vivado的下载与安装》中,我们选择安装了完整版的Vitis,它同时包含了传统的Vitis(classic Vitis IDE)和全新的Vitis unified IDE。全新的Vitis unified软件平台将AMD的各种软件开发功能集成到了统一的开发环境中,支持Vitis嵌入式软件开发和Vitis应用加速开发。

        但是,2024.2版本的Vitis unified IDE部分功能尚未完善,因此这里我们使用Vitis Classic版本进行ZYNQ VIP系统的软件设计。在桌面上双击Vitis Classic 2024.2的图标打开软件,如下图所示:

图 5.2.1 使用传统Vitis IDE进行软件开发

       注意:通过在Vivado的菜单栏中选择Tools > Launch Vitis IDE方式打开的是新版的Vitis软件,并非Classic版本

        Classic Vitis启动之后,在下图所示的界面中选择工程目录下的Vitis文件夹,作为软件开发的工作空间(Workspace):

图 5.2.2 选择工作空间的路径

       然后会弹出一个警告,提示Classic版本的Vitis以后会被新版本(Vitis Unified)所取代,这里我们选择继续使用Classic版本,如下图所示:

图 5.2.3 继续使用Classic Vitis

Vitis打开之后,在菜单栏依次点击File > New > Application Project,创建一个新的应用工程:

图 5.2.4 在Vitis中创建应用工程

在欢迎界面中直接点击Next:

图 5.2.5 欢迎界面

        然后在Platform界面中,点击标签“Create a new platform from hardware (XSA)”,即创建一个新的平台,并选择Vitis文件夹中的DL_ZYNQ_VIP_SYSTEM_wrapper.xsa文件,最后点击Next:

图 5.2.6 选择导出的硬件

接下来输入应用工程的名称“Hello_World”,然后点击Next:

图 5.2.7 输入工程名Hello World

然后在Domain界面中默认会创建一个新的domain(域),直接点击Next即可:

图 5.2.8 创建一个新的域

        最后在Templates界面左侧选择Hello World模板,并点击Finish完成应用工程的创建,如下图所示:

图 5.2.9 选择Hello World模板

创建完成的Hello World应用工程如下图所示:

图 5.2.10 Hello World应用工程

        在图 5.2.10左侧的Exploreer栏,双击src目录下的helloworld.c文件可以查看其源码。源码如下图所示:

图 5.2.11 Hello World源码

        在helloworld.c源码的第22行包含了一个名为"xil_printf.h"的头文件,其中定义了一个名为print( const char8 *ptr)的函数,可用于打印字符串。如代码第29行所示,通过在main函数中调用print()函数即可打印出字符串"Hello World "。

         在图 5.2.11左侧Explorer栏选中应用工程Hello_World后点击鼠标右键,在弹出的菜单栏中选择Build Project,对工程进行编译。

          工程编译完成后,在下方控制台Console中会打印出如下信息:

图 5.2.12 Hello World工程编译完成

5.3Hello World初体验

5.3.1链接ZYNQ开发板

        首先我们将USB数据线与征服者开发板左下角的Type C接口相连接,通过该接口可以为板卡供电,同时还可以用于JTAG下载,以及UART串口通信。开发板Type C接口的连接如下图所示:

图 5.3.1 征服者ZYNQ开发板Type C接口连接

         注意开发板上的“编程模式开关”的设置,将上下两个拨码开关均拨到左侧(即使用JTAG模式下载),如图 5.3.1中红色圆圈所指示。最后将USB数据线的另外一端连接到电脑上的USB接口。

5.3.2打开串口终端

在Vitis IDE的菜单栏中选择Window > Show View,如下图所示:

图 5.3.2 打开Show View 

在Show View窗口中找到Terminal,并点击Open打开终端界面,如下图所示:

图 5.3.3 打开终端界面

在Vitis IDE右下角的Terminal窗口中点击下图中红色箭头所指的图标,打开一个终端:

图 5.3.4 打开一个终端

在弹出的窗口中选择串口终端Serial Terminal,如下图所示:

图 5.3.5 选择串口终端

        接下来对串口终端进行设置。首先,在Port一栏选择开发板Type C接口所对应的串口端口。在磊哥的电脑上开发板对应的端口为COM14,读者需要根据自己电脑上实际的端口进行选择。然后在Baud Rate一栏将波特率设置为115200,其他选项保持默认,如下图所示:

图 5.3.6 设置串口终端

        在选择串口端口时,Port下拉列表中可能会看到多个可选端口。如果你不确定应该选哪个,可以先把电脑上用于连接开发板的USB线拔下来,观察Port端口列表中都有哪些端口;然后重新插上USB线,再次观察端口列表,多出来的端口即为连接至开发板的串口。

串口端口连接成功后可以在Terminal窗口看到终端的连接信息:

图 5.3.7 串口终端连接状态

5.3.3下载程序

        在Vitis IDE左侧的Explorer中右键点击hello_world工程,在弹出的菜单栏中选择Run as > Run Configurations,如下图所示:

图 5.3.8 打开下载界面

        在配置界面的左上角双击第一项Single Application Debug,并在右侧Target Setup标签页中确认已经勾选了“Reset entire system”,如下图所示:

图 5.3.9 配置并下载程序

         图 5.3.9中的红色方框指示出即将下载到ZYNQ开发板中的两个文件,第一个是硬件设计过程中生成的Bitstream文件,用于对PL端进行编程;第二个是软件设计过程生成的可执行文件Hello_World.elf,用于对PS进行编程。确认无误后,点击右下角的Run运行程序。

在下载过程中,首先使用Bitstream文件对PL端进行编程,如下图所示:

图 5.3.10 对PL端进行编程

Bitstream文件下载完成后,开发板上的FPGA配置指示灯会点亮,如下图所示:

图 5.3.11 FPGA配置指示灯点亮

         接下来,继续下载可执行文件Hello_World.elf。下载完成后,PS中的应用程序会将字符串“Hello World”通过PS端的串口发送到上位机。在Vitis IDE的串口终端中可以查看接收到的字符串,如下图所示:

图 5.3.12 程序运行结果

       到这里,我们已经通过Hello World实验,初步体验了ZYNQ的软件设计与下载流程。在下一章,我们将对ZYNQ VIP系统的图像采集与显示功能进行验证。


文章转载自:

http://EOqFZDVs.wkwds.cn
http://MXawrTYk.wkwds.cn
http://PfnYtv4V.wkwds.cn
http://VACqRxmv.wkwds.cn
http://j7jUWTAa.wkwds.cn
http://2ZJMho0b.wkwds.cn
http://jo0G9b6B.wkwds.cn
http://ju23qRN5.wkwds.cn
http://DuDOIZ3b.wkwds.cn
http://ArDXRH3R.wkwds.cn
http://S4Ir6osK.wkwds.cn
http://IieET5C6.wkwds.cn
http://3jnggR6W.wkwds.cn
http://ahtb8LSX.wkwds.cn
http://9Zofn850.wkwds.cn
http://jlw2SACr.wkwds.cn
http://Ir0Qqrhc.wkwds.cn
http://6WkPt2f8.wkwds.cn
http://nnSsV8x2.wkwds.cn
http://T9YDLOtP.wkwds.cn
http://d9MbjPT7.wkwds.cn
http://UzEUMVoY.wkwds.cn
http://MQ6M9LzD.wkwds.cn
http://FsZnGxyH.wkwds.cn
http://SQMVJjLI.wkwds.cn
http://YaXXnvyY.wkwds.cn
http://j9LwHS6f.wkwds.cn
http://c6HSee1g.wkwds.cn
http://p0L09jcG.wkwds.cn
http://jrtsMCUF.wkwds.cn
http://www.dtcms.com/a/385030.html

相关文章:

  • Chapter6—原型模式
  • Java字符串操作:从入门到精通
  • 如何科学评估CMS系统性能优化效果?
  • 批量更新和批量插入,内含jdbc工具类
  • 3D地球可视化教程 - 第2篇:夜晚纹理与着色器入门
  • Ajax笔记2
  • DDoS高防IP是什么? DDoS攻击会暴露IP吗?
  • Java 设计模式——原则:从理论约束到项目落地指南
  • 从零开始打造个性化浏览器导航扩展:极简高级风格设计
  • 软件包安装
  • QARM:Quantitative Alignment Multi-Modal Recommendation at Kuaishou
  • 通达信抓波段指标(主图)
  • Django基础环境入门
  • Java学习笔记2——简单语法
  • LLM-LLM大语言模型快速认识
  • Winogender:衡量NLP模型性别偏见的基准数据集
  • Oracle UNDO表空间使用率过高解决方案
  • Qt 中 OPC UA 通讯实战
  • 生产制造数智化
  • ensp配置学习笔记 比赛版 vlan 静态路由 ospf bgp dhcp
  • java-代码随想录第33天|62.不同路径、63.不同路径II
  • 突破限制:FileCodeBox远程文件分享新体验
  • 对讲机模块 TDD 噪音:原理、快速止噪解决方案
  • 知识点11:总线驱动的多Agent调度
  • 使用 Docker 搭建私有 PyPI 镜像仓库:支持多平台二进制包同步
  • HarmonyOS实现快递APP自动识别地址(国际版)
  • IPsec实验笔记
  • 工业IOT平台助力水泥集团实现数字化转型
  • 【CSS】图片自适应等比例缩放
  • Java 21 虚拟线程高并发落地全指南:中间件适配、场景匹配与细节优化的技术实践