实验操作步骤说明siga-s16开发板之bootloader_第1页
实验操作步骤说明siga-s16开发板之bootloader_第2页
实验操作步骤说明siga-s16开发板之bootloader_第3页
实验操作步骤说明siga-s16开发板之bootloader_第4页
实验操作步骤说明siga-s16开发板之bootloader_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Siga-S16 FPGA 开发板之 Bootloader 实验Rev. 1.00Rev1.001版本Rev1.002版本时间作者描述Rev0.012012-7-31LuoVer通过本篇,您可以了解如何编写Bootloader程序,了解PROM文件的生成及FPGA的SPI FLASH复用配置的方法。本文档分为以下几个部分:一、Bootloader 的原理二、Bootloader 引导程序的设计三、SPI FLASH 的 PROM 文件生成和Rev1.003一、Bootloader的原理先来说明一下Bootloader。 简单地说,BootLoader就是在应用程序运行之前运行的一段小程序。系统

2、在上电或复位时通常都从地址0 x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。通过这段小程序,可以初始化硬件设备,建立内存空间的图,从而将系统的软硬件环境带到一个合适的状态,以便为调用应用程序准备好正确的环境,并同时提供基本输入、输出系统功能和程序调试功能。在Siga-S16的FPGA开发板上,SPI Flash既用来保存硬件配置文件及Bootloader引导程序还需要用来保存用户的应用程序。在加载阶段,FPGA自动从SPI Flash中硬件配置bit文件及Bootloader程序进行配置到片内BRAM中运行。当完成加载后,FPGA逻辑启动,通过运行B

3、ootloader程序SPI Flash中的用户应用程序,并写到外部DDR2的相应位置,最后Bootloader程序切换指令指针到应用程序开始运行的指定位置,在外部的DDR2中开始执行应用程序。下图给出了本系统中复用SPI Flash系统结构图,Bootloader程序实现从SPI Flash中用户应用程序到DDR2中,然后在DDR2中运行。Rev1.004二、Bootloader引导程序的设计工程代码编写之前要求对硬件器件有所了解,主要需要了解FPGA所需要的配置文件空间,还有Flash到0 x结构。在本Siga-S16开发板中,SPI FF。其中Spartan6的配置文件大小为3FLASH

4、的容量为1Mbit,空间为从0 x00000714 312位,所以配置文件占用SPI FLASH的存空间用来存放应用程序代码。为了简单起见,储空间为从0 x00000到0 x715a1。剩余的FLASH在本实验中可以把应用程序的代码放置在0 x80000到0 xFF的SPI FLASH空间里。因为在本实验里bootloader的主要功能是从SPI FLASH中拷贝应用程序的代码到DDR2 SDRAM中,再将地址指针指向内存的应用程序址,使其从此处开始运行程序。应用程序是以SREC文件首先需要了解一下SREC文件格式。格式在SPI FLASH中的,在这里SREC文件格式SREC格式是一种FLAS

5、H格式的编程文件,全称Srecord,SREC格式是Motorola公司制定的一种烧写格式标准。SREC文件是描述地址与数据的文件,以下给出了SREC文件的具体格式.一个完整的MOTOROLA S-Record格式数据包含如下区域: 各字段的意思分别如下:标示的类型,该字段占据1-byte。它可以有如下数值:“S0”,“S1”,“S2”,“S3”,“S5”,“S7”,“S8”,“S9”。描述信息“S0”-“S1”,“S2”,“S3” -的数据。这三者的区别在于地址(address)的长度不同,S1为2-byte,S2为3-byte,以及S3为4-byte。 “S5”- 包含了“S1”, “S2

6、”, “S3”的信息。“S7”,“S8”,“S9” - 确定程序的开始地址。这三者的区别也在于(address)的长度不同,S9为2-byte,S8为3-byte,以及S7为4-byte。:标示了数据的长度,确切地说,是 , 和这三个字段的byte的个数。该字段占据1-byte。:标示了数据写入的起始地址。该字段的长度取决于的取值。:标示了的数据。该字段占据的byte个数可以这样计算:的值字段的长度(取值为2、3、4) - 1(字段的长度)。:标示校验位,占据1-byte。该数据可以由和的数据累加然后每 bit取反获得。以一条数据S30A格式作为例子:CFS3是的格式()。Rev1.0050A

