Other Parts Discussed in Thread: OMAP-L137
I'm running on an OMAP-L137 processor using DSPLink to coordinate the ARM9 app and the DSP code. I'm seeing the ARM9 stop responding after looping for quite a while successfully.
When I connect to the DSP using CCS, it is looping as expected, patiently waiting for the next request from the ARM9.
The ARM9 code is significantly instrumented with print statements just about everywhere in the App. When the ARM9 is waiting for a DSP Notification, it sits in a small polling loop which includes a print of the last event logged by the DSP.
When the ARM9 code hangs, I can no longer telnet into it, so I can't look at the active processes. The print statements from my ARM9 app stop, suggesting that it is not sitting in an infinite loop in my code. (all infinite loops are instrumented with print statements in my test app).
I tried connecting to it with CCS, and I can see that it is looping (not reset). The assembly language loop is below. All of these addresses are not in the DSP range. The DSPLink reserved areas start at 0xc2000000 (POOLMEM, reset area, etc) That is, this is the memory space reserved for ARM9. (I'm running MV5.0.) Is there anyway for me to tell what code might be sitting in this address when the ARM9 gets stuck? For example, if it is in the printf function, that might be useful to know. Or is it possible to get call stack info? (Currently, CCS says "C-Source Is Not Available" and no memory addresses are given either.) Could it be stuck in DSPLink module itself?
C00393E0 E12FFF35 BLX 0xC0C390BC (goes to c003965c)
C00393E4 E5943000 LDR R3, [R4]
C00393E8 E3130004 TST R3, #0x4
C00393EC 1A000002 BNE 0xC00393FC
C00393F0 E5943000 LDR R3, [R4]
C00393F4 E3130008 TST R3, #0x8
C00393F8 0AFFFFF8 BEQ 0xC00393E0 (takes this branch)
C003965C E1A0C00D MOV R12, R13
C0039660 E92DD800 STMFD R13!, {R11-R12, R14-PC}
C0039664 E24CB004 SUB R11, R12, #0x4
C0039668 E59F304C LDR R3, 0xC00396BC
C003966C E5933000 LDR R3, [R3]
C0039670 E3530000 CMP R3, #0x0
C0039674 0A000000 BEQ 0xC003967C (takes this branch)
C0039678 E89DA800 LDMFD R13, {R11, R13, PC}
C003967C E10F3000 MRS R3, CPSR
C0039680 E3833080 ORR R3, R3, #0x80
C0039684 E121F003 MSR CPSR_c, R3
C0039688 E3CD2D7F BIC R2, R13, #0x1FC0
C003968C E3C2203F BIC R2, R2, #0x3F
C0039690 E5923000 LDR R3, [R2]
C0039694 E3130004 TST R3, #0x4
C0039698 1A000003 BNE 0xC00396AC
C003969C E5923000 LDR R3, [R2]
C00396A0 E3130008 TST R3, #0x8
C00396A4 1A000000 BNE 0xC00396AC
C00396A8 EB002054 BL 0xC0041800 (takes this branch)
C00396AC E10F3000 MRS R3, CPSR
C00396B0 E3C33080 BIC R3, R3, #0x80
C00396B4 E121F003 MSR CPSR_c, R3
C00396B8 E89DA800 LDMFD R13, {R11, R13, PC} (goes to 0xc00393e4)
C00396BC C03CA238 EORGTS R10, R12, R8, LSR R2
C00396C0 E1A0C00D MOV R12, R13
C00396C4 E92DD830 STMFD R13!, {R4-R5, R11-R12, R14-PC}
C00396C8 E24CB004 SUB R11, R12, #0x4
C00396CC E3CD4D7F BIC R4, R13, #0x1FC0
C00396D0 E3C4403F BIC R4, R4, #0x3F
C00396D4 E594500C LDR R5, [R4, #0xC]
C00396D8 E284004C ADD R0, R4, #0x4C
C00396DC E3A01010 MOV R1, #0x10
C00396E0 EB06123E BL 0xC01BDFE0
C0041800 E3A00000 MOV R0, #0x0
C0041804 EE111F10 MRC P15, #0x0, R1, C1, C0, #0x0
C0041808 EE070F9A MCR P15, #0x0, R0, C7, C10, #0x4
C004180C E3C12A01 BIC R2, R1, #0x1000
C0041810 EE012F10 MCR P15, #0x0, R2, C1, C0, #0x0
C0041814 EE070F90 MCR P15, #0x0, R0, C7, C0, #0x4
C0041818 EE011F10 MCR P15, #0x0, R1, C1, C0, #0x0
C004181C E1A0F00E MOV PC, R14 (R14 = 0xc00396ac)