Zynq(2)从Hello World熟悉Zynq开发流程

news2024/11/24 3:10:10

在这里插入图片描述

文章目录

  • 1.开发工具介绍
  • 2.工程目录简介
  • 3.Zynq裸机开发流程
  • 4.Hello World实现
    • 4.1vivado开发部分
    • 4.2vitis开发部分
  • 5.传送门

1.开发工具介绍

xilinx提供了一系列的开发环境帮助用户提高开发效率,构建了完整的软件生态。对于最新的versal系列芯片,还提供了AI的仿真工具,AI推理开发工具等。这里介绍与Zynq相关的三个开发工具vivado、vitis、petalinux

  • Vivado工具与纯PL的开发的功能是一致的,主要包括设计输入:支持使用Verilog、VHDL等硬件描述语言编写PL逻辑。综合:将HDL代码综合成FPGA的网表文件。实现:包括映射、布局布线等过程,将设计映射到实际的FPGA资源上。生成比特流:将设计生成FPGA可配置的比特流文件,包括bit文件和MCS文件。调试:通过逻辑分析仪、ILA(Integrated Logic Analyzer)等工具对FPGA进行实时调试。
  • Vitis是Xilinx的开发环境Xilinx SDK的前身,主要用于处理系统部分(PS)的软件开发。它包括以下功能:应用开发:编写、编译、调试运行在Zynq ARM处理器上的C/C++应用程序。驱动程序开发:开发和调试PS与PL间的驱动程序。硬件-软件协同设计:结合Vivado生成的硬件平台文件,实现软硬件的协同设计与调试。
  • PetaLinux工具是为Zynq系列提供的一个嵌入式Linux开发环境。主要功能包括:Linux内核配置和编译:根据硬件配置定制和编译Linux内核。文件系统定制:创建和定制适合Zynq的根文件系统。应用开发和调试:开发和调试Linux用户空间应用程序。设备树配置:生成和配置与硬件设计匹配的设备树文件。

2.工程目录简介

