基于ZYNQ的SOC——Hellow_World实验

  ZYNQ是一款SOC芯片,之前使用VGA做过的实验只是PL(Programmable Logic)部分,而ZYNQ最突出的功能,就是内部的双核Cortex-A9,所以从现在开始我将学习ZYNQ的SOC学习(PS部分)。

  本实验的目的是熟悉ZYNQ的PS(Processor Subsystem)部分使用方法,了解开发板资源,做一个最小系统Hellow world,使用资源有ARM Cortex-A9、DDR3内存、一个UART串口。实验内容是,将写好的程序加载到DDR内存中,然后CPU一条一条执行,那么执行的情况可以通过串口打印观察。

本次实验需要用到的资源,CPU XC7Z010(XC7Z010-1CLG400C)、两片 MT41J128M16JT-125 or MT41K128M16JT-125 512MB DDR3、经过实验确定我这块板子上是两片MT41K128M16JT-125 512MB DDR3。

一、硬件部分

基于ZYNQ的SOC——Hellow_World实验

在开发板上选择QSPI Flash跳线帽

基于ZYNQ的SOC——Hellow_World实验

供电方式不用改,选择USB供电

首先是使用Vivado新建一个工程,工程名为Hellow_world,这里省略掉新建工程部分。新建工程部分和之前使用Vivado的流程类似。基于ZYNQ的SOC——Hellow_World实验

点击create block design,将名字设置为system基于ZYNQ的SOC——Hellow_World实验

点击如图所示图标,添加IP,选择ZYNQ7 Processing System基于ZYNQ的SOC——Hellow_World实验

然后点击Run Block Automation

基于ZYNQ的SOC——Hellow_World实验

什么也不做直接点击OK。基于ZYNQ的SOC——Hellow_World实验

然后会看到图上会生成两个输出基于ZYNQ的SOC——Hellow_World实验

按如图所示连接。

基于ZYNQ的SOC——Hellow_World实验

双击IP核进入设置界面,点击clock configuration 设置输入时钟,按如图所示。

基于ZYNQ的SOC——Hellow_World实验

点击设置MIO configuration设置如图所示。

基于ZYNQ的SOC——Hellow_World实验

设置DDR 我这里使用的官方的ZYNQ,查手册的DDR配置如图所示,设置完成点击OK。基于ZYNQ的SOC——Hellow_World实验

然后到工程下,右键单击system,选择generate output products,基于ZYNQ的SOC——Hellow_World实验

然后再右键system,选择Create HDL Wrapper,选择如图所示,选择OK。基于ZYNQ的SOC——Hellow_World实验

然后点击如图所示图标,生成电路基于ZYNQ的SOC——Hellow_World实验

可能会等几分钟,生成完成后点击File 选择Export,选择Export Hardware,勾选上include bitsteam,然后OK。基于ZYNQ的SOC——Hellow_World实验

点击File,launch SDK,点击OK ,这样硬件平台就搭建完毕了。

二、软件部分基于ZYNQ的SOC——Hellow_World实验

SDK开启了之后,点击File-New-application Porject,然后输入工程名Hellow_World。其他如图所示配置,点击Next。

基于ZYNQ的SOC——Hellow_World实验

这里我们直接选择官方的测试工程Hellow_World.基于ZYNQ的SOC——Hellow_World实验

看到如图所示生成两个文件Hellow_World和Hellow_World_bsp,然后右键点击Hellow_World,选择Debug As-Debug configuration。按如上图所示配置,点击apply,然后点击debug。基于ZYNQ的SOC——Hellow_World实验

然后会弹出如图所示界面,点击如图所示配置串口。基于ZYNQ的SOC——Hellow_World实验

配置完成后,点击run运行,则串口那里会打印出来,Hellow_World。基于ZYNQ的SOC——Hellow_World实验

测试正确。我们还可以看一下代码。

 #include <stdio.h>
#include "platform.h" void print(char *str); int main()
{
init_platform(); print("Hello World\n\r"); cleanup_platform();
return ;
}

  代码这部分也是十分简单的,两个头文件,一个显示输出函数,然后是主函数。主函数也是十分简单的,这样我们就完成了基于ZYNQ SOC的第一个程序Hellow_World,如果你没有像我这样串口打印出来Hellow World,那说明你有哪一个步骤错误了,请仔细查看,如果本文有错误,欢迎来联系博主,我们共同讨论学习!

基于ZYNQ的SOC——Hellow_World实验

转载请注明出处:NingHeChuan(宁河川)

个人微信订阅号:开源FPGANingHeChuan

如果你想及时收到个人撰写的博文推送,可以扫描左边二维码(或者长按识别二维码)关注个人微信订阅号

知乎ID:NingHeChuan

微博ID:NingHeChuan

原文地址:http://www.cnblogs.com/ninghechuan/p/7324499.html

上一篇:HTML5自学笔记[ 7 ]defer和async


下一篇:热力图实现-heatmap.js 代码示例