SDK开发之hello_world

本文介绍了从创建Vivado工程到使用SDK开发应用程序的ZYNQ HelloWorld实验过程。首先在Vivado中搭建ZYNQ Processing System,配置UART串口和DDR内存,然后导出硬件到SDK。接着在SDK中创建应用程序,编译并运行,最终通过串口验证功能。实验详细阐述了硬件设计和软件设计的每个步骤,为ZYNQ嵌入式系统学习者提供了一个清晰的起点。
摘要由CSDN通过智能技术生成

目标:Hello World实验
“Hello World!”是各类编程教程中最经典的实验,无数软件工程师都是从"Hello World"开始自己的编程之路。从串口打印"HelloWorld”开始我们zYNQ的学习之路。通过本次实验我们将了解到zYNQ的PS部分的开发流程,以及熟悉相关软件的操作。

开发环境
硬件开发环境: vivado 2018.3
软件开发环境:SDK 2018.3
两者集成在一起了。

**开发流程:**首先我们来了解一下一个完整的ZYNQ嵌入式系统的组成部分:1、系统内核:ARM Cortex-A9;2、存储器:DDR3 Memory Controller+存储芯片;3、其他外设;4、外部电路组件;5、应用程序
由此可见我们开发一个ZYNQ嵌入式系统需要完成硬件设计和软件设计两大部分的内容。针对本次串口输出实验,我们仅需要UART串口这一个外设即可实现需要的功能。
结合我们要完成的 ZYNQ嵌入式系统开发,根据上面的介绍可以发现一个嵌入式系统的开发流程为。第一步:创建Vivado工程;第二步使用IP核创建处理器系统。第三步:生成顶层文件并导出硬件描述文件到SDK。第四步:在 SDK中创建应用程序。第五步:在硬件电路板上验证功能。

1.硬件设计:
第一步创建vivado工程
在这里插入图片描述
对于不需要添加源文件和约束文件的项目,可以勾选"Don not specify source at this time”。跳过添加源文件和约束文件的步骤,点击"Next"跳到器件选型的界面。
在这里插入图片描述

在这里插入图片描述
接下来就开始系统硬件部分的设计,搭建流程为:点击左侧导航栏((Flow Navigator)中的IP Integrator选项下的 Creat Block Design。然后在弹出的对话框中输入所创建的Block Design的名称,在 Design name栏中输入"hello_world",点击“OK”。
在这里插入图片描述
点击Diagram界面中的‘+’或者快捷键ctrl+l。之后在搜索栏输入zynq,,在搜索结果中找到“ZYNQProcessing System"并双击,将该处理器系统IP添加到设计中。
在这里插入图片描述
双击添加的ZYNQ7 Processing System模块,进入ZYNQ处理系统配置界面。页面左侧显示导航面板,右侧为配置信息面板。如下图所示:
在这里插入图片描述
在这里插入图片描述
点击左侧的“MIOConfiguration",在右侧展开I/O Peripherals->UART1,因为我们使用的引脚为MIO48和 MIO49,属于Bank1,所以此处将Bank1的引脚电平修改为1.8V。在此处可以看到具体的引脚配置信息。其中 MIO48为TX引脚方向为输入,MIO49为 RX引脚方向为输出,引脚电压为1.8v,速度为slow,使能上拉。
在这里插入图片描述
接下来配置串口波特率相关配置,默认波特率为115200,也可以选择其他的,这里默认。
在这里插入图片描述
点击左侧"DDR Cfinguration",选择DDR器件的型号,点开 DDR ControllerConfiguration下拉按钮,在Memory Part一栏根据自己开发板的型号选择。芯片为XC7Z010 的开发板选择MT41128M16 HA-125。芯片为其他型号的开发板全部选择“MT41J256M16 RE-125"。
在这里插入图片描述
点击左侧“Clock Configuration",显示ZYNQPS端的时钟频率配置页面,此处的各个时钟频率保持默认设置,因为本实验不需要用到PL部分,所以点开"PLFabric Clock",取消勾选"FCLK_CLKO",如图所示。

在这里插入图片描述
在这里插入图片描述
这样就配置完成了,点击OK,保存配置并返回。回到主界面我们会看到ZYNQ7模块发生了变化,如图,对比之前发现少了部分接口,这是因为我们取消了关于PL的部分设置。

在这里插入图片描述
在这里插入图片描述
点击Run Block Automation"会出现
在这里插入图片描述
全选,点击"OK",软件会自动为IP添加输入输出端口以及各个IP之间的连接,因为本实验只用到一个IP,所以系统只引出了两组信号。
配置完成的IP如下图所示,点击接口旁边的“+“可以看到展开两组接口,查看其中具体的信号有哪些。
在这里插入图片描述
当前实验不需要添加其他IlP,快捷键Ctrl+S保存当前设计,点击工具栏的Validate Design按钮验证当前的设计。验证完成后弹出对话框提示没有错误或者关键警告,点击“OK”,如下图所示:
在这里插入图片描述
在这里插入图片描述
设计完成后需要生成顶层 HDL模块,在 Sources窗口,选中 Design Source下的 hello_world.bd,右键点击hello_world.bd,在弹出的菜单中选择“GenerateOutput Products”",如下图所示:
在这里插入图片描述
在这里插入图片描述
点击Generate,来生成设计的综合、实现和仿真文件。
在 Sources窗口,选中Design Source下的 hello_world.bd,右键点击hello_world.bd,在弹出的菜单中选择"Create HDL Wrapper”,如下图所示:
在这里插入图片描述
在这里插入图片描述
到这一步我们的硬件设计就完成了,是不是很简单,嘿嘿
在这里插入图片描述
**对于用到PL部分资源的项目需要添加引脚约束并进行综合、实现并生成Bitstream文件。由于本实验未用到PL部分,所以无需上述步骤,可直接导出硬件到SDK即可。**继续下面的步骤
在菜单栏选择File>Export>Export hardware
在这里插入图片描述
在这里插入图片描述
点击OK。硬件导出完成后,在菜单栏中选择File > Launch SDK,启动SDK开发环境。如下图所示:

在这里插入图片描述
点击OK。
在这里插入图片描述
到这里,我们就完成了系统硬件部分的设计,接下来需要到SDK软件中进行应用程序开发,也就是软件设计部分。(惊不惊喜^ - ^)

第二部分:软件设计
SDK打开如下:(此时已经将硬件设计导出并打开了SDK软件)
在这里插入图片描述
在编辑框中可以看到打开的 system.hdf 文件,这就是我们导出的硬件描述文件,上面显示了整个系统的地址映射信息。
现在我们开始软件部分的设计。首先在菜单栏选择File > New > ApplicationProject,新建一个SDK应用工程。在弹出的对话框中,输入工程名"hello_world",其他选项保持默认,点击"Next”。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
之后 SDK创建了一个hello_world应用工程和 hello_world_bsp 板级支持包(BSP)工程,同时SDK会自动对工程进行编译,并生成可执行ELF 文件"hello_world.elf",如下图所示:
在这里插入图片描述
双击打开 hello_world/src工程目录下helloworld.c文件,可以看到源代码如下:

在这里插入图片描述
开始下载验证,采用JTAG方式现在烧录程序。菜单栏中选择Window > Show View > Other,在弹出的 Show View窗口中搜索Terminal,选中,点击“OK”。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击
在这里插入图片描述
连接成功后,下载程序。右键点击hello_world 工程,在弹出的菜单栏中选择Run as > 1 Launch on Hardware(sysntem Debugger),如下图所示:

在这里插入图片描述
在这里插入图片描述
至此收工!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值