Hello everyone.
I am facing a problem with NDK application when i am trying to add the IPC module for MessageQ creation to write the received data and pass it onto other cores.
I have modified the .cfg file and other changes so that i can run an NDK appl. with CCS Simulator. Then i tested the helloWorld_evmc6678l NDK example application in CCS Simulator and it was working absolutely fine.
Also, i have created two application using the IPC module so that one creates the MessageQ and reads messages from it and other application to write the data into the MessageQ. These two applications are also working absolutely fine and i have verified the received data.
Now, the problem comes when i try to integrate IPC MessageQ appl and helloWorld_evmc6678l NDK application. The intention here is, the data received by the NDK application is then written to a MessageQ and which in turn is then read by the application running on the other core. But it does not communicate, even after trying almost every possible thing. Frankly, now i have run out of ideas.
So my question is, Is there something about IPC and NDK modules that i have missed out? If not, then can somebody please help me figure out what is missing/going wrong here.I will be really grateful.
Thank you,
There maybe some internal resource conflict when you merge IPC-msgQ application with NDK.
Which IPC transport does your application use ?
In the integrated application, is NDK receiving messages ?
Regards,
Varada
---------------------------------------------------------------------------------------------------------
Kindly click the Verify Answer button on this post, if it answers your question.
Hello Varada. thanks for the reply
Varada Bellary In the integrated application, is NDK receiving messages?
Yes, the integrated application is receiving the UDP packets successfully and correctly.
Varada Bellary Which IPC transport does your application use ?
In the integrated application in using the QMSS transport module under IPC.
Varada BellaryThere maybe some internal resource conflict when you merge IPC-msgQ application with NDK.
Yes Varada, that was my first conclusion too. After a little bit of reading, i found that QMSS and MessageQ are conflicting when being used in the same application. Also, the other MessageQ application (which will read the data from the msgQ and runs on another core) uses MessageQ, not QMSS. So this mismatch is probably leading to the issue of non-communication. Correct me if i am wrong.
Hi Saurabh,
Yes. For core to core IPC, the underlying transport on both sides should be the same.
About resource conflict issue, since NDK also uses QMSS to communicate, there is very likelihood of some conflict. Or there could be incorrect/duplicate initialization on queue manager done by both applications.
I would recommend a slightly different approach. That is – using shared memory based IPC transport of messageQ
References :
http://processors.wiki.ti.com/index.php/BIOS_MCSDK_2.0_User_Guide#IPC_Shared_Memory_Transport_Message_Passing
sample test code :
“ .. \pdk_C6678_xx_xx_x_x\packages\ti\transport\ipc\examples\shmIpcBenchmark"
Hope this helps.
Hi,
I want add something I have observed about the recommended approach.
I also try to NDK example and IPC by using Shared Memory message passing. Core0 is the master running NDK application, and also communicates with the other cores over different queues at a rate of 50Hz. After sometime it gives an "A_invalidQueueId" exception. When I set the number of slave cores to 2, this error is not occurred.
Hi Alpaslan,
If its not too much trouble, can u please post the .cfg file you are using in this post. It will help me tremendously.
Regards.