Hi ,
I have an application that use dsp link message queue between the arm and dsp.
After having real-time issues, I observed that the call to the message queue put/get can take 0.15/0.2 msec.
Does it make sense?
Thanks,
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
MH,
On an average, the round trip time for MSGQ_put/MSGQ_get is 150 to 250 Usec.
Which platform are you on? I will be able to give exact details then.
Deepali
MH,
DSPLink is primarily a generic porting kit. The code is written to allow easy multi-OS and multi-platform configurability. So the DSPLink has layers like HAL for hardware abstraction, OSAL i.e. OS adaptation layer, PMGR and LDRV for the user/kernel abstraction etc. But the layers are not the only reason for the numbers that you see.
The time for messaging IPC on Linux for e.g. also include context switch time for OS, interrupts processing, cache coherency (for DSP) etc. The round trip time for messaging on Jacinto-Pros is much less, less than 100 usec for a round trip message. We also had a customer who profiled the IPC and reported the bulk of the delays in the Linux OS. Some TI engineers have also reported much lower numbers (~70 usec for round trip message time) using the PREMPT_RT patch for Linux on DM6446.
I can share some options/suggestions to reduce the overhead. For e.g.:
1) DSPLink gives two modes on DSP. Details here: http://processors.wiki.ti.com/index.php/DSPLink_FAQs#How_should_I_choose_between_TSK_mode_or_SWI_mode_in_the_--DspTskMode_option_when_I_am_trying_to_configure_DSPLink.3F
Or
2) If you are on DM6446, you can try PREMPT_RT
Or
3) If NOTIFY IPC with its lower cycle time (~50 usec) is useful for your use case
Deepali