接着上一节《vivado中建立工程,创建zynq嵌入式系统》已经配置好硬件环境,为AXI GPIO 分配了地址空间,接着我们编写程序点亮LED灯。
上节输出bit流给SDk后,我们来点击启动SDK:launch SDK
执行File->New->Application Project命令。输入新建工程名称,我这里是Design_1;
把程序存放在上一个vivado工程里
这里SDK->SDk_Export是我建立的,我把工程放在这里。
接着点击下一步,添加空的应用。完成
之后使用快捷键添加source File
保存在工程的src下。
输入下面程序:
#include"xparameters.h"
#include"xgpio.h"
#include"xil_printf.h"//有输出语句就要用到
#include"xil_cache.h"
#define GPIO_BITWIDTH 8
#define GPIO_DEVICE_ID XPAR_AXI_GPIO_0_DEVICE_ID
#define LED_DELAY 10000000 //简单的延时参数宏定义
#define LED_MAX_BLINK 0x1 //闪烁次数
#define LED_CHANNEL 1
#define printf xil_printf
XGpio Gpio;
XGpio GpioOutput;
int Gpio_Marquee(u16 Deviceid,u32 Gpio_Width){
volatile int delay;
u32 Ledbit;
u32 Ledloop;
int status;
status=XGpio_Initialize(&GpioOutput,Deviceid);
if(status !=XST_SUCCESS){
return XST_FAILURE;
}
XGpio_SetDataDirection(&GpioOutput,LED_CHANNEL,0x0);
for(Ledbit =0x0;Ledbit < Gpio_Width;Ledbit++){
for(Ledloop=0x0;Ledloop<LED_MAX_BLINK;Ledloop++){
XGpio_DiscreteWrite(&GpioOutput,LED_CHANNEL,1<<Ledbit);
for(delay=0;delay<LED_DELAY;delay++);
XGpio_DiscreteClear(&GpioOutput,LED_CHANNEL,1<<Ledbit);
for(delay=0;delay<LED_DELAY;delay++);
}
}
return XST_SUCCESS;
}
int main(void){
while(1){
u32 status;
status=Gpio_Marquee(GPIO_DEVICE_ID,GPIO_BITWIDTH);
if(status==0){
printf("SUCCESS.\r\n");
}
else
printf("FAIL.\r\n");
}
return XST_SUCCESS;
}
将zedboard与pc机相连,插上串口线和jtag线
调成JTAG模式:
执行xilinx Tools ->Program FPGA命令将比特流写入FPGA中。
点击program。
单击所建立的工程名,
单击run->run confidence
然后单击这里:
配置成这样:
单击run。
流水灯效果,串口输出success。