cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Visitor
Visitor
11,055 Views
Registered: ‎05-18-2015

QSPI XIP Vivado 2015

Hello,

 

I'm trying to get XIP (execute in place) working for a Microblaze executing the non-volatile code from a QSPI flash.

 

In order to do so i followed this AR : http://www.xilinx.com/support/answers/46503.html

 

I can get the flash.bin and volatile.elf but the tool "updatemem" refuse to update the BRAM blocks of the design.bit with the volatile.elf. The file download.bit is not created, here is the error message :

 

updatemem -force -meminfo \
/home/quantel/workspace/xip/xip.sdk/design_1_wrapper_hw_platform_0/design_1_wrapper.mmi \
-bit \
/home/quantel/workspace/xip/xip.sdk/design_1_wrapper_hw_platform_0/design_1_wrapper.bit \
-data /home/quantel/output_files/volatile.elf -proc design_1_i/microblaze_0 -out \
/home/quantel/workspace/xip/xip.sdk/design_1_wrapper_hw_platform_0/download.bit 

****** updatemem v2015.1 (64-bit)
  **** SW Build 1215546 on Mon Apr 27 19:19:00 MDT 2015
    ** Copyright 1986-2015 Xilinx, Inc. All Rights Reserved.

source /opt/Xilinx/SDK/2015.1/scripts/updatemem/main.tcl -notrace
CRITICAL WARNING: [Updatemem 57-154] Matching address space for code segment 140471200382978 not found. Code segment occupies [0x44A10000:0x44A1200F] 
ERROR: [Updatemem 57-153] Failed to update the BRAM INIT strings for /home/quantel/output_files/volatile.elf and /home/quantel/workspace/xip/xip.sdk/design_1_wrapper_hw_platform_0/design_1_wrapper.mmi. 
ERROR: [Common 17-39] 'update_mem' failed due to earlier errors.

I understand that the volatile.elf file has code segment outside address ranges provided by the .mmi files but this file is only populated by BRAM sections, generating an EMC controler or QSPI never polulates this file.

 

Maybe -force switch doesn't work ?

 

What am I missing ?

 

Regards,

 

bee

0 Kudos
10 Replies
Highlighted
Visitor
Visitor
10,873 Views
Registered: ‎06-29-2015

yeah!

   the problem I encountered  is  the same to yours!

 [Updatemem 57-153] Failed to update the BRAM INIT strings for C:/cheneyren/project/microblaze/ddr3_sys/ddr3_sys.sdk/ddr3_led/Debug/ddr3_led.elf and C:/cheneyren/project/microblaze/ddr3_sys/ddr3_sys.sdk/ddr3_cpu_wrapper_hw_platform_0/ddr3_cpu_wrapper.mmi. 

 

I prepared to run the software in ddr3sdram but it failed to generating download.bit !

so, I have lost the confidence for my life !!!

 

BRs,

cheney.ren 

0 Kudos
Highlighted
Observer
Observer
10,620 Views
Registered: ‎06-11-2015

I have exactly the same problem too.

Are Xilinx experts going to provide some information on the subject?

 

0 Kudos
Highlighted
Observer
Observer
10,594 Views
Registered: ‎06-11-2015

i have resolved my case. The SDK's linker script file lscript.ld has to be updated with correct target addresses.

 

0 Kudos
Highlighted
Adventurer
Adventurer
8,851 Views
Registered: ‎03-06-2015

how to update .mmi file? my mmi file contains design_1_i_microblaze_1_local_memory_lmb_bram_if_cntlr_0 and design_1_i_axi_bram_ctrl_0. but i have to run my elf file from ddr memory which is not in mmi file.so how to add this in mmi file
0 Kudos
Highlighted
Visitor
Visitor
8,307 Views
Registered: ‎08-26-2015

hii beequantel !

 

I am also facing the same problem..Did you solve your problem??

 

Thank you

0 Kudos
Highlighted
Visitor
Visitor
8,258 Views
Registered: ‎05-18-2015

Hello subhamani,

 

I didn't, i stopped digging into it, my software should be small enought to fit into the BRAM.

 

I already get a lot of troubles getting the XIP working on the configuration flash : http://www.xilinx.com/support/answers/65171.html

 

