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


Hi,

I have LPC2290 and had very similar problem at the very beginning.

The problem was caused by part of the code in
/packages/hal/arm/arch/current/src/vectors.S and my configuration settings.

There is a ".global __exception_handles" part where in case CYGSEM_HAL_ROM_RESET_USES_JUMP is defined short jump (b reset_vector) is used.

In my case it was defined and I had a short jump... Because CPU starts with interrupt vectors remapped to address 0 and the rest is residing somewhere in memory (address depends on boot configuration) long jump (ldr pc,.reset_vetor) is required.

Check whether CYGSEM_HAL_ROM_RESET_USES_JUMP is defined and undefine it. Hopefully this will help.

Greetings
Tomasz
Hi,

Could it be that you need to do some memory remapping to get the
exception vectors at the right address (they have to be located at
address 0)? I have no idea if the LPC requires this, so just a quick
thought.

I had a similar issue trying to run a RAM image on the Atmel ARM7
(AT91SAM7SE)  based cpu, in my case the problem was caused because the
SRAM-Flash remap code that wasn't in the RAM image startup sequence.

Tom

On Jan 25, 2008 11:06 PM, Sergei Gavrikov <sergei.gavrikov@gmail.com> wrote:
On Fri, Jan 25, 2008 at 01:55:06PM -0800, Jean-David Vuillemain wrote:
Yes i use a mixture of tool in fact...

"Can you undo for GCC-3.2.1 and rebuild new CVS eCos with original tools?"
Could you be more explicit please.
I wonder, will you get a hang on a startup stage when you'll build eCos
with GNU toolchain from public FTP (a.k.a eCosCentric tools)? And what
about behaviors of built application for ROM startup? Does that hang
too?

Sergei


JD
2008/1/25, Sergei Gavrikov <sergei.gavrikov@gmail.com>:
On Fri, Jan 25, 2008 at 10:21:39AM -0800, Jean-David Vuillemain wrote:
I can run my application with GDB but the breakpoints you point out
are not reachable. The program goes straight to the data abort at
0x00000010 after a few instructions.
I didn't get any assertion message.
I have another question, Is it possible that you use a mixture of tools?
Is your GNU toolchain a home-cooked stuff? Does the error occur with
GCC-3.2.1? If you build eCos with a recent tolchain, it could be that
you did modify CYGBLD_GLOBAL_CFLAGS and your startup become a broken...
Can you undo for GCC-3.2.1 and rebuild new CVS eCos with original tools?

Sergei

2008/1/25, Sergei Gavrikov <sergei.gavrikov@gmail.com>:
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.
Working with lpc2xxx targets I update eCos repository every week.  Did
you try to build eCos with a tracing support? Import 2 lines the below
with ecosconfig and rebuild eCos

cdl_option CYGPKG_INFRA_DEBUG {user_value 1};
cdl_option CYGDBG_USE_TRACING {user_value 1};

Can you run your application in GDB as

b cyg_start
b cyg_assert_fail
c
c

I wonder, Did you get same assertion?

ASSERT FAIL: <1>lpc2xxx_misc.c[359]hal_interrupt_configure() Invalid vector


Sergei


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]

Someone has a hint to solve this problem??

Thanks in advance.

Jean-David

--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
--
Jean-David Vuillemain
jdvuillemain@gmail.com
--
Jean-David Vuillemain
jdvuillemain@gmail.com
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss






---------------------------------------------------------------------- Sprawdz, czy pasujesz do swojego partnera! http://link.interia.pl/f1ce7


-- 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]