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

问题描述 投票:1回答:3

我想知道为串行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创建了一个引导加载程序,请任何人通知我。

提前谢谢,埃里克

fpga xilinx spi
3个回答
0
投票

我已经构建了bootloaders,但与你的两个不同之处:

  • 它们不会从比特流来自同一闪存设备中获取程序。
  • 我使用自定义代码来编程闪存,而不是使用影响。

如果它给你任何想法,这就是我做的:

我有一个单独的SPI闪存设备,我从中读取ELF文件,然后我随时解析并将相关的代码/初始化部分传输到DRAM中。没有理由说你的引导加载程序无法从与配置相同的闪存设备加载。

它不是一个完全灵活的ELF解析器,因为它假设这些部分的顺序与部分标题表报告它们的顺序相同,但这就是Microblaze工具生成文件的方式,所以它可以正常工作。

(并且不要忘记在将其编程为闪存之前从文件中删除调试信息!)


0
投票

它比所有这些都容易。

  1. 从SDK中,创建一个bootloader(srec_bootloader)
  2. 使用系统位文件和srec引导程序对FPGA进行编程。
  3. 从硬件平台获取download.bit文件
  4. 运行以下命令

impact -batch make_bpi_up.impact

xmcsutil -accept_notice -18 pi outfile.hex -o bootloader.bin

(上面的最后一个命令创建一个带有FPGA位文件和引导程序的可引导映像)

然后使用XSDK编程应用程序@引导加载程序指定的偏移量接下来,使用XSDK对引导加载程序@ 0x0进行编程 - 注意,当您从XSDK选择“程序闪存”时,您需要浏览到bootloader.bin并选择*而不是.bin; .elf; *。srec在浏览器窗口的文件类型过滤器中,这样你就可以选择bootloader.bin

如果您需要我澄清任何步骤,请告诉我。在下周将这个添加到我的博客w / screenshots的过程中。

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


0
投票

右键单击microblaze,单击关联ELF文件添加.elf文件并配置模式.generate bitstream。并将.bit转换为.mcs并下载文件..将.elf和.mcs文件存储到flash中

© www.soinside.com 2019 - 2024. All rights reserved.