UPGRADE YOUR BROWSER

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!

AR# 65043

2015.2 - MicroBlaze - MicroBlaze application executes in an endless loop

Description

I have a simple MicroBlaze connected to external memory via the cache line.

I am preforming reads and writes to memory.

The application functions correctly.

However, it results in an endless loop (the application returns to the start and executes again)

What is the cause of this, and how can I address this issue?

Solution

Normally this is due to some data corruption on the stack. 

When a function returns, it reads from the stack and does a rtsd r15, 8

if r15 is loaded with 0x0, it will jump to 0x8.

To address this, make sure that the stack is not overwritten, and that the cache is flushed correctly.

Make sure that the cache is cleared at the start of the application, and also flushed (if you are using writeback) at the end of the application.

AR# 65043
Date Created 07/22/2015
Last Updated 07/22/2015
Status Active
Type General Article
Tools
  • Vivado Design Suite - 2015.3
  • Vivado Design Suite - 2015.2
  • Vivado Design Suite - 2015.1
IP
  • Microblaze