Got an OMAP138 , creating a msgQ on the ARM side, putting a msg on the DSP side, but DSP hangs in MessageQ_open?!
How the heck can it hang without returning error?
Kent,
What do you mean by "Hang"? Typically MessageQ_open() is done in a while loop until it succeeds.
Make sure you create the MessageQ's before you do the opens.
Judah
If my reply answers your question please mark the thread as answered
It doesnt return...simple DSP code fragment...it doesnt get to Task_yield()!
// send the shared ptrs to ARM... MessageQ_QueueId msgQid = 0; int i = 0; do { i = MessageQ_open( MSGQ_NAME, &msgQid ); Task_yield(); } while( 0 != i );
MessageQ_open queries all processors in your system to see if the MessageQ name was created on that processor.
In your case of ARM and DSP, if you run this on the DSP, it will send an interrupt to the ARM and wait for its reponse. Make sure the ARM is running. Make sure the ARM has created the MessageQ with the name that you are trying to open.
I got it working thanks...I more slavishly followed the MessageQ example...I dont know whether I had a func call out of order or what...but I was receiving no error/status msgs on the console to clue me in as to what was wrong, and no source code to step into either...
I think what happened is your task is blocked on a semaphore during the NameServerRemoteNotify_get() query of remote processors.
MessageQ_open calls NameServer_get which ends up calling NameServerRemoteNotify_get. The default timeout for the Semaphore_pend() call inside NameServerRemoteNotify_get() is to wait forever. You can change the default timeout during configuration step in your *.cfg and if you did this I think you would have gotten an error return.
BTW we ship the sources so that should be available to you.