If my soft grow bigger i think i'll use DDR, in which i'm more confident.

 

You're welcome :)

0 Kudos
Highlighted
Newbie
Newbie
6,852 Views
Registered: ‎09-03-2016

I encountered this exact issue under Vivado 2016.2. I have both BRAM and DRAM in my project.  The linker was targeting DRAM for all sections by default not BRAM and that just wont work (bistream can't modify DRAM). I'm using a mircoblaze on a ARTY board so that's what I'll reference. I needed to open the linker script (lscript.ld in your scr folder) then in the Section to Memory Region Mapping frame select the microblaze_0_local_memory_ilmb_bram_if....  as the Memory Region from the drop down list. I've attached a screen shot of how I solved this.

 

If you try this you may need to click the Memory Region drop down arrow several time to see the ilmb_bram choice. It took me a bit of time and clicking as the GUI under Win10 is a bit persnickety.

 

Note that if you want to run your code out of DRAM you need to write a bootloader that will execute out of the BRAM on boot to copy the code from flash (or wherever) to DRAM then jump to the entry point in DRAM after you main app is loaded.

 

Happy Clicking!

linker.JPG
0 Kudos
Highlighted
Community Manager
Community Manager
6,816 Views
Registered: ‎07-23-2012

Can you please follow the flow from http://www.xilinx.com/support/documentation/application_notes/xapp1176-xip-axi-quad-spi-ipi.pdf and see if it helps?

-----------------------------------------------------------------------------------------------
Please mark the post as "Accept as solution" if the information provided answers your query/resolves your issue.

Give Kudos to a post which you think is helpful.
0 Kudos
Highlighted
Observer
Observer
4,329 Views
Registered: ‎02-02-2017

Hi Vtupikov (and all),

Can you elaborate please on what you mean by editing the target addresses? Or if anybody can please explain a little more that would be great.

I tried what erichughes had suggested but that solution worked on a different project that I was working on but have made sure that I now have selected the "ilmb_bram" type choice on this project as well.

After executing this command on a windows command prompt (once i had got into tcl mode though "vivado.bat -mode tcl")

updatemem -force -meminfo "msys_wrapper.mmi" -bit "msys_wrapper.bit" -data "bootloader_v8.elf" -proc msys_i/sys_microblaze -out "download_v8.bit"

My error (similar in fashion) is as follows

CRITICAL WARNING: [Updatemem 57-154] Matching address space for code segment 1 not found. Code segment occupies [0x80000000:0x800033AB]
ERROR: [Updatemem 57-153] Failed to update the BRAM INIT strings for bootloader_v8.elf and msys_wrapper.mmi.
ERROR: [Common 17-39] 'update_mem' failed due to earlier errors.

I've seen different variations of the command (for example using "--bit" instead of "-bit") but with the same results. After reading this thread it seems as though I need to edit the linker file perhaps? And thats why I am asking.

Any input would be greatly appreciated!
-m

0 Kudos
Highlighted
Observer
Observer
2,249 Views
Registered: ‎02-02-2017

Hi Vtupikov (and all),

Can you elaborate please on what you mean by editing the target addresses? Or if anybody can please explain a little more that would be great.

I tried what erichughes had suggested but that solution worked on a different project that I was working on but have made sure that I now have selected the "ilmb_bram" type choice on this project as well.

After executing this command on a windows command prompt (once i had got into tcl mode though "vivado.bat -mode tcl")

updatemem -force -meminfo "msys_wrapper.mmi" -bit "msys_wrapper.bit" -data "bootloader_v8.elf" -proc msys_i/sys_microblaze -out "download_v8.bit"

My error (similar in fashion) is as follows

CRITICAL WARNING: [Updatemem 57-154] Matching address space for code segment 1 not found. Code segment occupies [0x80000000:0x800033AB]
ERROR: [Updatemem 57-153] Failed to update the BRAM INIT strings for bootloader_v8.elf and msys_wrapper.mmi.
ERROR: [Common 17-39] 'update_mem' failed due to earlier errors.

I've seen different variations of the command (for example using "--bit" instead of "-bit") but with the same results. After reading this thread it seems as though I need to edit the linker file perhaps? And thats why I am asking.

Any input would be greatly appreciated!
-m

0 Kudos