ARM 946E-S Abort failure (derived from csb337 bsp)
x ray
rayx.cn at gmail.com
Tue Mar 25 05:10:33 UTC 2008
Hi, Gds
It is little strange that spsr = 0xD1 =0x11010001
the last 5bit 10001 means you are in FIQ mode.
However, I remembered that the ARM bsp do not fully implement FIQ handler.
BTW, I have taken a quick look in ARM946E spec. There is another issue
you should note, in chap 2.2.1 data abort mode. It seems that ARM9E-S
differ form ARM7TDMI in the Data abort model.
2008/3/25, gds <gds at chartertn.net>:
> I have been trying to just run the simple_main and/or hello_world
> examples. My console port (polled in/out) is coded, connected and seems
> to work so I can see some output. Also, am able to debug with
> arm-rtems4.8-insight debugger using a jtag debugger (Macraigor mpDemon
> with built-in gdb server).
>
> Occasionally I am able to get all the way to main but more often I see
> an abort failure somewhere along the line. Seem rather flaky and
> inconsistent and not repeatable.
>
> Here is what I often see printed usually before main or after exiting
> main():
>
> INSN_LDM1
> data_abort at address 0x847C, instruction: 0xE8916FF4, spsr = 0xD1
> active thread thread 0x0A010001
> Previous sp=0x000179EC lr=0x00008488 and actual cpsr=600000D7
> 0x00015BFC 0x00020F58 0x00000013 0x00015D14 0x600000D1 0x00000000
> 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
> 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
> 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
> 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
> 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
> 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
> 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
>
> The code at address 0x847c is in _Context_switch and looks like this
> (from arm-rtems4.8-objdump):
>
> 00008474 <_CPU_Context_switch>:
> 8474: e10f2000 mrs r2, CPSR
> 8478: e8806ff4 stm r0, {r2, r4, r5, r6, r7, r8,
> r9, sl, fp, sp, lr}
>
> 0000847c <_restore>:
> 847c: e8916ff4 ldm r1, {r2, r4, r5, r6, r7, r8,
> r9, sl, fp, sp, lr}
> 8480: e129f002 msr CPSR_fc, r2
> 8484: e1a0f00e mov pc, lr
>
> 00008488 <_CPU_Context_restore>:
> 8488: e1a01000 mov r1, r0
> 848c: eafffffa b 847c <_restore>
>
> However, if I step through this code it does not fail. Also, if I set a
> breakpoint at 0x847c it never hits it before printing the exception
> message indicting "data abort". I think "data abort" means I am
> accessing data outside of my ram space or possibly accessing an
> instruction that is not on a 32-bit word boundary.
>
> I also see other failures. Sometimes I see invalid SWI (software
> interrupt) detected. However, I think this code doubles for detecting
> undefined instructions, which may be what triggers it. (I don't see any
> software interrupts used in rtems, at least with ARM.)
>
> Any suggestions on what I should be looking for here to debug this? I
> think I should be able to run to main and exit main with no errors printed.
>
> Thanks,
> -gene
>
> _______________________________________________
> rtems-users mailing list
> rtems-users at rtems.com
> http://rtems.rtems.org/mailman/listinfo/rtems-users
>
--
Thanks & Best Regards!
Ray, Xu
More information about the users
mailing list