Hi,
I have an issue using message queue across DSP/LINK between the ARM and DSP on a OMAPL138. The ARM sends and the DSP receives. On the DSP side I want the message reception to be low priority because the DSP is doing more important real time stuff on a HWI thread (generated from a CLK object). I have task (TSK) that runs only once at start up and opens the DSPs message queue with no notification set by passing NULL to the MSGQ_open attrs argument. like this:
/* Open Queue */
Uint16 status = MSGQ_open ("DSPMSGQ0", &localMsgq, NULL);
I then have an idle task (IDL) defined which polls to see if a message is available by using MSGQ_get with zero timeout, like this:
if (MSGQ_get (localMsgq, (MSGQ_Msg *)&message, 0) == SYS_OK) {
/* Process Message Here */
...
}
Now, this all works OK in that the messages are received, processed and acted upon. However, every so often (not all the time) I get a failure in the code running in my HWI thread when a message is sent. It is as if something in DSP/LINK is preempting the HWI thread when a message is posted by the ARM. Is this the case? Does something with a higher priority than my CLK thread get called when a message is posted? If so, can it stopped? If not, can anyone suggest what else is happening?
Cheers,
John.