We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

Showing results for 
Search instead for 
Did you mean: 
Registered: ‎01-20-2017

Tracking MicroBlaze instruction insert exception

We are developing a custom PCB that is designed to take in DisplayPort video into a Kintex 7 FPGA
(p/n xc7k160tffg676-2).  The board will eventually include DDR memory - however, we are building up our board in stages and I'm trying to get the project to run using only local BRAM memory. 

- To make sure there's enough space reserved for the program and the heap and stack, I've set the memory addresses for the data and instructions parts of BRAM to be 1 Megabyte, as shown in this image from the Vivado project.

bram_addresses.PNGBRAM addresses

Upon building the software project, SDK reports the size as 504072 bytes. 

mb-size dprx.elf  |tee "dprx.elf.size"
   text	   data	    bss	    dec	    hex	filename
  78474	    920	 424678	 504072	  7b108	dprx.elf

And I've set the heap and stack to each be 180 kilobytes in size.  So I believe everything should fit within the BRAM memory that I have reserved. 

However, when I begin to 'Debug as' the project, I end up stepping through the code and as I get to (seemingly) random points in the execution, I get the following error in the Disassembly window:

insert_exception_error.PNGMicroBlaze instruction insert exception

Based on other posts on the forum, I thought this might have been due to bad interrupts in the system and I've tried to disconnect different interrupts and re-run - but there does not seem to be a guaranteed correlation between interrupts and seeing this error.  Is there a way to track down exactly which instruction is causing this error?  Do I have to decode the Disassembly window to figure it out? Is there an easier way?

Or am I not reserving the BRAM in the proper way in Vivado to ensure enough space for the program to run?



0 Kudos