Hi!
I am working on a OMAPL-138 device in which ARM (linux) and DSP (DSPBIOS) communicate to each other using CHANNEL API coming with DSPLINK.
I am facing with a performance issue on DSP side of my application. Once in a while DSPBIOS takes more than 5ms to wake up the main thread (blocked on a semaphore) after a SEM_post made in an interrupt.
There are no other DSP threads running with higher priority and DSP load is about 50%.
ARM side, linux is running with a heavy load that makes it using almost 100% of CPU often.
I have found out that if I try to unload the ARM core, in order to have about a 25% of CPU load, DSP never misses the 5 ms deadline.
I think that the only connection that could cause such a problem is DSPLINK.
I have found that, ARM side, DSPLINK can run with real time priority:
http://processors.wiki.ti.com/index.php/DSPLink_FAQs#Does_DSPLink_work_in_an_Real_Time_environment.3F_When_I_use_it_I_see_high_latency.3F
Anyway it is not fully described how to do it. What exactly do I have to add in dpc.c ?
/* Set scheduling policy to enable RT */
<add_code_here>
I am not a linux kernel expert so it is quiet difficult to find the correct code.
Thanks.