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

ZYNQ-7020嵌入式系统学习笔记(1)——使用ARM核配置UART发送Helloworld

本工程实现调用ZYNQ-7000的内部ARM处理器,通过UART给电脑发送字符串。
硬件:正点原子领航者-7020
开发平台:Vivado 2018、 SDK

1 Vivado部分操作

1.1 新建工程

设置工程名,选择芯片型号。

1.2 添加和配置PS IP

点击IP INTEGRATOR,Create Block Design。

在这里插入图片描述

1.2.1添加IP

添加ZYNQ7 Processing System。

在这里插入图片描述

1.2.2 配置PS

  1. 修改DDR Configuration:
  • 7020选择MT41J256M16 RE-125(256M162=8190Mbit=8Gbit)两片DDR3,位宽16,深度256M
  • 7010选择MT41J128M16 HA-125 (128M162=4096Mbit=4Gbit)两片DDR3,位宽16,深度128M
    在这里插入图片描述
  1. 选择外设引脚Peripheral I/O Pins:

由于入门教程需要使用串口输出“Hello World”,因此只要选择UART。

在这里插入图片描述

由于开发板硬件设计如上图所示:串口输出的引脚已经对应好了,为PS_MIO14_500和PS_MIO15_500。
查看设置界面,只能选择UART0行的第二个UART0。

在这里插入图片描述

  1. 设置 PS-PL Configuration:

UART0串口波特率任意设置,一般为9600、115200。
在这里插入图片描述

  1. 设置MIO Configuration:
    设置串口引脚的电平和速度。

在这里插入图片描述

查看原理图或电源拓扑,可以看到BANK500的电源电压为3.3V,BANK501的电源电压为1.8V。
因此设置BANK0为LVCMOS 3.3V,BANK1为LVCMOS 1.8V。
在这里插入图片描述

  1. 配置完成,点击OK。

1.2.3 关闭不需要的接口

由于是初始工程,大部分接口是不需要的,包括:M_AXI_GP0_ACLK、M_AXI_GP0、FCLK_CLK0、FCLK_RESET0_N。

  1. 关闭AXI接口:接口双击进入PS配置界面,选择PS-PL Configuration -> AXI Non Secure Enablement -> GP Master AXI Interface,取消勾选M AXI GP0 interface

在这里插入图片描述

  1. 关闭CLK接口:进入Clock Configuration -> PL Fabric Clocks,取消勾选FCLK_CLK0

在这里插入图片描述

  1. 关闭RESET接口:进入PS-PL Configuration -> General -> Enable Clock Resets,取消勾选FCLK_RESET0_N

在这里插入图片描述

多余接口都关闭,可以得到如下模块:

在这里插入图片描述

1.2.4 生成连接和验证

  1. 自动化连接:
    点击Run Block Automation,进入界面,选中模块,点击OK。

在这里插入图片描述

模块会自动生成引脚,连接外部DDR3和串口引脚。

在这里插入图片描述

  1. 验证:
    点击Validate Design,自动验证模块是否有错误或警告。

在这里插入图片描述

1.3 生成子模块和顶层文件

  1. 生成子模块:
    右键IP,Generate Output Products,对模块进行综合和约束。
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 创建顶层文件:
    右键IP,Create HDL Wrapper。

在这里插入图片描述

选择第二个Let Vivado manage wrapper and auto-update。如果修改IP内部细节,Vivado会自动修改外部接口等。

在这里插入图片描述

  1. 由于本工程内没有用到PL部分,只有PS部分,因此不需要Generate Bitstream,直接可以导出硬件。

1.4 导出硬件

  1. 导出硬件:
    点击菜单栏File -> Export -> Export Hardware

在这里插入图片描述

此处不需要选择Include bitstream,其他工程如果用到了PL部分,那就需要选择。

在这里插入图片描述

  1. 以上操作会在工程目录下新建一个.sdk文件夹,内部有一个system_wrapper.hdf文件,该文件可以用解压软件打开,内部包括*.c、*.h等文件。

在这里插入图片描述

  1. 打开SDK:
    菜单栏File -> Launch SDK

在这里插入图片描述
点击OK。
在这里插入图片描述

2 Software Development Kit部分操作

软件基于Eclipse开发,以下就是进行C语言的编写。
在这里插入图片描述

2.1 新建工程

  1. 点击File -> New -> Application Project
    在这里插入图片描述

  2. 设置工程信息:
    添加工程名,然后点击Next

在这里插入图片描述

  1. 选择Empty Application,点击Finish