在一个工程目录下,SOC 工程一级目录一般包含 3 个文件夹,用于管理各类文件:
soc_hardware:文件夹放 system.xsa 文件
soc_fpga:文件夹放 FPGA 工程
soc_vitis:文件夹放 SDK 相关的开发文件

  • FPGA文件目录soc_fpga中包含:
    • cache:vivado软件运行缓存
    • hw:波形文件
    • ip_user_files:用户关于IP的文件
    • runs: 编译与综合的结果,其中impl-1文件夹中存放的是编译生成的可执行文件,.bin 是可以固化的文件,.bit是烧写的bit流文件。
    • sim:仿真结果文件
    • srcs:源码,仿真文件,约束文件
    • tmp:自制IP核时的临时设计工程文件夹
    • xpr: vivado的工程文件
  • Vitis文件目录soc_vitis中包含:
    工程名文件夹(project_name): 这是项目的主文件夹,通常包含与软件开发相关的内容。它主要存放以下内容:应用程序源代码:包括C/C++源文件、头文件等。编译生成的中间文件和可执行文件。项目配置文件:用于管理项目的编译选项、链接库和其他软件配置。
  • 工程名+system文件夹(project_name_system): 这个文件夹专门用于管理与系统设计相关的内容,通常涉及硬件设计和硬件-软件协同设计。
  • system_wrapper文件夹包含系统级封装文件,是硬件设计的顶层封装。它通常用于将多个硬件模块或IP核组合在一起,形成一个整体的硬件系统。其中:
    • hw文件夹中存储的是硬件设计相关的生成文件和中间文件。这些文件包括从Vivado导出的硬件平台描述文件(如*.xsa),这些文件定义了PL部分的资源分配和配置。
    • export/文件夹用于存储导出的硬件设计文件,特别是在硬件设计完成后,这些文件可以被导出到Vitis的其他部分进行软件开发。通常包含硬件平台描述文件(如*.xsa)和一些约束文件。
    • psu_cortexa53_0/`文件夹通常与处理系统(PS)部分相关,特别是与Cortex-A53核的配置和生成有关。它可能包含启动文件、设备树文件、以及与处理器配置相关的文件,帮助定义Cortex-A53处理器在系统中的行为和配置。
    • zynqmp_fsbl/文件夹存储的是Zynq MPSoC平台的FSBL(First Stage Boot Loader,一级启动加载器)相关文件。FSBL负责初始化硬件平台,加载和引导后续的启动镜像,如ATF(Arm Trusted Firmware)、PMU固件、U-Boot等。
    • zynqmp_pmufw/文件夹包含的是与Zynq MPSoC平台的PMU(Power Management Unit,电源管理单元)固件相关的文件。PMU固件用于管理Zynq设备的电源状态、时钟和复位控制,确保系统的电源管理和状态切换功能。

3.Zynq裸机开发流程

Zynq裸机开发(Bare-Metal Development)指的是在没有操作系统的情况下直接在Zynq SoC(System on Chip)上开发应用程序。裸机开发通常涉及直接控制硬件资源,适用于对性能要求较高或需要精细控制的应用。以下是裸机开发的典型流程:
1.vivado硬件设计,选择MPSoc IP核,配置内存控制器,外设以及PL、PS交互情况,最后生成bit流文件,导出xsa文件。
2.vitis进入软件开发,创建硬件平台工程和应用工程并完成相关程序的编写、调试、编译。
3.上板验证
这里vivado的作用类似于单片机开发中的STM32Cube,即用图形化的方式配置硬件内部的连接,vivado将为PS端定制一个外设,定义了二者之间的交互,以及其他PS外设的使用。具体的开发流程结合HelloWorld工程在下节实现。

4.Hello World实现

4.1vivado开发部分

1.创建vivado工程,设置工程名为HelloWorld。
在这里插入图片描述
2.选择器件型号 XCZU4EV-SFVC784-2I,本系列所有工程基于该器件。
在这里插入图片描述

3.创建BD工程,添加zynq IP核。
在这里插入图片描述

4.通过创建好的tcl文件完成IP配置,这是购买开发板的时候厂家把所有PS端的配置做好之后生成的TCL文件,使用的时候直接导入就可以,后面会随着文章的推进逐步讲解如何做好PS端配置。
在这里插入图片描述
5.选择validate design完成IP 核配置验证。
在这里插入图片描述

6.①编译并导出平台文件,右键block文件,选择generate output products;②等待完成后右键block文件,选择create HDL Wrapper;system_wrapper.v 为创建的 Verilog 文件,该模块使用 Verilog HDL 对设计进行封装,主要完成了对 block design 的例化。
在这里插入图片描述

7.添加约束xdc文件,生成bit流;完成后 File->Export Hardware->Include bitstream。本工程中没有使用PL端的资源,所以无需添加约束,也无需生成bit流,直接导出硬件即可。具体按照下图选择即可。
在这里插入图片描述

8.tools->launch Vitis IDE,并选择工作空间为创建好的soc_vitis目录
在这里插入图片描述

4.2vitis开发部分

1.选择new->new application project,create a new platform from hardware,选择刚才创建的xsa文件,为应用工程起名字为hello_world;生成之后,其中system_wrapper为平台工程,hello_world为应用工程,hello_world_system为系统工程。在最后的界面中选择一个helloworld的模板,点击finish完成创建。
在这里插入图片描述

2.打开应用工程中的cpp文件,可以看见该模板通过串口完成了hello world 的打印功能。选中应用工程,右键选择build project,编译完成console框提示Build Finished 。
3.右键应用工程选择run as->run configurations
在这里插入图片描述

4.window->show view中添加terminal,单击小图标进行串口配置,第一次调试应该安装串口驱动后在设备管理器查找相应的COM口,其余配置如下图所示,最后看见在交互框中打印了“HelloWorld”。
在这里插入图片描述

5.传送门

  • 我的主页
  • Zynq从零开始专栏汇总导航
END

🔈文章原创,首发于CSDN论坛。
🔈欢迎点赞❤❤收藏⭐⭐打赏💴💴!
🔈欢迎评论区或私信指出错误❌,提出宝贵意见或疑问❓。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2118544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

避雷!这5本计算机工程SCIE期刊被标记为“On Hold”状态!

计算机领域的研究学者们注意了!!!这五本期刊被科睿唯安标记为On Hold了!! 1-IEEE Transactions on Intelligent Vehicles 2-Soft Computing 3-Multimedia Tools and Applicaitons 4-Journal of Intelligent & …

安卓学习笔记-unity调用原生opencv的sdk

unity调用原生opencv的sdk 问题描述解决思路解决过程准备工作opencv安卓原生sdk找到人脸检测的代码,检测成功后发送消息给unityunity接收消息 遇到的问题问题一问题二问题三 如何解决遇到的问题问题一:opencvactivity遮挡unity的界面问题问题二&#xff…

OpenAI官宣ChatGPT用户破2亿,新模型比GPT-4强100倍!

在刚刚召开的“KDDI SUMMIT 2024”大会上,OpenAI日本首席执行官長崎忠雄表示,截止至今年8月底,ChatGPT的月活用户数量突破2亿大关,成为史上最快达到这一成就的软件产品。 同时,ChatGPT企业级用户也获得大幅度增长达到…

【企业设置】自定义域名/应用模式支持自定义背景

09/04 主要更新模块概览 自定义背景 签名上传 权限配置 其他更新 01 表单管理 1.1 【移动端子表单】适配权限组字段操作权限 说明: 移动端子表单适配权限组配置,在权限组中可配置控制子表单的可新增记录,可插入记录&#xff0c…

24年9月通信基础知识补充1

看文献过程中不断发现有太多不懂的基础知识,故长期更新这类blog不断补充在这过程中学到的知识。由于这些内容与我的研究方向并不一定强相关,故记录不会很深入请见谅。 【通信基础知识补充2】9月通信基础知识补充1 一、Zadoff-Chu 序列1.1 Zadoff-Chu 序列…

【区块链 + 基层治理】腾讯未来社区:区块链业主决策系统 | FISCO BCOS应用案例

腾讯未来社区是腾讯推出的智慧社区综合解决方案,致力于形成“互联网 社区”一站式解决方案,打造智慧社 区健康生态。为了解决物业管理领域的痛点,构建围绕居民、物业、政府和商业四个角色为核心的良好生态,以 信息平台及工具为纽…

如何与客户保持高度粘性?这个系统给您答案

客户粘性是企业成功的关键因素之一,企客宝企微版在打通获客、转化、运营全链路方面发挥着重要作用,实现客户粘性的提升。 前言 客户粘性是企业成功的关键因素之一。企业需要不断通过各种手段提升客户粘性,保持客户忠诚度和长期合作关系。企客…

OpenCV结构分析与形状描述符(13)拟合椭圆函数fitEllipseDirect()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆拟合一组2D点。它返回一个内切于该椭圆的旋转矩形。使用了由[91]提出的直接…

STM32F407+CubeMx串口通信实验(学习记录)

一、环境 硬件:STM32F407ZGT6开发板 软件:STM32CubeMx、Keil5 MDK、串口调试助手 PS:前面实验部分的代码都是可以正常运行的,但是在学习过程中我也踩了很多坑(包括一些未弄明白的),我会记录在问题总结部分…

物联网之ESP32控制GPIO输出点亮LED、闪烁LED灯

MENU 前言原理GPIO引脚LED 硬件电路设计软件设计1、点亮一颗LED2、闪烁的LED 前言 不论学习什么单片机,最简单的外设莫过于IO口的高低电平控制LED,本文介绍如何使用Arduino控制ESP32的GPIO输出。通过本文的学习,掌握一定的Arduino程序架构知识…

求求你们别再跟风考PMP了!这几类人才真正需要这本证书!

救命啊!!!这几天刷某书,看到好多人在吐槽说考了PMP证书一点用都没有,每三年还得花个千把块钱去续证,劝大家都别考。 这可能是PMP身上最大的一口“黑锅”了。作为全球认可、含金量极高的项目管理资格认证&am…

AXI4主机测试

前面对AXI4协议进行了比较详细的分析,本篇文章将会写一个主机代码来实现AXI4协议的时序。 设计思路:本次设计的主要目的是验证AXI4_FULL总线的时序,并且提升对AXI4_FULL总线协议的理解,因此可以采用状态机来控制,先向…

孩子用的台灯哪个牌子好?挑选护眼台灯先了解护眼台灯十大排名

孩子们的日常生活中有高达80%的时间是在阅读、做作业或面对电脑屏幕中度过的,因此对良好照明的需求显得尤为严格和精确。一些家长可能认为,只要孩子使用的是纸质材料,不像电子产品那样对眼睛有害,使用普通的台灯照明就足够了&…

mysql快速定位cpu 占比过高的sql语句

mysql快速定位cpu 占比过高的sql语句 当MySQL数据库的CPU使用率异常升高时,定位导致问题的SQL语句可以通过以下步骤进行 1、使用top命令找出mysl进程中占用CPU靠前的线程 #找出mysql 的进程号 ps -ef | grep mysql#根据进程号,找出占用CPU靠前的线程号…

【QT】文件读写,文件对话框

一.QFile类 QFile提供了从文件中读取和写入数据的能力。 我们通常会将文件路径作为参数传给QFile的构造函数。不过也可以在创建好对象最后,使用setFileName()来修改。 QFile是QIODevice的子类,利用QFile可以对文件进行打开,读取&#xff0c…

Bootstrap 5.3版本创建常用页面

你可以根据自己的主题需求来自定义样式。Bootstrap提供了丰富的CSS类和组件,使得创建响应式、移动优先的网站变得简单。下面我将指导你如何基于Bootstrap 5.3来编写一个简单但自定义主题的页面。 引入Bootstrap 首先,确保你的HTML文件中已经正确引入了B…

Vue学习:v-model绑定文本框、单选按钮、下拉菜单、复选框等

v-model指令可以在组件上使用以实现双向绑定&#xff0c;之前学习过v-model绑定文本框和下拉菜单&#xff0c;今天把表单的几个控件单选按钮radio、复选框checkbox、多行文本框textarea都试着绑定了一下。 一、单行文本框和多行文本框 <p>1.单行文本框</p> 用户名…

程序员日志之DNF编年史

目录 传送门正文日志1、概要2、超高度总结概括3、详细编年史3.1、大背景3.2、冒险家 传送门 SpringMVC的源码解析&#xff08;精品&#xff09; Spring6的源码解析&#xff08;精品&#xff09; SpringBoot3框架&#xff08;精品&#xff09; MyBatis框架&#xff08;精品&…

YOLOv5改进 | 模块缝合 | C3 融合RFCAConv增强感受野空间特征 【二次融合 小白必备】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv5入门 改…

飞牛fnOS安装KDE桌面

飞牛fnOS安装KDE桌面 这段时间新出的nas系统飞牛os真不错&#xff0c;基于debian的可折腾性又高了不少&#xff0c;今天就来给这个系统装个桌面&#xff0c;插上显示器也能当个电脑自己进自己的管理界面&#xff0c;播放下视频&#xff0c;上上网啥的。 文章目录 飞牛fnOS安装…