第三章 SOC Run LED
0赞本教程是基于南京米联电子科技有限公司 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 如图
Step5:设置GPIO的位宽,这里只是简单地设置2,驱动2位GPIO
Step6:修改名字为LED 并且连接到axi4lite_0
Step7:把时钟连接到系统时钟,并且把GPIO连接到外部IO
GPIO_IO_O为输出、GPIO_IO_I为输入、GPIO_IO_T为三态输出、GPIO_IO为可以配置为输入或者输出。
Step8:查看外部端口部分
Step9:查看地址空间的分配
Step10:添加GPIO部分的管脚约束
Step11:返回ISE进行编译
1.2编译工程
Step1:双击下图红色方框内,重新产生顶层文件
Step2:右击选择添加拷贝的UCF文件
Step3:拷贝UCF文件
Step4:双击下图框选位置,进行编译
Step5:修改SDK工程的路径(读者自己指定文件相对路径)
1.3 SDK开发
Step1:新建工程为Run_Led
Step2:这次新建一个空的工程
Step3:右击添加main.c主函数
Step4:添加main.c主函数
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
把代码,数据,堆栈全部设置到在DDR3内存中运行
1.4下载及调试
Step1:准备好开发板,插上下载器,记住USB线要插上,并且通电,由于拍摄时间问题,本没有插上。
Step2:下载SOC硬件电路到FPGA
35、ISE14.7会自动识别需要下载的文件
Step3:右击工程
->Debug AS
->DebugConfigurations
Step4:新建一个测试文件,配置串口波特率9600 单击Apply 再单击 Debug
Step5:测试结果:核心板上2个LED三所
1.5本章小结
本章讲解了GPIO输出的简单使用,同事讲解了如何新建一个新的SDK工程,并且添加自己编写的C代码。并且讲解了如何把代码放到外部的DDR3内存中运行。经过本章的学习,读者以后可以自己编写SDK工程下的代码,并且可以把大规模的程序,放到DDR3内存中运行。