MiZ702学习笔记4——熟悉EDK从纯PS开始

上次笔记中,我们利用vivado新建了一个工程,仅仅用到了zynq的PL部分,也就是FPGA的部分,点亮了一个流水灯。

这次我们我们就单单玩玩PS部分,也就是ARM部分,熟悉下这部分的开发流程。

创建工程的过程和上一篇笔记是一样的,这次我们首先创建一个Block文件,用于放置IP。

这个Block文件我就取个名字叫他BlockTop吧:

点击OK之后,就新建好了,Vivado提示你添加一个IP:

按我们就按照提示点击Add IP之后出现如下对话框,找到zynq的IP核,每次今天就是要添加它,双击它:

vivado做的很人性化,它一步步的提示你,点击Run Block Automation,这样就简单的组建一个ZYNQ 的处理系统:


在你点击了OK之后,你会发现DDR以及FICED_IO自动的延伸出来。

接下来,双击ZYNQ IP核,我们可以进入其内部对齐进行配置,和传统的ARM不一样,ZYNQ的PS部分是可以有用户进行配置的。

我们看到时钟配置这一栏,FLCK_CLK0配置输出了一个50M的时钟,点击OK退出配置界面,在Block文件中,我们进行连线,将鼠标放在引脚处,鼠标变成铅笔后进行拖拽,连线如下图所示:

右键单击Block,文件选择Generate the output products,是文件得到一定的约束:

继续右键单击Block,文件选择Create a HDL wrapper,创建一个HDL 的顶层文件:


那么vivado这部分的事情基本做完了,接下来就是把配置好的硬件,告诉SDK,可能读者发现一个问题,这里并没有对当前项目进行编译生成bit什么的,这是因为这个设计里没有包含任何的PL逻辑设计部分,所以也就不需要了.

之后我们就可以像开发ARM那样来开发ZYNQ的PS部分了。如下图所示:选择File > Export > Export Hardware


选择File > Launch SDK,打开SDK软件:


在SDK界面中,新建一个项目:

填写项目名字,并选择项目类型为C,点击Next:

选择一个空的工程,点击Finish:

接着创建一个C的源文件:

名字就叫main.c:

接下来就向main.c中添加内容了,我们的MiZ702PS的一个MIO,MIO7接到了LD9这个灯上,接下来我们利用程序让他闪起来。

#include
#include "xgpiops.h"
#include "xgpio.h"
#include "sleep.h"

//void print(char *str);

int main()
{
static XGpio psGpioInstancePtr;
XGpioPs_Config* GpioConfigPtr;
int iPinNumber= 7; //LD9连接的是MIO7
u32 uPinDirection = 0x1; //1表示输出,0表示输入
int xStatus;

//--MIO的初始化
GpioConfigPtr = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);
if(GpioConfigPtr == NULL)
return XST_FAILURE;

xStatus = XGpioPs_CfgInitialize(&psGpioInstancePtr,GpioConfigPtr, GpioConfigPtr->BaseAddr);
if(XST_SUCCESS != xStatus)
print(" PS GPIO INIT FAILED \n\r");
//--MIO的输入输出操作
XGpioPs_SetDirectionPin(&psGpioInstancePtr, iPinNumber,uPinDirection);//配置MIO输出方向
XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, iPinNumber,1);//配置MIO的第7位输出
while(1)
{
XGpioPs_WritePin(&psGpioInstancePtr, iPinNumber, 1);//点亮MIO的第7位输出1
sleep(1); //延时
XGpioPs_WritePin(&psGpioInstancePtr, iPinNumber, 0);//熄灭MIO的第7位输出0
sleep(1); //延时
}

return 0;
}

这里,大家还可能遇到一个头文件的问题,如提示缺少 #include "xgpio.h",这是因为你没有添加GPIO的IP,那么硬件导出的时候就没有,没有我们可以自己添加,我告诉你一个好方法。

直接将"xgpio.h"粘贴进去,但是"xgpio.h"里还包含了一个xgpio_l.h,所以也一起粘贴进去。

可以直接选中include,按Ctrl + V向其中粘贴文件。

"xgpio.h",和"xgpio_l.h"可以在vivado安装目录下找到。

D:\Xilinx\SDK\2014.2\data\embeddedsw\XilinxProcessorIPLib\drivers\gpio_v4_0\src

还有一个gpio_v3_01_a,也有一样的文件,不过感觉版本低些,就没管它。

Ctrl + S保存,Ctrl + B编译,编译时还可能遇到错误:

莫慌~~~右击工程,Clean一下,该警告可消除

编译成功后,可以开始调试了:


依然是,这个界面,我们下拉滚动条,勾选两个东东:

切换到Application选项卡:

如果,你的开发板上电了,而且保证JTAG连接好了,此时你的LD9已经还是闪烁起来~~

(1楼)请问博主使用vivado哪个版本开发的,2014系列还是2

wangrong4125 在 星期四, 01/28/2016 - 15:12 发表。

请问博主使用vivado哪个版本开发的,2014系列还是2015系列?如果是2015系列,我才开发中碰到一些问题,想请教一下,谢谢!