Hello,
I have a project that uses the IPC stream module with the PSP McASP driver.
It has a task that receives data for processing as below:
Stream_create()
for all buffers
Stream_issue()
for(;;)
if reset_flag == true
Stream_abort()
Stream_delete()
Stream_create()
for all buffers
Stream_issue()
reset_flag = false
Stream_reclaim()
//Processing
Stream_issue()
It works fine until the reset_flag is set. Stream_abort is called but does not return.
Another higher priority task is running that also does stream handling on the McASP, but it is using a different McASP instance and stream handle.
The stack before execution goes elsewhere is:
0 ti_psp_mcasp_Mcasp_localSubmitIoctl__I(struct ti_psp_mcasp_Mcasp_ChannelObj *, unsigned int, void *, void *, struct xdc_runtime_Error_Block *) at mcasp_ioctl.c:140 0xc31d5c80
1 ti_psp_mcasp_Mcasp_control__F(struct ti_psp_mcasp_Mcasp_Object *, void *, unsigned int, unsigned int, struct xdc_runtime_Error_Block *) at mcasp.c:1459 0xc320e5f4
2 ti_psp_mcasp_Mcasp_control__E(struct ti_psp_mcasp_Mcasp_Object *, void *, unsigned int, unsigned int, struct xdc_runtime_Error_Block *) at appdsp_x674.c:24306 0xc321a304
3 ti_sdo_io_IDriver_control(struct ti_sdo_io_IDriver___Object *, void *, unsigned int, unsigned int, struct xdc_runtime_Error_Block *) at IDriver.h:148 0xc321a6cc
4 ti_sdo_io_converters_DriverAdapter_control__F(struct ti_sdo_io_converters_DriverAdapter_Object *, unsigned int, unsigned int, struct xdc_runtime_Error_Block *) at DriverAdapter.c:127 0xc321a9d0
5 ti_sdo_io_converters_DriverAdapter_control__E(struct ti_sdo_io_converters_DriverAdapter_Object *, unsigned int, unsigned int, struct xdc_runtime_Error_Block *) at appdsp_x674.c:24534 0xc321a980
6 ti_sdo_io_IConverter_control(struct ti_sdo_io_IConverter___Object *, unsigned int, unsigned int, struct xdc_runtime_Error_Block *) at IConverter.h:162 0xc321a5c8
7 ti_sdo_io_Stream_abort__F(struct ti_sdo_io_Stream_Object *, struct xdc_runtime_Error_Block *) at Stream.c:136 0xc3218c58
8 mcasp_os_close(struct unknown *) at mcasp_os_dspbios6.c:295 0xc31e0bca
9 mcasp_close(struct unknown *) at mcasp.c:490 0xc31fbff0
Attached are the RTA Raw Logs of the execution. There appear to be continuous hardware interrupts and thus the EventCombiner_dispatcher is running continuously.
Any suggestions as to what might be causing the interrupts and run-away execution would be greatly appreciated.