whilebreak

第三章 SOC Run LED

0
阅读(2148)

 

本教程是基于南京米联电子科技有限公司 MiS603 Spartan6开发板进行,软件采用ISE14.7。本系列教程就是带领大家学习XILINX EDK开发板工具以及SDK下的编程。本教程官方论坛:www.osrc.cn

在上一章节中笔者详细讲解了MCB内存控制器,DDR3内存的测试,让大家掌握了如何SDK开发下如何使用DDR3内存。从本章起,所有程序将配置从外部的DDR3内存中运行,本章笔记将带大家学习microblaze GPIO的使用。

在开始实验前,请确保你的电脑已经安装好ISE14.7,本教程省略最基本的新建工程的具体细节。

1.1添加GPIO IPCORE

Step1:复制上一个例子的工程,并将文件夹名字改为Run_LED

Step2:双击工程文件MiS603_SOC.xise

Step3:在ISE下启动XPS

Step4:添加GPIO IPCORE 如图

wps25C7.tmp

Step5:设置GPIO的位宽,这里只是简单地设置2,驱动2位GPIO

wps25D8.tmp

Step6:修改名字为LED 并且连接到axi4lite_0

wps25E8.tmp

Step7:把时钟连接到系统时钟,并且把GPIO连接到外部IO

GPIO_IO_O为输出、GPIO_IO_I为输入、GPIO_IO_T为三态输出、GPIO_IO为可以配置为输入或者输出。

wps25E9.tmp

Step8:查看外部端口部分

wps25FA.tmp

Step9:查看地址空间的分配

wps25FB.tmp

Step10:添加GPIO部分的管脚约束

wps260C.tmp

Step11:返回ISE进行编译

1.2编译工程

Step1:双击下图红色方框内,重新产生顶层文件

wps260D.tmp

Step2:右击选择添加拷贝的UCF文件

wps261D.tmp

Step3:拷贝UCF文件

wps261E.tmp

Step4:双击下图框选位置,进行编译

wps261F.tmp

Step5:修改SDK工程的路径(读者自己指定文件相对路径)

wps2630.tmp

1.3 SDK开发

Step1:新建工程为Run_Led

wps2640.tmp

Step2:这次新建一个空的工程

wps2641.tmp

Step3:右击添加main.c主函数

wps2652.tmp

Step4:添加main.c主函数

wps2653.tmp

Step5:编写源代码

/*

* main.c

*

*  Created on: 2015-9-15

*      Author: Administrator

*/

/*

* RunLed.c

*

*  Created on: 2013-12-3

*      Author: jinry tang

*/

#include "xparameters.h"

#include "xgpio.h"

#include "stdio.h"

#include "xil_types.h"

void delay_ms(u16 tnms)//不精确的延迟

{

u16 n1,n2;

for(n1=0; n1<2500; n1++)

for(n2=0;n2<tnms;n2++);

}

int main()

{

u8 i=0;

while(1)

{

for(i=1; i<3; i++)

{

XGpio_Out32(XPAR_LED_BASEADDR,i);//点亮LED

delay_ms(500);

}

}

return 0;

}

右击Run_Led工程选择Generate linker Script

wps2664.tmp

把代码,数据,堆栈全部设置到在DDR3内存中运行

wps2665.tmp

1.4下载及调试

Step1:准备好开发板,插上下载器,记住USB线要插上,并且通电,由于拍摄时间问题,本没有插上。

Step2:下载SOC硬件电路到FPGA

wps2675.tmp

35、ISE14.7会自动识别需要下载的文件

wps2676.tmpwps2677.tmp

Step3:右击工程

->Debug AS

->DebugConfigurations

wps2688.tmp

Step4:新建一个测试文件,配置串口波特率9600 单击Apply 再单击 Debug

wps2698.tmp

Step5:测试结果:核心板上2个LED三所

1.5本章小结

本章讲解了GPIO输出的简单使用,同事讲解了如何新建一个新的SDK工程,并且添加自己编写的C代码。并且讲解了如何把代码放到外部的DDR3内存中运行。经过本章的学习,读者以后可以自己编写SDK工程下的代码,并且可以把大规模的程序,放到DDR3内存中运行。