Hi,
I'm working on bringing up nuttx on the c139. I am running this as I described 
previously by jumping from 0x2000 to 0x10000 with a small firmware image there 
and then nuttx is configured to run from flash at 0x10000. I configured nuttx 
RAM to live at 0x800100 to skip the exception vectors area that the compal 
loader sets up.

NuttX is coming up somewhat but getting stuck on an unregistered interrupt #21 
which seems strange since there are 21 interrupts and I thought they might be 
0-based so not sure what's going on here. Was wondering if there was some state 
that the compal loader setup that is giving me problems or if there is some 
other issue going on. If anyone has an idea off-hand let me know.
If I take a DEBUGASSERT() out is when I get the info about irq 21. With the 
DEBUGASSERT() in it seems I'm trying to do initialization during interrupt 
handling somehow?  "This API should not be called from interrupt handlers" is 
the comment near the assert in sem_wait().

Attached is a serial log from the phone booting up. I've added a lot of debug 
logging beyond what is normally in NuttX. I included first a log with 
DEBUGASSERT() included and then one without.

Thanks,Craig
~
key=20 pressed
~~
Powering off due to keypress.
~A@ftmtoolerrorAÂC
os_start: Entry
os_start: Initialize the logic that determine unique process IDs.
os_start: Assign the process ID of ZERO to the idle task.
mm_initialize: Heap: start=80183c size=4188099
mm_addregion: Region 1: base=80183c size=4188080
irq_initialize: irq_initialize ENTER
irq_initialize: adding irq_unexpected_isr to irq 0
irq_initialize: adding irq_unexpected_isr to irq 1
irq_initialize: adding irq_unexpected_isr to irq 2
irq_initialize: adding irq_unexpected_isr to irq 3
irq_initialize: adding irq_unexpected_isr to irq 4
irq_initialize: adding irq_unexpected_isr to irq 5
irq_initialize: adding irq_unexpected_isr to irq 6
irq_initialize: adding irq_unexpected_isr to irq 7
irq_initialize: adding irq_unexpected_isr to irq 8
irq_initialize: adding irq_unexpected_isr to irq 9
irq_initialize: adding irq_unexpected_isr to irq 10
irq_initialize: adding irq_unexpected_isr to irq 11
irq_initialize: adding irq_unexpected_isr to irq 12
irq_initialize: adding irq_unexpected_isr to irq 13
irq_initialize: adding irq_unexpected_isr to irq 14
irq_initialize: adding irq_unexpected_isr to irq 15
irq_initialize: adding irq_unexpected_isr to irq 16
irq_initialize: adding irq_unexpected_isr to irq 17
irq_initialize: adding irq_unexpected_isr to irq 18
irq_initialize: adding irq_unexpected_isr to irq 19
irq_initialize: adding irq_unexpected_isr to irq 20
irq_initialize: irq_initialize EXIT
os_start: Initialize the watchdog facility
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
os_start: clock_initialize()
os_start: before sig_initialize()
sig_initialize: sig_initialize() ENTER
sig_allocateblock: sig_allocateblock() ENTER, nsigs=16
sig_allocateblock: sig_allocateblock()< before kmm_malloc()
mm_malloc: mm_malloc(heap,size=384) ENTER
mm_malloc: mm_malloc(), before mm_takesemaphore(heap)
mm_takesemaphore: mm_takesemaphore() ENTER
mm_takesemaphore: mm_takesemaphore(), PID=0 taking
sem_wait: sem_wait(sem)
up_assert: Assertion failed at file:semaphore/sem_wait.c line: 107
up_dumpstate: sp:     00801780
up_dumpstate: IRQ stack:
up_dumpstate:   base: 0080063c
up_dumpstate:   size: 00000400
up_dumpstate: User stack:
up_dumpstate:   base: 00801838
up_dumpstate:   size: 00000800
up_stackdump: 00801780: 00000001 00011f40 00000400 0080063c 00800a40 00000800 00801838 00801780
up_stackdump: 008017a0: 00011fe8 0000006b 0000006b 00033e38 00014994 00801188 0001a8a4 00800a40
up_stackdump: 008017c0: ffffffff 0001a8d4 0001ae08 00801188 00004900 0001ae10 00801800 00000190
up_stackdump: 008017e0: 00801188 0000003c 00017cfc 00000003 00801800 00000000 00016570 0001a4dc
up_stackdump: 00801800: 00000180 0001658c 00000000 00800010 00801154 000166f4 00034370 000343a8
up_stackdump: 00801820: 0001677c 00013670 003fe7c3 0080183c 00000010 00000000 e52829c1 b6e966ce
~
key=20 pressed
~~
Powering off due to keypress.
~A@ftmtoolerrorAÂC
os_start: Entry
os_start: Initialize the logic that determine unique process IDs.
os_start: Assign the process ID of ZERO to the idle task.
mm_initialize: Heap: start=80183c size=4188099
mm_addregion: Region 1: base=80183c size=4188080
irq_initialize: irq_initialize ENTER
irq_initialize: adding irq_unexpected_isr to irq 0
irq_initialize: adding irq_unexpected_isr to irq 1
irq_initialize: adding irq_unexpected_isr to irq 2
irq_initialize: adding irq_unexpected_isr to irq 3
irq_initialize: adding irq_unexpected_isr to irq 4
irq_initialize: adding irq_unexpected_isr to irq 5
irq_initialize: adding irq_unexpected_isr to irq 6
irq_initialize: adding irq_unexpected_isr to irq 7
irq_initialize: adding irq_unexpected_isr to irq 8
irq_initialize: adding irq_unexpected_isr to irq 9
irq_initialize: adding irq_unexpected_isr to irq 10
irq_initialize: adding irq_unexpected_isr to irq 11
irq_initialize: adding irq_unexpected_isr to irq 12
irq_initialize: adding irq_unexpected_isr to irq 13
irq_initialize: adding irq_unexpected_isr to irq 14
irq_initialize: adding irq_unexpected_isr to irq 15
irq_initialize: adding irq_unexpected_isr to irq 16
irq_initialize: adding irq_unexpected_isr to irq 17
irq_initialize: adding irq_unexpected_isr to irq 18
irq_initialize: adding irq_unexpected_isr to irq 19
irq_initialize: adding irq_unexpected_isr to irq 20
irq_initialize: irq_initialize EXIT
os_start: Initialize the watchdog facility
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
os_start: clock_initialize()
os_start: before sig_initialize()
sig_initialize: sig_initialize() ENTER
sig_allocateblock: sig_allocateblock() ENTER, nsigs=16
sig_allocateblock: sig_allocateblock()< before kmm_malloc()
mm_malloc: mm_malloc(heap,size=384) ENTER
mm_malloc: mm_malloc(), before mm_takesemaphore(heap)
mm_takesemaphore: mm_takesemaphore() ENTER
mm_takesemaphore: mm_takesemaphore(), PID=0 taking
sem_wait: sem_wait(sem)
irqsave: irqsave()
irqrestore: irqrestore()
mm_malloc: mm_malloc(), after mm_takesemaphore(heap)
irqsave: irqsave()
irqrestore: irqrestore()
mm_malloc: mm_malloc() EXIT
sig_allocateblock: sig_allocateblock(), after kmm_malloc()
sig_allocateblock: sig_allocateblock(), i=0
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=1
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=2
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=3
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=4
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=5
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=6
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=7
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=8
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=9
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=10
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=11
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=12
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=13
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=14
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=15
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock() EXIT
sig_allocateblock: sig_allocateblock() ENTER, nsigs=8
sig_allocateblock: sig_allocateblock()< before kmm_malloc()
mm_malloc: mm_malloc(heap,size=192) ENTER
mm_malloc: mm_malloc(), before mm_takesemaphore(heap)
mm_takesemaphore: mm_takesemaphore() ENTER
mm_takesemaphore: mm_takesemaphore(), PID=0 taking
sem_wait: sem_wait(sem)
irqsave: irqsave()
irqrestore: irqrestore()
mm_malloc: mm_malloc(), after mm_takesemaphore(heap)
irqsave: irqsave()
irqrestore: irqrestore()
mm_malloc: mm_malloc() EXIT
sig_allocateblock: sig_allocateblock(), after kmm_malloc()
sig_allocateblock: sig_allocateblock(), i=0
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=1
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=2
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=3
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=4
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=5
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=6
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock(), i=7
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_allocateblock: sig_allocateblock() EXIT
mm_malloc: mm_malloc(heap,size=320) ENTER
mm_malloc: mm_malloc(), before mm_takesemaphore(heap)
mm_takesemaphore: mm_takesemaphore() ENTER
mm_takesemaphore: mm_takesemaphore(), PID=0 taking
sem_wait: sem_wait(sem)
irqsave: irqsave()
irqrestore: irqrestore()
mm_malloc: mm_malloc(), after mm_takesemaphore(heap)
irqsave: irqsave()
irqrestore: irqrestore()
mm_malloc: mm_malloc() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
mm_malloc: mm_malloc(heap,size=256) ENTER
mm_malloc: mm_malloc(), before mm_takesemaphore(heap)
mm_takesemaphore: mm_takesemaphore() ENTER
mm_takesemaphore: mm_takesemaphore(), PID=0 taking
sem_wait: sem_wait(sem)
irqsave: irqsave()
irqrestore: irqrestore()
mm_malloc: mm_malloc(), after mm_takesemaphore(heap)
irqsave: irqsave()
irqrestore: irqrestore()
mm_malloc: mm_malloc() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
mm_malloc: mm_malloc(heap,size=128) ENTER
mm_malloc: mm_malloc(), before mm_takesemaphore(heap)
mm_takesemaphore: mm_takesemaphore() ENTER
mm_takesemaphore: mm_takesemaphore(), PID=0 taking
sem_wait: sem_wait(sem)
irqsave: irqsave()
irqrestore: irqrestore()
mm_malloc: mm_malloc(), after mm_takesemaphore(heap)
irqsave: irqsave()
irqrestore: irqrestore()
mm_malloc: mm_malloc() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sq_addlast: sq_addlast() ENTER
sq_addlast: sq_addlast() EXIT
sig_initialize: sig_initialize() EXIT
os_start: after sig_initialize()
os_start: pthread_initialize()
os_start: fs_initialize()
os_start: before up_initialize()
up_initialize: up_initialize() ENTER
up_initialize: up_initialize(), before up_calibratedelay()
up_initialize: up_initialize(), before up_color_intstack()
up_initialize: up_initialize(), before up_addregion()
up_initialize: up_initialize(), before up_irqinitialize()
up_irqinitialize: calypso_irq.c up_irqinitialize()
up_irqinitialize: calypso_irq.c up_irqinitialize(), before calypso_exceptions_install()
up_irqinitialize: calypso_irq.c up_irqinitialize(), before calypso_bootrom(1)
up_irqinitialize: calypso_irq.c up_irqinitialize(), before set_default_priorities()
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177776, IRQ_REG(ILR_IRQ(0)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177776, IRQ_REG(ILR_IRQ(1)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177776, IRQ_REG(ILR_IRQ(2)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177602, IRQ_REG(ILR_IRQ(3)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177616, IRQ_REG(ILR_IRQ(4)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177776, IRQ_REG(ILR_IRQ(5)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177776, IRQ_REG(ILR_IRQ(6)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177642, IRQ_REG(ILR_IRQ(7)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177622, IRQ_REG(ILR_IRQ(8)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177646, IRQ_REG(ILR_IRQ(9)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177652, IRQ_REG(ILR_IRQ(10)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177612, IRQ_REG(ILR_IRQ(11)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177662, IRQ_REG(ILR_IRQ(12)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177776, IRQ_REG(ILR_IRQ(13)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177776, IRQ_REG(ILR_IRQ(14)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177776, IRQ_REG(ILR_IRQ(15)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177602, IRQ_REG(ILR_IRQ(16)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177636, IRQ_REG(ILR_IRQ(17)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177612, IRQ_REG(ILR_IRQ(18)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177606, IRQ_REG(ILR_IRQ(19)))
set_default_priorities: calypso_irq.c set_default_priorities(), putreg16(val=177776, IRQ_REG(ILR_IRQ(20)))
up_irqinitialize: calypso_irq.c up_irqinitialize(), mask all interrupts off
up_irqinitialize: calypso_irq.c up_irqinitialize(), clear all pending interrupts
up_irqinitialize: calypso_irq.c up_irqinitialize(), before irqrestore()
irqrestore: irqrestore()
irq_dispatch: irq_dispatch(irq=21,context)
irq_dispatch: vector is irq_unexpected_isr
irq_dispatch: then dispatch to the interrupt handler
irqsave: irqsave()
irq_unexpected_isr: irq: 21
up_assert: Assertion failed at file:irq/irq_unexpectedisr.c line: 85
up_dumpstate: sp:     008005dc
up_dumpstate: IRQ stack:
up_dumpstate:   base: 0080063c
up_dumpstate:   size: 00000400
up_stackdump: 008005c0: 0000001f 00017ce0 0080063c 008005dc 008005c0 008005c0 60000053 00000001
up_stackdump: 008005e0: 00011eb4 00000400 0080063c 00800a40 00000800 00801838 008005dc 00011fe8
up_stackdump: 00800600: 00000055 00000055 00033c30 00013b38 008017d8 00000015 00013a9c 008017d8
up_stackdump: 00800620: 00000015 00013b04 000107bc 008017d8 15000000 00000000 00010074 008017d8
up_dumpstate: sp:     008017d8
up_dumpstate: User stack:
up_dumpstate:   base: 00801838
up_dumpstate:   size: 00000800
up_stackdump: 008017c0: 00000000 0003345e 0003593c 00017c40 00801810 000331dc 00000019 00000001
up_stackdump: 008017e0: 00000019 00000053 0003593c 00000001 00000001 0000003f 00036c00 00000000
up_stackdump: 00801800: 00000000 00000000 00000000 0080181c 000102bc 000102c8 60000053 00010648
up_stackdump: 00801820: 0001b4c8 000136c8 003fe7c3 0080183c 00000010 00000000 c52829c1 a7e96ece
up_registerdump: R0: 00000019 00000001 00000019 00000053 0003593c 00000001 00000001 0000003f
up_registerdump: R8: 00036c00 00000000 00000000 00000000 00000000 0080181c 000102bc 000102c8
up_registerdump: CPSR: 60000053
irqsave: irqsave()

Reply via email to