在了解了EDK的基本概念以及完成软件安装后,接下来介绍如何利用EDK来开发嵌入式系统。首先需要利用基本系统创建器(Base System Builder,BSB)向导来快速创建一个设计,然后再对其进行定制。BSB是帮助用户快速建立系统的软件工具。当用户希望创建一个新的系统时,XPS会自动调用BSB。在BSB中,可以创建工程文件、选择开发版、选择和配置处理器以及I/O设备,添加内部外围设备,生成系统报告等。BSB向导会自动完成以下工作:
1.生成顶层工程文件(.xmp文件)
Xilinx微处理器工程(Xilinx Microprocessor Project,XMP)文件是所开发嵌入式系统的顶层文件描述。所有XPS工程信息都在XMP文件中得以保存,此文件包括微处理器硬件规范(Microprocessor Hardware Specification,MHS)和微处理器软件规范(Microprocessor Software Specification,MSS)文件的存储位置等,有关MHS和MSS文件将在后面内容进行阐述。XMP文件同时也包括了XPS将进行编译的C源文件和头文件的信息,以及SDK编译的可执行文件的信息。
2.选择/新建电路板
这里包括两个选项:指定的目标板和用户自己设计的板。如果选择前者,则BSB允许用户选择板上的外围设备,且其FPGA端口可以自动地匹配板子,同时也创建一个可以下载到板子上运行的完整平台和测试应用;而对于后者,用户可以基于一些已有的处理器核和外围设备核,按照需要添加处理器和外围设备。
3.选择并配置处理器
可以选择的处理器有MicroBlaze和PowerPc。同时还可以选择:器件类型,封装,速率等级,参考时钟频率,处理器总线时钟频率等等。
4.选择并配置多个I/O接口
BSB可以决定用户预定义板子上,哪些外部存储和I/O设备是有效的。并且对于指定的器件还可以选择:波特率,外围设备类型,数据比特数,校验等。
5.添加内部外围设备
外围设备包括芯片上存储控制器和计时器等。BSB允许用户添加需要的外围设备。
6.设定软件
可以在BSB中对标准的输入输出器件进行说明,用户还可以选择希望XPS产生的C应用样例。每个应用程序都包括一个链接脚本。这里用户所选择的应用样例包括存储测试、外围设备测试或者两者皆有。
7.查看创建的系统
完成以上选择后,BSB将显示已经生成的系统。用户可以选择:产生这个工程,或者是返回到前述步骤进行设置的修改。下面以加载Xilinx Spartan_3E_RevD开发板(该开发板的配置文件存放在EDK安装目录下的“board\Xilinx\boards\Xilinx_Spartan3E_RevD\data”文件夹中)为例,详细介绍利用BSB新建工程的全部流程。
例4-1:通过BSB向导建立Xilinx Spartan_3E_RevD开发板的工程。本例的设计源文件位于附带光盘的chapter4/exp-1路径中。
(1)启动XPS。当双击XPS的快捷方式后,BSB向导就会自动打开,其界面如图4-31所示。选中“Base System Builder Wizard(recommended)”选项,并点击“OK”按钮。

图4-31 BSB向导的启动画面
(2)选择工程路径。在弹出的提示界面的“Project File”下的输入框中填入工程存放路径,或单击“Brouse”按钮来选择合适的工程路径。在本例中,选择工程目录为“G:/Work/EDK/edkdemo/”,并将工程命名为edkdemo,如图4-32所示。单击“OK”按钮,在弹出的对话框中选择“I would like to create a new design”,并单击“Next”按钮。

图4-32 工程存放路径选择界面
(3)在弹出的板型选择对话框中,在“Select board”选中“I would like to create a system of the following development board”,在“Board vendor”的下拉框中选择Xilinx,在“Board name”的下拉框中选择Spartan-3E starter board,在“Board revision”的下拉框中选择D,如图4-33所示。如果使用用户自定义的开发板,则选择“I would like to create a system for a custom board”。单击“Next”。

