Prefetch Abort - Common Causes?

Are there any notorious or common causes for the prefetch abort that I should be aware of in programming for my LPC2103? I’ve got a simple program that blinks an LED in a busy wait loop, and uses an interrupt to service UART0 with a simple routine that just echoes characters back on the terminal. I can run it fine, but after a few interrupt cycles, I get a prefetch abort and I have to reset the program to get it to work again.

  1. Is there a subtle reason that my prefetch abort might be happening (If I’m relatively certain I’m not jumping off into the weeds in my program)

  2. Where should I look in memory to begin to trace this problem back to its root cause (I’m relatively new to the ARM architecture)

Cheers!

-R

It could be a stack overflow or corruption among many other things.

I think I can pretty well rule out a stack overflow. (Though I suppose you never know) I’m not sure how the stack might be getting corrupted, but with interrupts again I guess it’s possible.

I never had this issue in any programs before I started messing about with interrupts. Is it possible that (now with interrupts enacted) I am trying to fork to a bogus interrupt vector? I guess that’s unlikely as well, since my VIC says I’m not servicing an interrupt.

Here’s some pseudocode:

uart_isr() {

echo character on uart

}

delay() {

for i=0 i<a bunch i++ ;

}

main() {

init()

while(1) {

led on

delay()

led off

delay()

}

}

There is code in the LPC2000 Yahoo group library that works.

Leon