View Single Post
  #8 (permalink)  
Old 04-28-2006, 11:01 AM
Ben Jones
Guest
 
Posts: n/a
Default Re: Xilinx Virtex-4 OCM Usage Issues

Hi Charles,

Thanks for the answers.

<[email protected]> wrote in message
news:[email protected] ups.com...

> So the FAE suggested trying to break the problem down to eliminate the
> boot code. To that end, I have taken a short program that prints
> "entering code()" and "exiting code()" and then stops. I boot from
> this code and using the debugger reset. So at this point, none of the
> registers or memory have been setup. I use the debugger to load SDRAM
> 0x2000-0x200C (the first four instructions) and program the PC to
> 0x2000. If I load the design that uses the PLB RAM instead of the OCM
> RAM and load the registers from the last example (none are set up) and
> locations 0x2000-0x200C in SDRAM, I am able to step through all of
> these instructions.


But, if you load the design that uses the OCM RAM and follow the same
procedure, it doesn't work? In that case I agree, it looks like your
bootloader is OK.

Thinking of reasons why the PowerPC might just hang up on you: it's
unlikely, but it could be a Machine check - did you monitor the status of
C405XXXMACHINECHECK?

My next question: what version of EDK are you using, and if it's less than
8.1i, did you see this answer record?

http://www.xilinx.com/xlnx/xil_ans_d...PagePath=22179

Admittedly (a) this is the worst-written load of gibberish I've seen in ages
and (b) it doesn't immediately look like it's relevant to you, it does in a
roundabout way give a possible explanation for what you're seeing.

The default settings of the C_APU_CONTROL parameter allow certain extra
instructions, including floating-point instructions, to be decoded and
executed via the APU controller. To cut a long story short, certain invalid
instruction forms may get interpreted as being destined for an external
co-processor, which isn't there and so doesn't respond and thus hangs up the
system. In particular, executing instruction 0xffffffff may have this
effect, which is quite possible if one ends up reading from memory that
isn't really there. And this might happen as the result of an unexpected
interrupt, for example (if you don't have a vector table defined).

It's a long shot, but do check the C_APU_CONTROL parameter on your PowerPC
core. It might not solve your problem, but it might just stop the system
from hanging up and thus let you see what's actually happening to the
registers & program counter.

I'll keep thinking...

-Ben-


Reply With Quote