Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Message

Re: Problem with Data Aborts

2004-10-31 by embeddedjanitor

--- In lpc2000@yahoogroups.com, "Jenish" <jenish@g...> wrote:
> 
> I am new to this group and arm processor also.Has anyone ever faces 
> the deadly data abort error.I have gone through a length document 
by 
> David Seal but to no good use.Still have problem with data abort.

A data abort occurs when you try to access a non-existant chunk of 
memory as data.

> 
> implemented simple stuff like SUBS PC,LR,#8
> adjusts link register by 8 places(considering the pipelined 
> architecture)and loading the Program counter with the same.

It does not help to have a data abort handler unless you do something 
to fix up the aborting reason. In "larger" ARM processors you can do 
this by using the MMU (ie. change the MMU to handle the aborting 
address properly). THis is how you do things like grow the stack on 
demand. ie.

1) Attempt to access address xxx. THis fails and causes a data abort.
2) Data abort handler kicks in and maps the appropriate memory to xxx.
3) Same instruction as in (1) is tried again and works this time.

On smaller CPUs like the LPC2xxx with no MMU this makes no sense. If 
you just implement the return then you get.

1) Attempt to access address xxx. THis fails and causes a data abort.
2) Data abort handler does nothing.
3) Same instuction as in (1), fails again because nothing hase been 
changed.
4) Data abort handler does nothing.
Forever...

There are only really two meaningful things to do:

1) If you're running a debugger, then just make an infinite loop

DataAbortHandler: b DataAbortHandler

Now you can detect DataAbortHandlers and find where they happened.

2) Write some exception processing code that outputs the registers 
etc.


> 
> My data abort occurs at STR  R12,[R14,#RVCT_AicEoicr]
> 
> It seems that this has something to do with Base Update Abort Model.
> 
> which is the instruction I use to acknowledge the end of interrupt  
> at the end of the interrupt subsroutine.

The coding of this instruction looks slightly wierd, depending on how 
it was set up. Make sure that (R14+ RVCT_AicEoicr) is a valid address.

> 
> Please let me know if any one as faced this problem before.

Sure. Data aborts happen to everybody :-). It is the ARM's way of 
telling you that you have not set up your pointers properly.

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.