当前位置: 首页 > 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线的质量和信号干扰有关。

http://www.lryc.cn/news/489573.html

相关文章:

  • 实践篇:青果IP助理跨境电商的高效采集
  • 本地安装YAPI
  • pytest日志总结
  • day16
  • 医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22
  • 【读书】复杂性意义结构框架——Cynefin框架
  • Python模块、迭代器与正则表达式day10
  • Hutool工具类生成二维码
  • wpf 事件转命令的方式
  • 第二十八章 TCP 客户端 服务器通信 - JOB命令示例
  • 「Mac玩转仓颉内测版19」PTA刷题篇10 - L1-010 比较大小
  • C++趣味编程玩转物联网:用树莓派Pico实现一位数码管动态显示
  • SPA 单页面深入解读:优劣势剖析及实现方法
  • 机器学习系列----关联分析
  • json数据四大加载方式
  • JavaScript 中的数组(Array)对象的内置方法
  • 网络安全之国际主流网络安全架构模型
  • 电子应用设计方案-16:智能闹钟系统方案设计
  • 【FRP 内网穿透 从0到1 那些注意事项】
  • 力扣 LRU缓存-146
  • Elasticsearch简介与实操
  • 用python将一个扫描pdf文件改成二值图片组成的pdf文件
  • Failed to start Docker Application Container Engine
  • ESLint的简单使用(js,ts,vue)
  • 实景三维赋能国土空间智慧治理
  • 树链剖分(重链剖分)
  • 幻读是什么?用什么隔离级别可以防止幻读?
  • [Unity Demo]从零开始制作空洞骑士Hollow Knight第二十集:制作专门渲染HUD的相机HUD Camera和画布HUD Canvas
  • 智能安全配电装置在高校实验室中的应用
  • 网络安全等级保护测评机构管理办法(全文)