whilebreak

FlashBoot XILINX EDK 第四课(精灵3开发板ISE14.7)

0
阅读(3202)

本教程官方论坛:www.osrc.cn 官方淘宝店铺:http://osrc.taobao.com 

FlashBoot XILINX EDK 第四课(精灵3开发板ISE14.7)

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

本实验的目标是学习XILINX SDK开发软件的使用,在第三课时基础上,实现从FLASH加载SOC程序到FPGA。加载过程分两部分,第一部分是加载FPGA硬件电路程序,由于FPGA硬件电路程序中有boot引导程序(C代码编写)保存在FPGA的BlcokRAM中,boot引导程序会再从FLASH中加载SOC部分的程序(C代码编写)。

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

本课程中,一些前面课程详细讲解的内容不再过多重复。

1、这里承接上一个课时的工程拷贝到BootFlash文件夹

2、启动工程->启动XPS添加SPI接口外设IP

wps937F.tmp

3、修改SPI接口为 SPI_FLASH

4、端口部分修改为

wps938F.tmp

5、分配地址空间

6、查看MSH文件,修改UCF文件

7、回到ISE 编译工程,并且启动SDK

8、新建一个boot工程

wps93A0.tmp

9、选择新建一个bootloader程序

wps93C0.tmp

10、右击boot_bsp 选择Board Support  Package Settings 做如下设置

wps93D1.tmp

wps93D2.tmp

11、本开发FLASH 为W25Q16因此选择serial_flash family 4 采用了AXI SPI方式因此serial_flash_interface设置1

wps93E2.tmp

12、替换bootloader.c文件 修改blconfig.h 文件中FLASH的地址 #define FLASH_IMAGE_BASEADDR  0x70000

13、保存编译

14、右击GPIOTest工程 找到properties 设置添加mb-objcopy -O srec GPIOTest.elf GPIOTest.srec 这句代码把.elf文件转为srec文件,srec文件后面会被下载到flash

wps93E3.tmp

15、设置BootFlash 引导程序可以在FPGA BRAM中运行,如下图,设置是吧CPU电路和boot.elf可执行程序打包为download.bit文件.这个过程只是要产生bit文件,下载器不是必须要插在PC上。

wps93F4.tmp

16、启动IMPACT程序,配置FLASH

wps9404.tmp

17、找到路径添加第一个bit文件download.bit

wps9405.tmp

18、弹出对话框问是否还要添加设备文件,单击NO,之后弹出是否添加数据文件单击YES

wps9406.tmp

19、设置FLASH起始地址

wps9417.tmp

20、添加刚才准备好的srec文件

wps9418.tmp

21、之后又弹出是否添加数据文件对话框单击NO

22、FLASH的地址空间分配

wps9429.tmp

wps942A.tmp

23、产生MCS文件

wps943A.tmp

24、产生的mcs文件

wps943B.tmp

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

wps945B.tmp

26、我们的FLASH 型号为w25q64bv/cv

27、下载完成后重新通电,可以看到串口打印出了加载过程,由于串口速度慢,整个加载过程用了5分钟左右,如果运用到工程方面,显然时间太长了,可以注释掉bootloader.c中#define VERBOSE不要打印信息提高速度

wps946C.tmp

实验效果

串口打印boot过程知道成功

LED 实现流水灯

当按下按钮3 串口打印出 button3 down

当按下按钮4 串口打印出 button4 down