7、是长度(),为十六进制,标识有10个byte。因为两个十六进制才是1-byte,所以 CF的长度为10而不是20.换句话说,这数据列应该如此表示:80 10 00 9303 00 00 00 00 CF。因为type是S3,所以地址()占4-byte,因此需要写入的地址为:0 x80100093。既然已经知道了地址,那么数据()很显然就是0 x0300000000了。最后的1-byte就是校验位()。例子数值由此得来:0 xFF - (0 x0A + 0 x80 + 0 x10 + 0 x00 + 0 x93 + 0 x03 + 0 x00 + 0 x00 + 0 x00 + 0 x00) &

8、 0 xFF)Bootloader程序编写在SDK的开发环境里在这里为Bootloader新建一个工程,操作方式如下图所示,菜单FileNewXilinx C Project在工程向导界面,红圈处输入项目名称,我将其修改为 Bootloader 工程模版。bootloader,红圈 2 处选择 SRECRev1.006选择an existing Board Support Package,如下图的红色圈圈部分。Rev1.007完成工程向导。回到开发环境后在工程窗口会出现bootloader的工程目录:因为要编写的是SPI FLASH的bootloader引导程序,跟用SDK的bootloade

9、r模版生成的有些不同。所以需要在工程里添加SPI FLASH相关的.c程序和.h头文件,并删除一些不需要的程序文件。添加和删除后的程序文件如下:下面对这些程序作简单的说明;三个.c的程序文件:Bootloader.cmand.c Srec.c-为bootloader主程序。 SPI FLASH的读驱动程序。SREC文件格式的程序。三个.h的头文件:mand.h Srec.h Xps_spi_drives.h-定义mand.c中使用的宏。定义bootloader.c 和srec.c中使用的宏和类型。定义SPI接口的函数和宏。一个.ld的连接文件: Lscript.ld-此文件不用修改,模版已经定

10、义bootloader的代码及数据都在FPGA的BRAM中运行。Rev1.008接下来,来编写修改程序,在每个程序的代码中我已经添加了中文说明,大家很容易了解每部分程序的功能。我在这里不再对代码作详细介绍。先来修改bootloader.c文件,此程序实现从SPI FLASH中拷贝应用程序代码到DDR2 SDRAM中,再开始运行应用程序。修改后的程序如下:Rev1.009Rev1.0010接下去编写mand.c文件,在这程序中主要实现SPI接口的初始化及FLASH的读操作。编写好后的程序如下:Rev1.0011接下去修改srec.c文件,此程序对从SPI FLASH读出的srec格式的一行数据进

11、行到地址,数据,长度等信息。修改好后的程序如下:,得Rev1.0012Rev1.0013Rev1.0014再来编写下:mands.h头文件,此文件中定义了SPI FLASH的相关信息。编写后的文件如Rev1.0015再修改srec.h头文件,此头文件中定义了srec.c和bootloader中所需要用到的常量和数据类型的相关信息。修改后的文件如下:Rev1.0016最后编写xps_spi_drives.h头文件,此头文件中定义了对SPI接口的操作函数和一些常量定义。修改后的文件如下:Rev1.0017到这里所有的程序都编写完成了,先保存工程再编译一下。没有问题就可以进入下一步FLASH的配置和

12、程序的调试了。三、SPI FLASH的PROM文件生成和在这一节,需要把FPGA的硬件比特流配置文件和应用程序的代码合并成一个SPI Flash的文件。在这里需要做以下几个步骤来实现:1.2.把应用程序转换为srec代码格式文件。把bootloader程序初始化到Microblaze系统的BRAM中,再生成FPGA最终的比特流配置文件 download.bit。3.4.合并这两个文件(download.bit和应用程序的srec文件)为一个SPI FLASH MCS文件到SPI FLASH中。的MCS文件。下面我对上面的这四个步骤逐一做一个讲解:把应用程序转换为srec代码格式Rev1.001

