cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
nuclearrambo1
Visitor
Visitor
264 Views
Registered: ‎04-28-2020

Program counter jumps to interrupt vector

I have an Artix 7 based system that has Microblaze running on it. 

The microblaze processes a bunch of static images every now and then. I have noticed that out of the blue the program counter jumps to 0x10 which happens to be interrupt vector table address. A couple of seconds later Vitis shows that processor is in reset state.

I have 512MB of DDR3 RAM connected with data cache enabled just before I call the image processing function and disable it right after. The program flow is something like this.

case process_img:
     enable_dcache();
     read_static_data_from_SPI_flash();
     process_static_img(); //Store it on a fixed location of DDR
     disable_dcache();
     break;

This flow executes periodically and logically it doesn't seem to have any flaw for the processor to stall. Could someone help me figure out what could be causing the system to stall? Where should I be looking at? 

 

Tags (2)
0 Kudos
2 Replies
stephenm
Xilinx Employee
Xilinx Employee
209 Views
Registered: ‎09-12-2007

Sounds like an exception is getting triggered? can you do a rrd in XSCT when this occurs and read the ESR (Exception Status Register)

https://www.xilinx.com/html_docs/xilinx2020_2/vitis_doc/rgt1543754627182.html

 

You can cross reference this against the MB user guide. table 2-12:

https://www.xilinx.com/support/documentation/sw_manuals/xilinx2020_2/ug984-vivado-microblaze-ref.pdf

0 Kudos
nuclearrambo1
Visitor
Visitor
173 Views
Registered: ‎04-28-2020

I was able to capture the register status when exception occurred but it leads to dead end. The value of ESR is 0x8. The reference document shows no such exception code. Please check the screenshot captured when exception occurred.

image001-2.png

0 Kudos