拿过ZYNQ开发板,里面给了很多部件,果断从网上下载了手册,N多手册和原理图。

要比Spartan-6复杂多了,耐心地看了看,知道ZYNQ系列分为PS(系统)以及PL(逻辑)部分。

之前,自己一直在做MIPS处理器的实现,其实对很多概念也没什么大的认识,对于FPGA的认识其实就是数字电路+Verilog。

其实,我个人认为FPGA的学习与研究千万不能冒进,就是要肯下功夫慢慢来,只要时间够了,一切问题都可以迎刃而解。

今天,自己主要做两方面事情:利用Xilinx SDK编写HelloworldC程序,并运行在ZYNQ的操作系统下运行。

其次,使用SDK编写Helloworld工程,配置ARM环境。

(一)利用SDK编写arm-cross-compile程序

今天才发现14.1以上的SDK貌似都可以直接编写arm-cross-compile程序。果断试一下:

打开SDK,新建工程,选择C/C++ —— C Project,如下图所示

单击next,添加工程名hello,在Static Library下选择Xilinx ARM Linux Executable,如下图所示:

单击Finish,工程建立完毕。向工程添加C文件,单击File ——new —— Source File,输入文件名main.c(含后缀名)。如图:

在工程WorkSpace内单击main.c,并添加如下内容后保存:

#include <stdio.h>

int main()
{
    printf("Hello ZYNQ.\n");
    return 0;
}

在WorkSpace内右键单击工程名,选择Build Configuration—— Set Active —— 选择Release,因为文工程不需要Debug,直接Release即可。如图所示:

然后Build,进入工程文件夹内,在Release文件夹下,找到Hello.elf文件,该文件即为程序执行所需文件,将该文件拷贝到U盘中。

然后需要安装驱动程序CyUSB2Serial_v3.0.11.0.zip,并将Xilinx官网ZedBoard_OOB_Design.zip内容拷贝到SD卡上。调整ZYNQ开发板跳线帽位置,如下图所示:

将JP2短接表示U盘作为从设备,一切就绪后,充电,打开超级终端(hypertrm),选择COM口,修改每秒位数115200。如图:

一段时间后,进入Linux终端界面,输入ls /dev,如图所示:

其中sda/sda1即为U盘内容,需要对U盘进行挂载,依次输入如下命令:

mount /dev/sda1 /mnt

cd /mnt

ls

如图所示,其中hello.elf即为执行文件,

输入./hello.elf执行。如图所示:

Hello ZYNQ。即为输出内容,可见该文件已经在ARM环境下运行,输入

cd ..

umount /mnt

卸载U盘,关闭电源。

(二)建立Helloworld工程。

启动PlanAhead(以前一直以为这个是鸡肋,现在才知道它才是精华),进入新建工程向导。

选择工程名和路径。单击Next,选择RTL Project,单击Next,如图所示:

一路Next,直到Default Part,Family选择zynq-7000,Package选择clg484,Speed选择-1,如图:

单击Next,单击Finish。

生成工程文件,单击Project Manager栏Add Source,选择Add or Create Embedded Sources,如图。

单击Next,单击Create Sub-Design,添加module名称,选择module,单击Finish。

等若干时间,Add Embedded Source。登录XPS时,弹出如下提示,单击Yes。

登录XPS界面后,单击Import,选择配置xml文件,单击OK,提示后单击Yes,如图所示。

完成后,关闭XPS,回到PlanAhead。在Design Source下右键Module,单击Create TOP HDL,如图:

完成后生成.v文件。单击File—— Export —— Export Hardware for SDK,如图:

勾选Launch SDK,单击OK。如图:

登录SDK后,单击File —— Application Project。输入Project名,如图所示:

单击Next,选择Hello world,单击Finish,如下图所示:

完成后,生成若干文件,在src内找到Helloworld.c文件,如下图所示:

选中工程单击Build Project。Build结束后,单击Xilinx Tools —— Configure JTAG Settings,将Type类型修改为Digilent USB Cable,因为一会儿将使用USB线作为下载线,此处如果选择Auto,本人的环境是默认为Xilinx Hardware Server,所以一直不能下载,此处建议显示设置,单击OK,如图。

右键工程,选择Run As —— Run Configuration,双击Xilinx C/C++ application(GDB),如图:

一切准备就绪后,修改ZYNQ开发板跳线帽,如图:

并将prog mini-usb端连入PC用于下载程序,将uart mini-usb端连入PC,用于传输Hello world,连接好后,打开电源,打开超级终端,设置波特率115200。

单击run,数秒后,在超级终端可接受字符串,如图所示:

关闭电源,实验结束。

本次学习笔记的工程及资源均可从百度网盘下载http://pan.baidu.com/share/link?shareid=696393914&uk=1092766566。

