首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

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已经还是闪烁起来~~



记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表