[nuttx] data abort issues(maybe linker script issues)

Denis 'GNUtoo' Carikli GNUtoo at no-log.org
Sun May 13 14:34:04 UTC 2012


Hi,

Since there is only 256k of internal memory(starting from 0x00800000 and 
finishing at 0x00840000 ) on the compal_e99, And that in nuttx we went over 
0x00840000(which is bad and may be cause a similar data abort than the 
follownig one), I wonder if we could use the external RAM like in the attached 
patch(we're a bit short on memory).

However the patch may still be wrong because it still produces a data abort:
nsh> nxtext
nxtext [2:100]
nsh> nxtext_initialize: Initializing external graphics device
nxtext_initialize: Open NX
[...]
nxtext_main: NX handle=1006ea0
nxtext_main: Set background color=32
[...]
row: 60 col: 0 npixels: 98
row: 61 col: 0 npixels: 98
row: 62 col: 0 npixels: 98
row: 63 col: 0 npixels: 98
row: 64 col: 0 npixels: 98
row: 65 col: 0 npixels: 98
row: 66 col: 0 npixels: 98
[...]
row: 50 col: 0 npixels: 98
rowData abort. PC: 00826090
Assertion failed at file:arm/up_dataabort.c line: 198 error code: 32773
sp:     01006d78
IRQ stack:
  base: 010003fc
  size: 000003fc
User stack:
  base: 01006e88
  size: 000007fc
01006d60: 00008005 000000b0 008212d4 008318f0 01006d80 000000c6 00008005 
000000b0
01006d80: 00000055 0100104c 008210ec a0000053 00821128 00826090 0082012c 
01001444
01006da0: 00000000 e1d2c0b0 e20c10ff 00000020 000000b0 00000055 0100104c 
00832df8
01006dc0: 01006ea4 00000000 00000000 0100104c 01006de0 00826014 00826090 
a0000053
01006de0: 00000011 01001058 01000d24 0082ac98 00832c48 01000d24 01000d24 
00832c48
01006e00: 01006ea4 01000d52 01006ea4 0082aef0 01006ea4 01000d24 00832c48 
00000018
01006e20: 008327d0 00000006 008327cd 0082a744 01006ea4 008327cd 00000008 
008327d6
01006e40: 00000001 00000001 00000000 008327cd 01006ea4 00000000 00000000 
0082a3c4
01006e60: 00000001 00000020 00000000 00000000 00000000 00000000 00000000 
00823c54
01006e80: 00000000 00000000 00000000 00000000 00000000 00000000 00000060 
80000810
R0: 01001444 00000000 e1d2c0b0 e20c10ff 00000020 000000b0 00000055 0100104c
R8: 00832df8 01006ea4 00000000 00000000 0100104c 01006de0 00826014 00826090
CPSR: a0000053

The PC is in the following malloc, but sometimes it was previously in 
semaphores...

00825fec <malloc>:
  825fec:       e92d4038        push    {r3, r4, r5, lr}
  825ff0:       e2504000        subs    r4, r0, #0
  825ff4:       0a000020        beq     82607c <malloc+0x90>
  825ff8:       e2844017        add     r4, r4, #23
  825ffc:       e3c4500f        bic     r5, r4, #15
  826000:       ebffffa2        bl      825e90 <mm_takesemaphore>
  826004:       e3550501        cmp     r5, #4194304    ; 0x400000
  826008:       23a00012        movcs   r0, #18
  82600c:       31a00005        movcc   r0, r5
  826010:       3bffffe9        blcc    825fbc <mm_size2ndx>
  826014:       e59f309c        ldr     r3, [pc, #156]  ; 8260b8 <malloc+0xcc>
  826018:       e0830200        add     r0, r3, r0, lsl #4
  82601c:       e5904008        ldr     r4, [r0, #8]
  826020:       ea000000        b       826028 <malloc+0x3c>
  826024:       e5944008        ldr     r4, [r4, #8]
  826028:       e3540000        cmp     r4, #0
  82602c:       0a000011        beq     826078 <malloc+0x8c>
  826030:       e5943000        ldr     r3, [r4]
  826034:       e1530005        cmp     r3, r5
  826038:       3afffff9        bcc     826024 <malloc+0x38>
  82603c:       ea000011        b       826088 <malloc+0x9c>
  826040:       e0840005        add     r0, r4, r5
  826044:       e7843005        str     r3, [r4, r5]
  826048:       e5805004        str     r5, [r0, #4]
  82604c:       e5845000        str     r5, [r4]
  826050:       e0842002        add     r2, r4, r2
  826054:       e5921004        ldr     r1, [r2, #4]
  826058:       e2011102        and     r1, r1, #-2147483648    ; 0x80000000
  82605c:       e1833001        orr     r3, r3, r1
  826060:       e5823004        str     r3, [r2, #4]
  826064:       ebffffba        bl      825f54 <mm_addfreechunk>
  826068:       e5943004        ldr     r3, [r4, #4]
  82606c:       e3833102        orr     r3, r3, #-2147483648    ; 0x80000000
  826070:       e5843004        str     r3, [r4, #4]
  826074:       e2844008        add     r4, r4, #8
  826078:       ebffffa1        bl      825f04 <mm_givesemaphore>
  82607c:       e1a00004        mov     r0, r4
  826080:       e8bd4038        pop     {r3, r4, r5, lr}
  826084:       e12fff1e        bx      lr
  826088:       e2842008        add     r2, r4, #8
  82608c:       e892000c        ldm     r2, {r2, r3}
  826090:       e5832008        str     r2, [r3, #8]
  826094:       e5943008        ldr     r3, [r4, #8]
  826098:       e3530000        cmp     r3, #0
  82609c:       1594200c        ldrne   r2, [r4, #12]
  8260a0:       1583200c        strne   r2, [r3, #12]
  8260a4:       e5942000        ldr     r2, [r4]
  8260a8:       e0653002        rsb     r3, r5, r2
  8260ac:       e353000f        cmp     r3, #15
  8260b0:       9affffec        bls     826068 <malloc+0x7c>
  8260b4:       eaffffe1        b       826040 <malloc+0x54>
  8260b8:       01001414        tsteq   r0, r4, lsl r4

The data abort prevents us from testing the lcd with the nuttx examples 
applications that makes use of the LCD....
(for now it only draws a background and then crash like mentioned above).

I've also attached the appconfig and the defconfig.

What other informations should I give?

The branch I'm using is here:
https://gitorious.org/gnutoo-s-for-upstream-osmocom-bb-and-nuttx-bb/nuttx-bb-
gta02/commits/lcd-cleanup (which will be rebased for cleanup purposes).

Denis.


More information about the baseband-devel mailing list