在这里插入图片描述

  1. 可以看到SDK界面的Project Explorer中生成了两个文件夹hello_world和hello_world_bsp。
  • hello_world:存放自己编写的软件。
  • hello_world_bsp:存放板级支持包,相当于硬件驱动,作为硬件和软件之间的桥梁。
  • system_wrapper_hw_platform_0:存放系统硬件信息。

在这里插入图片描述

2.2 编写软件

  1. 创建工程文件:
    右键hello_world->srcNew -> Source File,新建文件名必须为main.c。
    在这里插入图片描述

  2. 编写并保存main.c

/** main.c**  Created on: 2024年11月17日*      Author: win10*/
#include "stdio.h"int main(){printf("hello world\n");return 0;
}

保存后会自动编译,如果编译错误,会在界面底部Problems中报错。

  1. 通过编译之后,即可将软件烧录到FPGA中。

2.3 FPGA板配置

由于FPGA板设计时PL和PS的UART共用了同一个串口芯片,因此,需要修改跳线帽到PS端。

连接JTAG调试线,电源线和USB_UART的TYPE-C线。

2.4 连接串口

  1. 找到SDK Terminal:Window->Show View -> Other

在这里插入图片描述
输入关键词,选择对应窗口,点击OK。
在这里插入图片描述

  1. 由于上一步已经连接串口,此时可以通过SDK Terminal连接。

(1)打开电脑设备管理器,查看COM口。

在这里插入图片描述

(2)点击加号连接串口。

在这里插入图片描述
选择对应串口号,设置波特率,其他默认。

在这里插入图片描述
如果显示以下信息,则说明连接成功。

Connected to COM8 at 115200

2.4 下载程序

由于刚才保存的时候,系统已经自动编译了.elf文件,可以从左侧hello_world,Binaries目录看到。

在这里插入图片描述

右键.elf文件,选择Run As -> 1 Launch on Hardware (System Debugger)

在这里插入图片描述
SDK log输出:
在这里插入图片描述

串口输出结果:

Connected to COM8 at 115200
口Connected to COM8 at 115200
9莌ello worldConnected to COM9 at 115200
hello world

本结果进行多次尝试,前面数据错误,可能与USB线的质量和信号干扰有关。

相关文章:

ZYNQ-7020嵌入式系统学习笔记(1)——使用ARM核配置UART发送Helloworld

本工程实现调用ZYNQ-7000的内部ARM处理器,通过UART给电脑发送字符串。 硬件:正点原子领航者-7020 开发平台:Vivado 2018、 SDK 1 Vivado部分操作 1.1 新建工程 设置工程名,选择芯片型号。 1.2 添加和配置PS IP 点击IP INTEGR…...

实践篇:青果IP助理跨境电商的高效采集

写在前面: 近年来,跨境电商行业迅速崛起,成为全球贸易的重要组成部分。据市场调研机构Statista数据显示,2024年全球跨境电商市场规模预计将突破5万亿美元,覆盖数十亿消费者。跨境电商的竞争日益激烈,商家不…...

本地安装YAPI

项目中用到很多的RESTAPI,光靠人工管理或者普通文档肯定是不行的,翻了很多的RESTAPI管理工具,还是选择了YAPI,原因有2,一个是接口位于内网,外网网站上管理测试不到内网接口,另外一个是使用方式&…...

pytest日志总结