13、8这里选用在“Siga-S16 开发板之LED实验”一文中的LED测试程序o_led作为本次实验的应用程序。把LED测试程序转换成Srec格式的方法如下:在SDK开发环境选择菜单Xilinx Tools - Program Flash在弹出的Program Flash Memory框的ImageFile一栏中选择o_ledDebug目录下的o_led.elf文件,再选中”ConverFtobootloadableSRECformatandprogram”。在Console窗口会显示生成srec文件的信息及其放置的目录。Rev1.0019把bootloader程序初始化到Microblaze系统

14、的BRAM中,再生成FPGA最终的比特流配置文件。在EDK开发环境选择菜单Project - Selecf File.。在弹出的Selecf file框的Choose Implemenion ElfFile一栏中选择bootloaderDebug目录下的bootloader.elf文件, 再选OK完成。这时bootloader程序已经加到BRAM中,需要在EDK重新生成硬件比特流文件。选择EDK菜单的Device Cinfiguration - Update Bitstream 开始生成download.bit后的信息在Console窗口显示如下:文件。生成完成Rev1.0020其中这个生成的

15、download.bit文件是存放在EDK工作目录的implemenion的文件夹里。合并这两个文件(硬件比特流文件和应用程序的srec文件)为一个SPI FLASH的文件。打开Xilinx ISE界面:DesignSuite13.1ISEDesignToolsTools下的iMPACT,打开后显示如下选择Preparea PROMFile这一项后点击OK。再在下图弹出的PROMFile Formatter界面中的三个Step依次选择如下:图中的为输入将要生成PROM的文件名,我这里已经把它改名为Boot_Led_Test。上图的处Rev1.0021要选Yes,因为除了硬件配置文件外,还要添加

16、LED测试的应用程序代码。点击OK后弹出AddDevice文件的消息窗口,直接点击OK。在之后弹出的Add “打开”按钮。Device文件的窗口选择前面在EDK中生成的download.bit文件,再点击在之后弹出的AddDevice文件的消息窗口,直接No。在之后弹出的AddData文件的消息窗口,选择Yes。Rev1.0022在之后弹出的Revi窗口输入需要放置Data文件的起始地址,因为硬件配置比特流文件占用00 x715A0,所以把应用程序的代码放置在起始地址为0 x80000的地方。在之后弹出的Add Data文件的窗口选择击“打开”按钮。前面在SDK中生成的应用程序的srec格式文

17、件,点在之后弹出的Add Data文件的消息窗口,选择No。程序会弹出FLASH ROM的地址分配列表,这里不需要修改,点击OK完成。Rev1.0023ISE iMPACT界面显示如下SPI FLASH配置完成后的空间分配示意图。因为o_led的应用程序很小,它只占用了很小的FLASH空间。双击ISE iMPACT左边iMPACT Proses界面的“Generate File.”,生成MCS文件。MCS文件生成成功后在界面会显示“Generate Succeeded” 的信息。Rev1.0024编程MCS文件到SPI FLASH中对SPI FLASH进行编程时,首先要把开发板上的拨码开关设置

18、为M0:ON, M1:Off,MASTER SPI MODE。如果你已经连接了器。可以使用 ISE iMPACT 来检测一下 JTAG 的连接,双击 iMPACTFlows 界面下的 Boundary Scan 选项:再在 Boundary Scan 界面上右击鼠标,选取 InitializeChain 选项:如果出现以下的界面说明已经检测到 JTAG 链的 FPGA。选择框的 No 按钮:Rev1.0025双击下图红圈处的 SPI/BPI 接口,添加 SPI FLASH 的编程文件,在弹出的 Add PROM File 窗口选中刚刚生成的 Boot_Led_Test.mcs 文件,.然后点击打开:Rev1.0026在弹出的 Selectached SPI/BPI 界面中选择正确的 SPIFLASH 型号 M25P80,然后点击 OK.现在界面上 FPGA 的 SPI 接口上会出现 FLASH 的图示:只要选中 FLASH 图标,然后右击选择 ProgramRev1.0027在接下来弹出的 Device FLASH 进行编程了。ProgrammingP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论