moyiyoudao

有关嵌入式、linux系统、FPGA、C语言等技术类博客,博客内容完全转载自我CSDN博客,博客名:魔亦有道

二、Zedboard学习之SDK程序编写

0
阅读(1804)

接着上一节《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_printfXGpio 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;
}12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455

将zedboard与pc机相连,插上串口线和jtag线 
调成JTAG模式: 
这里写图片描述
执行xilinx Tools ->Program FPGA命令将比特流写入FPGA中。 
这里写图片描述 
点击program。 
单击所建立的工程名, 
这里写图片描述
单击run->run confidence 
这里写图片描述
然后单击这里: 
这里写图片描述 
配置成这样: 
这里写图片描述 
单击run。 
流水灯效果,串口输出success。