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线的质量和信号干扰有关。

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

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

相关文章

全面击破工程级复杂缓存难题

目录 一、走进业务中的缓存 (一)本地缓存 (二)分布式缓存 二、缓存更新模式分析 (一)Cache Aside Pattern(旁路缓存模式) 读操作流程 写操作流程 流程问题思考 问题1&#…

SpringSecurity创建一个简单的自定义表单的认证应用

1、SpringSecurity 自定义表单 在 Spring Security 中创建自定义表单认证应用是一个常见的需求,特别是在需要自定义登录页面、认证逻辑或添加额外的表单字段时。以下是一个详细的步骤指南,帮助你创建一个自定义表单认证应用。 2、基于 SpringSecurity 的…

用python简单集成一个分词工具

本部分记录如何利用Python进行分词工具集成,集成工具可以实现运行无环境要求,同时也更方便。 该文章主要是记录,知识点不是特别多,欢迎访问个人博客:https://blog.jiumoz.top/archives/fen-ci-gong-ju-ji-cheng 成品展…

Fakelocation Server服务器/专业版 Windows11

前言:需要Windows11系统 Fakelocation开源文件系统需求 Windows11 | Fakelocation | 任务一 打开 PowerShell(以管理员身份)命令安装 Chocolatey Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProto…

【云计算】腾讯云架构高级工程师认证TCP--考纲例题,知识点总结

【云计算】腾讯云架构高级工程师认证TCCP–知识点总结,排版整理 文章目录 1、云计算架构概论1.1 五大版块知识点(架构设计,基础服务,高阶技术,安全,上云)1.2 课程详细目录1.3 云基础架构设计1.4…

HarmonyOs鸿蒙开发实战(22)=>开源插件集成-城市选择案例(带字母索引可修改源码)

1.第一步>DevEco Studio集成开源插件 1.1.下载资源插件 1.2.打开Perferences页面,从本地导入安装插件 2.第二步>导入HarmonyOs Next组件市场的城市选择案例,安装 2.1. 代码空白处右键,打开开源组件弹窗 2.2. 安装城市选择案例 3.第三步…

ROS之什么是Node节点和Package包?

1.什么是ROS? 官方术语:ROS(Robot Operating System,机器人操作系统)是一个开源的、模块化的机器人软件框架。它为机器人开发提供了一套工具和库,用于实现硬件抽象、设备驱动、消息传递、多线程管理等功能…

Windows环境安装MongoDB

文章目录 1. 下载MongoDB2. 安装MongoDB3. Compass-图形化界面客户端4. 更换Compass的主题 阅读本文前可以先阅读以下文章: MongoDB快速入门(MongoDB简介、MongoDB的应用场景、MongoDB中的基本概念、MongoDB的数据类型、MongoDB的安装与部署、MongoDB的常…

在线解析工具链接

在线字数统计工具-统计字符字节汉字数字标点符号-计算word文章字数字数统计,字符统计,字节统计,字数计算,统计字数,统计字节数,统计字符数,统计word字数,在线字数统计,在线查字数,计算字数,字数统计工具,支持手机移动端查询多少字数,英文:Calculate the number of words,Count …

RTL8211F 1000M以太网PHY指示灯

在RK3562 Linux5.10 SDK里面已支持该芯片kernel-5.10/drivers/net/phy/realtek.c,而默认是没有去修改到LED配置的,我们根据硬件设计修改相应的寄存器配置,该PHY有3个LED引脚,我们LED0不使用,LED1接绿灯(数据…

通关C语言自定义类型:联合和枚举

C语言的自定义类型有四个分别是:数组;结构体(struct);联合体(union);枚举(enum)。前面已经讨论过数组和结构体,这期让我们来学习一下联合体和枚举…

java八股-SpringCloud微服务-Eureka理论

文章目录 SpringCloud架构Eureka流程Nacos和Eureka的区别是?CAP定理Ribbon负载均衡策略自定义负载均衡策略如何实现?本章小结 SpringCloud架构 Eureka流程 服务提供者向Eureka注册服务信息服务消费者向注册中心拉取服务信息服务消费者使用负载均衡算法挑…

介绍一下toupper(ch);函数(c基础)

hi , I am 36 适合对象c语言初学者 toupper(ch1); tolower(ch2); 是返回ch的大写或小写的字符但并不改变ch 若传递数字仍返回该数字 格式 #include<ctype.h> char res toupper(ch); 链接扫雷游戏代码分享(c基础)-CSDN博客 hi , I am 36. thanks for your look…

数据结构(Java版)第二期:包装类和泛型

目录 一、包装类 1.1. 基本类型和对应的包装类 1.2. 装箱和拆箱 1.3. 自动装箱和自动拆箱 二、泛型的概念 三、引出泛型 3.1. 语法规则 3.2. 泛型的优点 四、类型擦除 4.1. 擦除的机制 五、泛型的上界 5.1. 泛型的上界的定义 5.2. 语法规则 六、泛型方法 6.1…

敬请关注:CEPGT 2024 新增主讲

Prof. Marc A. Rosen, Ontario Tech University, Canada 曾担任安大略省理工大学工程与应用科学学院创始院长、加拿大工程学院院长和加拿大机械工程学会会长。 他的主要研究领域是能源、热力学、可持续发展等。Google Scholar Citations 48000余次&#xff0c;H指数98。Prof. …

【Python】30个Python爬虫的实战项目!!!(附源码)

Python爬虫是数据采集自动化的利器。本文精选了30个实用的Python爬虫项目&#xff0c;从基础到进阶&#xff0c;每个项目都配有完整源码和详细讲解。通过这些项目的实战&#xff0c;可以全面掌握网页数据抓取、反爬处理、并发下载等核心技能。 一、环境准备 在开始爬虫项目前…

如何编译 Cesium 源码

如何编译 Cesium 源码 Cesium 是一个开源的 JavaScript 库&#xff0c;用于构建 3D 地球和地图应用程序。它提供了一套强大的 API 和工具&#xff0c;使开发者能够创建丰富的地理空间应用。本文将指导您如何从 GitHub 下载 Cesium 源码&#xff0c;并在本地进行编译。 TilesB…

计算服务器定制化,计算力提升的关键!

如今&#xff0c;计算服务器的性能、成本、灵活性以及可靠性等因素对于企业的运营和发展起着至关重要的作用。定制服务器&#xff0c;作为一种根据企业特定需求和业务特点专门设计制造的服务器解决方案&#xff0c;正逐渐成为众多企业的明智之选。 对于计算服务器而言&#xff…

51WORLD与南京水利研究院联合研发,国产数字孪生超融合一体机

近日&#xff0c;太湖流域水治理国际会议在江苏省无锡市举行。大会由水利部国际合作与科技司、河湖管理司、中国水利学会、水利部太湖流域管理局、无锡市人民政府、中国交通建设集团有限公司指导&#xff0c;南京水利科学研究院主办&#xff0c;以“践行新发展理念、推进流域水…

STL关联式容器之map

map的特性是&#xff0c;所有元素都会根据元素的键值自动被排序。map的所有元素都是pair&#xff0c;同时拥有实值(value)和键值(key)。pair的第一元素被视为键值&#xff0c;第二元素被视为实值。map不允许两个元素拥有相同的键值。下面是<stl_pair.h>中pair的定义 tem…