一步一步学ZYNQ(一)——艰难的起步

操作环境:Windows7_64bit旗舰版,Vivado2014.4

参考资料:ZedBoard_HW_UG_v1_1

自制ZYNQ核心板原理图,

Zynq-700 EPP CTT

 

ZYNQ 7000系列是一Cortex A9双核心ARM部分即PS部分+FPGA部分即PL部分,PLPS部分都是可以自由配置的。

由于项目需要,公司自制了ZYNQ核心板,由于从Altera转过来,此前没有ISE的基础,因此上手还是有一定的难度。在开发过程中出过一些低级错误。呵呵一下。。。。。。

这次学习主要还是按照网上大神们推荐的方法,利用Vivado创建一个嵌入式软件,并使用串口输出程序人员都使用的“Hello World”输出。

第一步:打开Vivado 2014.4

这个不用多说的,都会滴。

点击Create New Project;出现对话框,直接点击Next

工程名字随个人喜好,这里我就没有更改,使用了默认的Project_1;点击Next

 

这一步需要选择第一个选项,RTL Project,选择好后点击Next

 

由于我使用的芯片是XC7Z010,因此这里我选择Parts ,然后选择XC7Z010clg400,然后点击Next

直接点击Finish,好了,工程建立完成,开始进行设计。界面如下:

 

首先,需要新建一个Block Design 模块,点击“Create Block Design”,这里我使用的都是默认名称,可以根据需要自行更改。

 

点击OK,然后选择“Open Block Design” ,进行系统设计配置。

 

刚打开的Block是空的,需要自己进行添加;

选择使用Diagram窗口中的“Add IP”或者使用右键菜单Add IP,弹出IP选择对话框,在对话框中输入ZYNQ,选择第一个“ZYNQ Processing System”;双击选择,并自动打开;

 

 

这时可见已经把ZYNQ Processing添加进来了。

 

点击RUN Block Automation,直接点击OK,自动添加端口。

 

双击Processing System7_0,进行IP配置。打开后发现里面是空的,没有进行其他配置;

 

点击左边的PS-PL Configuration->General->UART0  Baud Rate,设置为115200

PS-PL Configuration->General->Enable Clock Resets->FCLK_RESET0_N,取消选择;

PS-PL Configuration->GP Master AXI Interface->M AXI GP0 Interface,取消选择;

MIO->Configuration->I/O Peripherals选择SD 0UART0 ,配置管脚如图;

此处需要根据板子选择Bank0 Bank1I/O端口电压;

 

Clock Configuration->PL Fabric Clocks->FCLK_CLK0取消选择;

 

DDR Configuration->Enable DDR 取消选择;

 

点击OK按钮,返回Vivado界面,此时系统自动更新,发现DDR管脚是多余的,直接删除,不用管它;

 

然后在Source界面,右键点击Design_1,在出现的菜单中点击“Create HDL Wrapper”弹出菜单;

 

直接点击OK

然后再次右键点击design_1,选择Generate Output Products,点击Generate,产生SDK需要的文件。

在这里我犯了一个错误,就是按照上面的步骤进行设计完成后,直接点击Export->Export Hardware,结果在Launch SDK 时出错。因此需要注意,最好是生成bitstream后在进行Export Hardware操作。

 

等待系统输出完成后,点击File->Export->Export Hardware,然后点击Launch SDK 。打开SDK进行系统编程;如图,默认打开SDK的样子,系统已经自动把Vivado中产生的文件加入进来。

其实我们主要也就是使用PS7_init.cps7_init.h,其实我也不是很明白,就是按照这样一步一步来进行设计的。有时间再研究一下。

选择file->new->New Application ProjectProject名称写上Helloworld,点击Next,选择Hello World模板。

 

点击Finish

看,系统已经自动把Hello World加载进去了。

打开Helloworld->src->helloworld.c,看到系统已经自动添加了一个print("Hello World\n\r");是不是和C语言入门中一样呀。

Helloworld工程上点击右键,选择“Clean Project”或者点击Project->Clean,进行程序编译。

编译完成后,右键Helloworld 或者ToolsDebug Configurations

 

在Xilinx C/C++ application(GDB)上右键,选择New

如图所示。

 

Target Setup Application SourceDebugger OptionsCommon,我都是使用的默认项,其中STDIO Connection如果使用Debug下的Terminal进行观察,则需要选中并进行配置,否则如果使用电路板上串口输出,使用串口助手进行接收查看,则不需要。

然后点击Debug按键,进行程序下载运行。等待下载完成,点击Resume进行程序运行,这时就可以在串口助手中看到Hello World输出。

 

我在这里运行了很长一段时间,就是没有看到串口助手输出信息,后来经过仔细摸索和查看资料,发现有一处需要进行配置。因为Zedboard使用的是UART1,所以不需要配置。我使用的是UART0,与默认不相配,导致我很久都没有调试通过。

打开system.mss文件,打开Modify This BSP’s Settings 界面,选择Overview->standalone,然后在右面更改stdinstdoutps7_uart0如图:

点击OK,然后再次Debug->Resume

哈哈,Hello World终于出来了!

 

 

 

 

 

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页