MiZ702学习笔记4——熟悉EDK从纯PS开始
0赞上次笔记中,我们利用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已经还是闪烁起来~~