为包含配置bitream和Microblaze软件的Xilinx Spartan-6创建可引导SPI闪存(PROM文件)的设计流程

| 我想知道为串行SPI Flash创建PROM文件(.MCS)的正确过程,该文件包括FPGA配置位流和Microblaze处理器要使用的软件。假设我的硬件和软件设计都已完成。 我正在使用Xilinx Spartan-6评估板SP605,它具有多个非易失性存储设备,并且我希望使用串行SPI Flash来存储FPGA比特流和需要加载到其中的Microblaze软件记忆。仅当Microblaze的代码驻留在内部BRAM中时,我才能实现此目的。如果我创建链接脚本,以便将代码或数据段放置在外部DDR3 RAM中,则它将失败。 -编辑- 好的,所以我尝试了几种不同的方法,我对我需要做的事情有了更好的了解,但仍然没有成功(顺便说一句,谢谢您对安迪的回复)。因此,我尝试了2种不同的方法。对于这两个文件,我首先将系统位流与bootloader程序合并,以生成一个运行良好的新.bit(download.bit)文件(当您在SDK中命中程序并选择Bootloader来加载BRAM时,它将data2mem调用为生成新的download.bit文件)。 第一种方法-BIN文件 一旦完成我的主程序(使用针对DDR RAM的链接脚本),我就调用mb-objcopy从.elf生成一个bin文件:
mb-objcopy -O binary program -R .vectors_reset -R .vectors.sw_exception -R vectors.interrupt -R .vectors.hw_exception dummy.elf dummy.b
然后,我使用iMPACT使用download.bit和dummy.b创建MCS文件。我将download.bit放置在SPI Flash的起始地址,并将dummy.b放在更下方(引导加载程序已指向该地址)。然后,我将MCS刻录到串行SPI FLash,重新启动,然后启动引导程序运行,并且应该将所有内容复制到DDR RAM,但是主程序不起作用。我在这里想念什么吗?如果我尝试使用iMPACT而不将主程序从.elf更改为BIN,则PC挂起(有时甚至必须完全重置计算机),并且我有一台速度非常快且配备内存的PC。 我使用的引导程序与Xilinx XAPP1146文档中链接的引导程序相同。 第二种方法-记录文件 除了使用相同的mb-objcopy命令生成SREC而不是BIN文件外,步骤几乎相同(这一次我不删除对BIN文件需要执行的任何扇区)否则会生成一个巨大的文件)。 我使用的引导程序是SDK软件所具有的一种。 请任何人让我知道您是否已成功为Microblaze创建了引导加载程序。 提前致谢, 埃里克     
已邀请:
我已经构建了引导加载程序,但是与您的有两个区别: 他们不会从与比特流相同的闪存设备中获取程序。 我使用自定义代码对Flash进行编程,而不是使用影响。 如果有任何想法,请按照以下步骤进行: 我有一个单独的SPI闪存设备,从中读取ELF文件,然后我对该文件进行了动态解析,并将相关的代码/初始化部分传输到DRAM中。虽然没有理由说您的引导加载程序无法从与配置相同的闪存设备中加载。 这不是一个完全灵活的ELF解析器,因为它假定各节的顺序与节头表报告它们的顺序相同,但这是Microblaze工具生成文件的方式,因此可以正常工作。 (并且不要忘记在将文件编程为闪存之前从文件中剥离调试信息!)     
比这一切都容易。 在SDK中,创建引导加载程序(srec_bootloader) 使用系统位文件和srec引导加​​载程序对FPGA进行编程。 从硬件平台获取download.bit文件 运行以下命令
impact -batch make_bpi_up.impact
xmcsutil -accept_notice -18 pi outfile.hex -o bootloader.bin
(上面的最后一个命令使用您的FPGA位文件和引导程序创建一个引导映像) 然后使用XSDK对应用程序@引导程序指定的偏移量进行编程 接下来,使用XSDK对Bootloader @ 0x0进行编程 -注意,当您从XSDK中选择\“ Program Flash \”时,您需要浏览至bootloader.bin并在文件类型过滤器中选择*而不是.bin; .elf; *。srec在浏览器窗口中,这样您就可以选择bootloader.bin 让我知道您是否需要我澄清任何步骤。下周将其添加到我的博客并附有屏幕截图。 make_bpi_up.impact文件包含以下内容
setMode -pff                                  
setSubmode -pffparallel                        
setPreference -pref StartupClock:Auto_Correction
addPromDevice -p 1 -size 32768
addDesign -version 0 -startaddress 000000
addDeviceChain -index 0
addDevice -p 1 -file download.bit 
generate -format hex -fillvalue FF -output outfile
quit
MacGyverQue     
右键单击microblaze,单击关联的ELF文件,添加您的.elf文件并配置模式.generate位流。并将.bit转换为.mcs并下载文件.. .elf和.mcs文件都存储在Flash中     

要回复问题请先登录注册