pytest日志分为两类: 一、终端(控制台)打印的日志 1、指定-s,脚本中print打印出的信息会显示在终端; 2、pytest打印的summary信息,这部分是pytest 的默认输出(例如测试结果PASSED, FAILED, S…...

day16

目录 1 联合体的定义和使用 2 联合体的内存布局 3 联合体的应用 1 联合体的定义和使用 #include <iostream>using namespace std;struct DataS {int i; double d; char s[10]; };/*联合体 所有成员共享同一段内存 修改一个成员会影响其他成员 { */ union DataU {int…...

医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22

小罗碎碎念 今天给大家推荐一本入门书籍。 这本书由Uday Kamath、Kenneth L. Graham和Wael Emara撰写&#xff0c;深入探讨了Transformer模型在机器学习领域的应用&#xff0c;特别是自然语言处理&#xff08;NLP&#xff09;。 原文pdf已经上传至知识星球的【入门书籍】专栏&…...

【读书】复杂性意义结构框架——Cynefin框架

Cynefin框架 《代码大全》的作者史蒂夫麦克康奈尔&#xff08;Steve McConnell&#xff09;在《卓有成效的敏捷》这本书里&#xff0c;探讨了用于理解不确定性和复杂性的Cynefin框架。 Cynefin框架是戴维斯诺登&#xff08;David Snowden&#xff09;20世纪90年代的在IBM时创…...

Python模块、迭代器与正则表达式day10

1、Python模块 1.1模块的简介 在编写代码的时候&#xff0c;创建的.py文件就被称为一个模块 1.2模块的使用 想要在a文件里使用b文件的时候&#xff0c;只要在a文件中使用关键字import导入即可 1.2.2 from ...import...语句 导入模块可以使用import&#xff0c;如果只导入模…...

Hutool工具类生成二维码

1、引入依赖 <dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.3</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutoo…...

wpf 事件转命令的方式

1&#xff0c;方式1 <StackPanel Background"Transparent"><StackPanel.InputBindings><KeyBinding Command"{Binding ChangeColorCommand}"CommandParameter"{Binding ElementNamecolorPicker, PathSelectedItem}"Key"{Bi…...

第二十八章 TCP 客户端 服务器通信 - JOB命令示例

文章目录 第二十八章 TCP 客户端 服务器通信 - JOB命令示例JOB命令示例 第二十八章 TCP 客户端 服务器通信 - JOB命令示例 JOB命令示例 以下示例显示了一个非常简单的并发服务器&#xff0c;只要它检测到来自客户端的连接&#xff0c;就会产生一个子作业。 JOB指定一个并发服…...

「Mac玩转仓颉内测版19」PTA刷题篇10 - L1-010 比较大小

本篇将继续讲解PTA平台上的题目 L1-010 比较大小&#xff0c;通过对三个整数的排序&#xff0c;进一步提升Cangjie编程语言的数组操作与逻辑处理能力。 关键词 PTA刷题数字排序条件判断Cangjie语言 一、L1-010 比较大小 题目描述&#xff1a;给定3个整数&#xff0c;要求将它…...

C++趣味编程玩转物联网:用树莓派Pico实现一位数码管动态显示

七段数码管是一种经典的电子显示器件&#xff0c;广泛应用于数字时钟、电子仪表等设备。本文将通过树莓派Pico开发板&#xff0c;介绍如何用C代码控制一位七段数码管显示数字。作为一个嵌入式开发项目&#xff0c;这不仅是初学者理解数码管工作原理的好机会&#xff0c;也是C开…...

SPA 单页面深入解读:优劣势剖析及实现方法

SPA(Single Page Application)单页面应用 什么是 SPA? SPA(Single Page Application,单页面应用)是一种 Web 应用程序,它通过 JavaScript 动态更新单一页面上的内容,而不是像传统的多页面应用程序那样每次用户与应用交互时都请求一个新的 HTML 页面。通过使用 AJAX 请…...

机器学习系列----关联分析

目录 1. 关联分析的基本概念 1.1定义 1.2常用算法 2.Apriori 算法的实现 2.1 工作原理 2.2 算法步骤 2.3 优缺点 2.4 时间复杂度 2.5实际运用----市场购物篮分析 3. FP-Growth 算法 3.1 工作原理 3.2 算法步骤 3.3 优缺点 3.4 时间复杂度 3.5实际运用——网页点…...

json数据四大加载方式

效果&#xff1a; 一、使用 import 静态加载 JSON 原理 使用 ES 模块的 import 语法直接引入 JSON 文件。Webpack/Vite 等构建工具会将 JSON 文件解析成 JavaScript 对象。 优点 简单直接&#xff0c;适合静态数据。不需要额外的网络请求。数据会随着打包文件一起部署。 缺点 J…...

JavaScript 中的数组(Array)对象的内置方法

JavaScript 中的数组&#xff08;Array&#xff09;对象提供了许多内置方法&#xff0c;用于对数组进行创建、操作、遍历和搜索等操作。以下是一些常用的数组方法及其简要说明&#xff1a; 创建和初始化数组 Array(): 创建一个新的空数组&#xff0c;或者根据提供的参数创建一…...

网络安全之国际主流网络安全架构模型

目前&#xff0c;国际主流的网络安全架构模型主要有&#xff1a; ● 信息技术咨询公司Gartner的ASA&#xff08;Adaptive Security Architecture自适应安全架构&#xff09; ● 美国政府资助的非营利研究机构MITRE的ATT&CK&#xff08;Adversarial Tactics Techniques &…...

电子应用设计方案-16:智能闹钟系统方案设计

智能闹钟系统方案设计 一、系统概述 本智能闹钟系统旨在为用户提供更加个性化、智能化和便捷的闹钟服务&#xff0c;帮助用户更有效地管理时间和起床。 二、系统组成 1. 微控制器 - 选用低功耗、高性能的微控制器&#xff0c;如 STM32 系列&#xff0c;负责整个系统的控制和数据…...

【FRP 内网穿透 从0到1 那些注意事项】

【摘要】 最近跟第三方团队调试问题&#xff0c;遇到一个比较烦的操作。就是&#xff0c;你必须要发个版到公网环境&#xff0c;他们才能链接到你的接口地址&#xff0c;才能进行调试。按理说&#xff0c;也没啥&#xff0c;就是费点时间。但是&#xff0c;在调试的时候&#…...

突破ComfyUI下载瓶颈:3大秘诀让开源工具效率提升300%实战指南

突破ComfyUI下载瓶颈&#xff1a;3大秘诀让开源工具效率提升300%实战指南 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable variou…...

文件自动同步软件哪个好?企业级高效安全同步方案测评

文件自动同步软件对于许多中大型企业来说&#xff0c;是不可或缺的底层基础设施。不管是内部的多个服务器系统之间&#xff0c;跨部门团队之间&#xff0c;还是和外部的供应链伙伴、总部分支机构之间&#xff0c;都需要依赖文件自动同步软件来实现安全、自动化的文件传输与数据…...

Phi-4-mini-reasoning实操手册:Web界面响应延迟高?GPU显存占用诊断方法

Phi-4-mini-reasoning实操手册&#xff1a;Web界面响应延迟高&#xff1f;GPU显存占用诊断方法 1. 问题背景与现象分析 当使用Phi-4-mini-reasoning进行推理任务时&#xff0c;Web界面响应延迟高是一个常见问题。这种情况通常表现为&#xff1a; 点击"开始生成"按…...

大模型面试必备:模型训练与微调 15 问全解析

导读&#xff1a;2026 年&#xff0c;大模型已从"尝鲜"走向"落地"。无论是求职面试还是项目实战&#xff0c;模型训练与微调都是绕不开的核心话题。本文基于面试辅导资料&#xff0c;结合行业最佳实践&#xff0c;梳理了 15 个关键知识点&#xff0c;助大家…...

2026年济南本凡科技小程序开发前10大推荐,助您拥抱智能时代新风尚

在当今快速发展的智能时代&#xff0c;企业在市场竞争中需要不断创新以满足客户的需求。济南本凡科技小程序开发服务&#xff0c;凭借其多元化的功能和高效的技术架构&#xff0c;为各类企业提供了灵活的解决方案。本文将深入探讨十家领先的小程序开发公司&#xff0c;包括聚翔…...

ObsPy地震学工具箱:从数据采集到科学发现的完整Python解决方案

ObsPy地震学工具箱&#xff1a;从数据采集到科学发现的完整Python解决方案 【免费下载链接】obspy ObsPy: A Python Toolbox for seismology/seismological observatories. 项目地址: https://gitcode.com/gh_mirrors/ob/obspy ObsPy是地震学领域的Python工具箱&#xf…...

Android AdvancedRecyclerView与LiveData结合:实现数据实时更新的终极指南

Android AdvancedRecyclerView与LiveData结合&#xff1a;实现数据实时更新的终极指南 【免费下载链接】android-advancedrecyclerview RecyclerView extension library which provides advanced features. (ex. Googles Inbox app like swiping, Play Music app like drag and…...

ViGEmBus虚拟手柄驱动:让你的手柄在Windows游戏中完美适配

ViGEmBus虚拟手柄驱动&#xff1a;让你的手柄在Windows游戏中完美适配 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 还在为手柄无法被PC游戏识别而困扰吗&…...

单克隆抗体如何被制备并应用于疾病治疗?

一、什么是单克隆抗体&#xff1f;其与多克隆抗体有何区别&#xff1f;单克隆抗体&#xff08;Monoclonal Antibody&#xff0c;mAb&#xff09;是指由单一B淋巴细胞克隆所产生的高度均一、仅针对某一特定抗原表位进行识别的抗体。这类抗体具有高度特异性。与之相对的是多克隆抗…...

告别复杂配置!intv_ai_mk11一键部署,小白也能轻松体验AI写作

告别复杂配置&#xff01;intv_ai_mk11一键部署&#xff0c;小白也能轻松体验AI写作 1. 为什么选择intv_ai_mk11 在AI技术快速发展的今天&#xff0c;文本生成模型已经成为内容创作、客服问答、文案撰写等多个领域的得力助手。然而&#xff0c;对于大多数非技术背景的用户来说…...