我想知道为串行SPI闪存创建PROM文件(.MCS)的正确步骤,该文件既包括现场可编程门阵列配置位流,也包括Microblaze处理器要使用的软件。这是假设我的硬件和软件设计都完成了。
我使用的是Xilinx Spartan-6评估板SP605,它有几个非易失性存储设备,我希望使用串行SPI Flash来存储需要加载到内存中的FPGA位流和Microblaze的软件。只有当Microblaze的代码驻留在内部BRAMs中时,我才能做到这一点。如果我创建链接脚本,使其将代码或数据段放在外部DDR3内存中,则会失败。
-编辑--
好了,我已经尝试了几种不同的方法,我对我需要做的事情有了更好的理解,但仍然没有成功(顺便说一句,谢谢你的回复,Andy)。所以,我尝试了两种不同的方法。对于它们,我首先将系统位流与引导加载程序合并,以生成一个新的.bit ( download.bit )文件,该文件运行良好(当您点击SDK中的程序并选择引导加载程序来加载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然后,我使用download.bit和dummy.b用iMPACT创建了一个MCS文件。我将download.bit放在SPI Flash的起始地址,再往下放dummy.b (引导加载程序已经指向该地址)。然后我烧录MCS到串行SPI,重新启动,引导加载程序运行,并假设复制所有的DDR FLash,但,主程序不工作。我是不是漏掉了什么?如果我在不将主程序从.elf更改为BIN码的情况下使用iMPACT,PC就会挂起(有时我甚至必须完全重启计算机),这样我就有了一台速度非常快、配备了内存的PC。
我使用的引导加载程序与Xilinx XAPP1146文档中链接的引导加载程序相同。
第二种方法- SREC文件
步骤几乎相同,除了我使用相同的mb-objcopy命令生成SREC而不是BIN文件(这一次我没有删除任何扇区,这是我需要为BIN文件做的,否则它将生成一个巨大的文件)。
我使用的引导加载程序就是SDK软件所拥有的那个。
请任何人让我知道,如果你已经成功地创建了一个引导程序的Microblaze。
先谢谢你,埃里克
发布于 2012-02-09 23:48:59
我已经构建了引导加载程序,但与您的引导加载程序有两点不同:
,
如果它给了你任何想法,这是我做的:
我有一个单独的SPI闪存设备,我从其中读取ELF文件,然后动态解析该文件,并将相关的代码/初始化部分传输到DRAM中。但是,您的引导加载程序没有理由不能从与配置相同的闪存设备加载。
它不是一个完全灵活的ELF解析器,因为它假设节的顺序与节标题表报告它们的顺序相同,但这就是Microblaze工具生成文件的方式,所以它可以正常工作。
(在将文件编程到闪存之前,不要忘记从文件中去掉调试信息!)
发布于 2013-10-10 04:47:33
这比这一切都简单得多。
从SDK中,创建包含系统位文件和srec的引导加载程序(srec_bootloader)
impact -batch make_bpi_up.impact
xmcsutil -accept_notice -18 pi outfile.hex -o bootloader.bin
(上面的最后一个命令创建了一个带有FPGA位文件和引导加载程序的可引导映像)
然后使用XSDK在引导加载程序指定的偏移量下对应用程序进行编程。接下来,使用XSDK对引导加载程序@ 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
quitMacGyverQue
发布于 2017-01-30 15:56:21
右键单击microblaze,单击associate ELF file添加您的.elf文件并配置模式.generate位流。并将.bit转换为.mcs并下载文件...elf和.mcs文件都存储在闪存中
https://stackoverflow.com/questions/5652704
复制相似问题