图4-33 开发板选择界面
(4)进入处理器选择界面。对于内部集成了PowerPC内核的FPGA芯片(Virtex-2 Pro以上部分型号)可以选择PowerPC或Microblaze,否则只能选择Microblaze。由于本例选用的是FPGA为Spartan-3E系列,不支持PowerPC,所以只能选择Microblaze软核,如图4-34所示。点击“Next”按钮。
(5)配置处理器。配置Microblaze的参考时钟、总线处理时钟频率、处理器调试接口以及片上存储空间的大小,都使用默认值,如图4-35所示。时钟频率和参考时钟和硬件设计保持一致,定为50MHz。“On Chip H/W Debug Chain”就是利用JTAG端口进行处理器的调试。片上存储器由FPGA芯片中内嵌的块RAM组成,选定大小为8KB。然后点击“Next”按钮。MicroBlaze和PowerPC的工作时钟都是系统时钟经过DCM模块倍频后得到的,在一般情况下,建议MicroBlaze的时钟不超过100MHz,PowerPC的时钟不超过250MHz。

图4-34 处理器选择界面

图4-35 处理器参数配置界面
(6)添加I/O接口。开发板配置文件选择了RS_232_DCE、RS_232_DTE、LED_8bits、DIP_Switches_4bits、Buttons_4bits、Flash_16M*8、DDR_SDRAM_32M*16以及Ethernet_MAC等I/O接口,如图4-36到4-38所示。各个I/O接口将在后文详细介绍。如果是用户自定义电路板,操作界面如图4-37所示,用户点击右上角的“Add Device”按钮,然后在弹出的对话框的“IO Interface Type”的下拉框中选择所需的I/O接口模块,再点击“OK”按钮,该过程每次只能添加一种I/O接口,如有多个需要反复操作。

图4-36 可配置IO端口列表(1)

图4-37 可配置IO端口列表(2)

图4-38 可配置IO端口列表(3)
(7)添加内部外围设备。如果开发板的部分外设在XPS中并没有提供,那么就需要通过用户通过HDL语言实现自定制底层接口逻辑,再将其作为外设导入到XPS中。由于Spartan3E Starter开发板上的设备在XPS库中都能找到,因此可以跳过这一步骤。4.4.6节将详细介绍如何实现定制外设的底层接口逻辑以及如何添加到XPS中。
(8)软件建立。如图4-39所示,该步骤需要完成下列几个工作:选择STDIN/OUT器件,这里注意RS232_Uart外围设备为所选之一;Boot存储器为plb_bram_if_cntlr_1;存储器和外围设备的测试都使用默认的应用测试。软件测试为所选外围设备发送或接收信息。微处理器得到外围设备的状况后,通过STDIN/STDOUT设备发出报告。

图4-39 软件建立向导
(9)配置存储器和外围设备的测试应用,如图4-40所示。在这个工程中,将指令、数据和栈/堆的存储位置设置为plb_bram_if_cntlr_1。这样,利用BRAM控制器“_if_cntlr_1”,程序代码在FPGA“plb_bram”里的块RAM之外运行。

图4-40 配置存储器和外围设备的测试应用
点击查看:图4-41 BSP给出的系统信息
(10)创建系统。在选择并配置系统各个部分后,用户就可以对BSB给出的系统进行检查。用户可以返回到之前的任何一步进行修改。检查后,点击“Generate”产生系统。BSB给出的系统信息如图4-41所示,通过比较可以看出,其和开发板硬件是匹配的。
(11)设计生成。在生成上述设计后,系统的目录结构同时也得以创建。HDL和其它文件根据用户的选择而生成,处理器,总线和外围设备以及其它逻辑实例间的连接也得到了处理。点击“Finish”,XPS即与所创建的系统相关联。至此,就完成了一个新系统工程的创建过程。


