我想知道为串行SPI闪存创建PROM文件(.MCS)的正确程序,其中包括FPGA配置比特流和Microblaze处理器使用的软件。这是假设我的硬件和软件设计都已完成。
我正在使用Xilinx Spartan-6评估板,SP605,它有几个非易失性存储器件,我希望使用串行SPI闪存来存储FPGA比特流和需要加载的Microblaze软件记忆。只有当Microblaze的代码驻留在内部BRAM中时,我才能实现这一目标。如果我创建链接脚本使其将代码或数据部分放在外部DDR3 RAM中,则会失败。
- 编辑 -
好的,所以我尝试了几个不同的东西,我对我需要做的事情有了更好的理解,但仍然没有成功(顺便说一下,谢谢你的答复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
然后我使用iMPACT创建和使用download.bit和dummy.b创建MCS文件。我将download.bit放在SPI Flash的起始地址,将dummy.b放到另一个位置(引导加载程序已经指向该地址)。然后我将MCS刻录到串行SPI FLash,重新启动并且引导加载程序运行并且据称将所有内容复制到DDR RAM,但是,主程序不起作用。我在这里错过了什么吗?如果我尝试使用iMPACT而不将主程序从.elf更改为BIN,则PC会挂起(有时我甚至必须完全重置计算机)并且我有一台非常快速且配备内存的PC。
我使用的引导加载程序与Xilinx XAPP1146文档中链接的相同。
第二种方法 - SREC文件
步骤几乎相同,只是我使用相同的mb-objcopy命令生成SREC而不是BIN文件(这次我不删除任何扇区,我需要为BIN文件,否则会生成一个巨大的文件)。
我使用的引导程序是SDK软件的引导程序。
如果您已成功为Microblaze创建了一个引导加载程序,请任何人通知我。
提前致谢, 埃里克
答案 0 :(得分:0)
我已经构建了bootloaders,但与你的两个不同之处:
如果它给你任何想法,这就是我的工作:
我有一个单独的SPI闪存设备,我从中读取ELF文件,然后我将其动态解析并将相关的代码/初始化部分传输到DRAM中。没有理由说你的引导加载程序无法从与配置相同的闪存设备加载。
它不是一个完全灵活的ELF解析器,因为它假设这些部分的顺序与部分表头报告它们的顺序相同,但这就是Microblaze工具生成文件的方式,所以它可以正常工作。
(并且不要忘记在将其编程为flash之前从文件中删除调试信息!)
答案 1 :(得分:0)
这比所有这些都容易。
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 in浏览器窗口中的文件类型过滤器,这样您就可以选择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
答案 2 :(得分:0)
右键单击microblaze,单击关联ELF文件添加.elf文件并配置模式.generate bitstream。并将.bit转换为.mcs并下载文件.. .elf和.mcs文件都存储在flash中