I have a SYSBIOS DSP application that works perfectly stably (and has for a while) when I am running a bare-metal application on the ARM on an OMAP-L138 using custom hardware. The ARM sets up the chip, starts VPIF, and sends CHIPSIG2 interrupts to the DSP on frame completions. The DSP takes care of the rest of the peripherals (UART and SPI) while running the algorithm, which makes heavy use of EDMA and EDMA completion ISRs.
I am trying to move the bare-metal ARM application to SYSBIOS, and I am most of the way through, but now the DSP algorithm no longer runs stably. The UART communication looks like it is intermittent, and the algorithm quickly just hangs in EDMA, with the stack looking like,
edma3ComplHandler(struct unknown *)() at edma3resmgr.c:5,273 0xC078D2B8
lisrEdma3ComplHandler0(unsigned int)() at edma3resmgr.c:5,344 0xC07AB54C
ti_sysbios_family_c64p_EventCombiner_dispatch__F(unsigned int)() at EventCombiner.c:143 0xC07A23AC
ti_sysbios_family_c64p_EventCombiner_dispatch__E(unsigned int)() at st_pe674.c:16,649 0xC07AD240
edma3ComplHandler(struct unknown *)() at edma3resmgr.c:5,241 0xC078D1E8
main() at main.c:948 0xC0748004
_c_int00() at boot.c:173 0xC0000084 (the entry point was reached)
where it apparently is just looping around on the EDMA IPR flags which never finish getting cleared. It kind of smells to me like unhandled, frequent interrupts are getting fired, but I don't know how to look for that.
Now, again, this code works perfectly fine when the bare metal ARM code is used to bring up the system. I have verified that I have EXACTLY the same settings for SYSCFG0, SYSCFG1, PSC0, and PSC1 between the two setups, but there MUST be something else going on.
I recognize that this is not enough information to solve my problem: what I am looking for is suggestions and pointers on how to proceed, what debugging techniques I should apply, etc.
Thanks,
Jay