【原创】ZYNQ学习笔记(一) HelloWorld实现的更多相关文章

  1. Spring MVC 学习笔记一 HelloWorld

    Spring MVC 学习笔记一 HelloWorld Spring MVC 的使用可以按照以下步骤进行(使用Eclipse): 加入JAR包 在web.xml中配置DispatcherServlet ...

  2. MOOS学习笔记2——HelloWorld回调

    MOOS学习笔记2--HelloWorld回调 例程 #include "MOOS/libMOOS/Comms/MOOSAsyncCommClient.h" bool OnConn ...

  3. MOOS学习笔记1——HelloWorld

    MOOS学习笔记1--HelloWorld 例程 /* * @功能:通讯客户端的最简单程序,向MOOSDB发送名为"Greeting" * 数据"Hello", ...

  4. U3D学习笔记1: HelloWorld

    Unity 版本: 5.3.5.f1 Hello World工程 1.新建工程 HelloWorld U3D可选2D和3D游戏   2.新建C#脚本文件 在project栏的assets目录右键-&g ...

  5. Zynq学习笔记(1)——Hellow World

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

  6. cocos2d-x 2.1.4学习笔记之HelloWorld分析

    下面截图是HelloWorld项目下的文件夹结构 这是用python命令生成的项目,在创建过程中默认生成多个平台的程序文件. 1.“resource”文件夹 该文件夹主要用于存放游戏中需要的图片.音频 ...

  7. Zynq学习笔记(1)

    做硬件的第一个实例,一般当然是LED点灯啦~ 硬件:ZedBoard 软件:ISE 14.7 1.新建工程 2.选择平台 3.新建完成后,输入如下代码: `timescale 1ns / 1ps // ...

  8. [原创] hadoop学习笔记:卸载和安装jdk

    一,卸载jdk 1.确定jdk版本 #rpm -qa  | grep jak 可能的结果: java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64 java- ...

  9. [原创] hadoop学习笔记:hadoopWEB监控

    笔者安装单机版本 要想实现hadoopweb页面的监控,需要解决以下几个问题 1.关闭linux的防火墙:#service iptables stop 2.将linuxSE设置为disabled:#v ...

随机推荐

  1. android SDK Manager更新不了,出现错误提示:"Failed to fetch URL..."!

    可以用以下办法解决: 使用SDK Manager更新时出现问题 Failed to fetch URL https://dl-ssl.google.com/android/repository/rep ...

  2. php安装libevent

    libevent扩展安装 libevent-2.0.16-stable.tar http://libevent.org/ [plain] view plaincopy cd libevent-2.0. ...

  3. 统计某一字段等于不同值的个数的sql语句(分享)

    本文介绍下,用一条sql语句统计某一字段等于不同值的个数,方法很独特,有需要的朋友参考下. 表t,数据:  id      type001     1001     0002     1001     ...

  4. C盘清理大作战

    C盘会随着使用时间慢慢变满(即使你不在C盘装程序),下面就记录几个C盘清理的方法: 1.使用清理软件清理C盘(360卫视,腾讯管家) 2.转移虚拟内存:计算机右键属性——高级管理设置——高级——性能- ...

  5. Mindjet.MindManager“参数错误”解决办法,适用于9.0、10.0和14.0

    MindManager出14.0版本了,但是在应用个别模板的时候会提示“参数错误”,然后自动关闭. 解决办法:   如果是win7系统,可以进入C:\Users\(用户名) \AppData\Loca ...

  6. 爬虫学习之基于Scrapy的网络爬虫

    ###概述 在上一篇文章<爬虫学习之一个简单的网络爬虫>中我们对爬虫的概念有了一个初步的认识,并且通过Python的一些第三方库很方便的提取了我们想要的内容,但是通常面对工作当作复杂的需求 ...

  7. python中文件的复制

    python中文件的复制 python的os模块有很多文件目录相关的函数,但没有提供直接复制文件的函数,当然可以通过边都边写的方式复制文件.想要直接复制文件可以通过shutil模块 shutil模块是 ...

  8. wpf datagrid 行双击事件

    Xaml: <DataGrid ItemsSource="{Binding SessionList}" Grid.Row="2" Grid.Column= ...

  9. ios NavBar+TarBar技巧

    NavBar+TarBar iphone开发 NavBar+TarBar 1  改变NavBar颜色:选中Navigation Bar 的Tint属性.选中颜色. 2  隐藏“back”按钮: sel ...

  10. easy ui 异步上传文件,跨域

    easy ui 跨域上传文件,代码如下: 1.html代码:(这段代码是个win窗体,我在点击上传图片按钮然后弹出一个上传图片的窗体,选择图片再进行上传,这样在form提交时,提交的参数会少一点.) ...