This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: arm7 lpc2xxx abort data exception


Jean-David Vuillemain wrote:
hi,
The value of r0 is 0 just before the execution of <start+52>. The
abort data exception tells that the address where it can't read is
0xE59FF018 wich is a reserved address.

For the stack I have no idea. I will change the stack value and see if
it is making it work.

You program is failing in the very early stages of initializing eCos. Sadly, none of the suggestions you've seen so far (while generally helpful) apply to your problem.

The step that's failing is where your code tries to take over the
exception handlers.  It does this by storing come pointers into
memory, starting at location 0x0.

Do you have RAM at 0x0?
What changed when up updated eCos last?

2008/1/24, Andrew Lunn <andrew@lunn.ch>:
On Thu, Jan 24, 2008 at 03:38:14PM -0800, Jean-David Vuillemain wrote:
hi,

i have been working with ecos for a couple of months now. I had no
problem at all with a 8 months old repository source files and my own
port for my target board. After some problem with my working
environment  and updating the ecos source files, i can't have my old
work and my new  code running on the board.
It seems that my code always go through the same steps and finishes by
 an exception abort data.

Here is the code where it fails:
0x80020070 <start>:    ldr r0, [pc, #1020]    ; 0x80020474 <.init_flag>
0x80020074 <start+4>:  ldr r1, [r0]
0x80020078 <start+8>:  cmp r1, #0    ; 0x0
0x8002007c <start+12>: bne 0x80020078 <start+8>
0x80020080 <start+16>: ldr r1, [pc, #196]    ; 0x8002014c <init_done>
0x80020084 <start+20>: str r1, [r0]
0x80020088 <start+24>: mov r0, #0    ; 0x0
0x8002008c <start+28>: ldr r1, [pc, #988]    ; 0x80020470
<.__exception_handlers>
0x80020090 <start+32>: cmp r7, #19    ; 0x13
0x80020094 <start+36>: beq 0x800200a0 <start+48>
0x80020098 <start+40>: ldr r2, [r1, #40]
0x8002009c <start+44>: str r2, [r0, #40]
0x800200a0 <start+48>: ldr r2, [r1, #24]
0x800200a4 <start+52>: str r2, [r0, #24]    <-- this line fails on my
old and new programs
It ends up in an abort data:
0x00000010 swp             r1, r3, [r2]
What is the value of r0? You should be able to look at the exception
bank of registers and see a value. Is it legal, does RAM/FLASH/IO
exist there etc.

The fact you are in exception handlers is not good anything. It
suggests something else has gone wrong. Have you checked your stacks
are big enough. It seems like 75% of random crashes are stack
overflows.

Andrew





--
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------

--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]