赛灵思
直播中

李海

8年用户 164经验值
私信 关注
[问答]

write_cfgmem命令不生成多启动Mcs怎么回事

嗨,
我在Vivado 2014.2中遇到问题,当我尝试使用以下命令创建.mcs时:
write_cfgmem -format mcs -interface SPIX4 -size 32 -loadbit“up 0 D:/multi_boot/bit_files/multi_boot_golden.bit up0x01000000 D:/multi_boot/bit_files/multi_boot_update.bit”D:/multi_boot/bit_files/golden.mcs
错误:[Vivado 12-3740] SPIX4接口不支持菊花链位文件。
我想知道我犯的错误在哪里?
我想知道它是为多重引导生成mcs的正确方法。
谢谢,
K Nagarjuna

回帖(10)

刘鹏

2020-6-1 11:57:45
nagarjuna.k@mistralsolutions.comGreat!
请关闭此主题
-Pratham ------------------------------------------------
----------------------------------------------请注意 - 请
如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用并回复导向的帖子。感谢K-
--------------------------------------------------
-----------------------
在原帖中查看解决方案
举报

刘鹏

2020-6-1 12:09:12
nagarjuna.k@mistralsolutions.com您需要应用所有SPI相关约束。
应用所有约束并重新运行比特流。
-Pratham ------------------------------------------------
----------------------------------------------请注意 - 请
如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用并回复导向的帖子。感谢K-
--------------------------------------------------
-----------------------
举报

李铃华

2020-6-1 12:16:19
elow是使用基于SPI SREC引导加载程序的MCS映像从串行闪存启动“外设测试”应用程序的过程。
从SDK创建SPI SREC引导加载程序应用程序。
在SREC引导加载程序应用程序源中,更改blconfig.h中的地址:#define FLASH_IMAGE_BASEADDR例如,如果Vivado项目中的Flash基址(检查地址编辑器)是0xC2000000并且您想要给出0x00C00000的偏移量,那么
FLASH_IMAGE_BASEADDR将为0x00C00000
更改BSP设置包括xilisf(Xilinx在系统和串行闪存库)
重建应用程序。
现在再创建一个应用程序,例如SDK中的外围测试 - 链接到DDR(在链接器脚本中确保此应用程序从DDR执行)
将生成的外围测试精灵转换为SREC格式(mb-objcopy -O srec)
使用Vivado中的write_cfgmem将外围SREC文件转换为MCS格式(MCS中SREC文件的偏移量应该是blconfig.h中指定的偏移量)对于FLASH_IMAGE_BASEADDR为0xC2C00000的上述情况,创建peripheral_test.mcs文件的命令将是
:write_cfgmem -format mcs -size 128 -checksum FF -interface spix4 -loaddata“up 0x00C00000 /path/to/peripheral_test.srec”-force peripheral_test
使用Vivado将theperipheral_test.mcs文件编程到闪存上(注意:在2015.1 SDK中,您可以从bootgen创建MCS文件,SDK也支持编程SPI闪存 - >仍然是intest阶段)
使用SDK通过程序FPGA从system.bit创建download.bit
选择Bitstream(system.bit)和ELF文件来初始化BRAM(步骤5中构建的srec bootloader精灵)
编程FPGA
配置FPGA后,SREC引导加载程序运行,将映像从闪存复制到DDR,并执行外设测试应用程序。
注意:在步骤8中,您还可以添加download.bit(将在步骤11中创建)以创建单片mcs映像,该映像将配置FPGA以及加载用户应用程序。
write_cfgmem -format mcs -size 128 -checksum FF -interface spix4 -loaddata“up 0x0 /path/to/download.bitup 0x00C00000 /path/to/peripheral_test.srec”-force peripheral_test
另外,不要忘记在SPI SREC Bootloader的BSP设置中为serial_flash_family(基于您具有的串行闪存类型)和serial_flash_interface选择适当的值:
谢谢和RegardsBalkrishan -----------------------------------------------
---------------------------------------------请将帖子标记为
一个答案“接受为解决方案”,以防它有助于解决您的查询。如果一个帖子引导到解决方案,请给予赞誉。
举报

李铃华

2020-6-1 12:22:40
要在SPIx4或SPIx2模式下正确生成BIN或MCS,应在位文件中正确设置位流属性“SPI_BUSWIDTH”:
set_property BITSTREAM.Config.SPI_BUSWIDTH 4 [current_design]
一种方法是将Tcl命令添加到.xdc并重新运行实现。
没有重新运行的另一种更方便的方法是打开已实现的设计,并在Tcl控制台中连续输出以下命令: 
1.set_property BITSTREAM.Config.SPI_BUSWIDTH 4 [current_design] 
2.write_bitstream xxx.bit(确保不要单击“生成比特流”按钮) 
3.write_cfgmem -format mcs -interface SPIx4-sizexxx-loadbit“up 0x0xxx.bit”-filexxx.mcs
应该成功生成mcs文件。
谢谢和RegardsBalkrishan -----------------------------------------------
---------------------------------------------请将帖子标记为
一个答案“接受为解决方案”,以防它有助于解决您的查询。如果一个帖子引导到解决方案,请给予赞誉。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分