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.
I could upload the CCSv5 project of this application if somebody wants to have a look at it.
Diego,
Sorry to take so long to reply. Have you made any progress on this issue?
Alan
Not really, I have decided to implement DMA with ping-pong buffers on TX to see if I can reduce CPU load, since today I am reusing code from the Connected Audio Framework that uses a sample by sample interrupt for TX. For some reason, I am having synchronization issues. But I don´t know why the task load changes after one minute, there is no other task running.
The KNL_swi gets usually posted to perform task switching operations as a result of a formerly blocked task becoming ready to run.
I assume that your application has tasks pending on semaphores that are being posted within HWI functions.
Consequently, I'm thinking that for some reason, your application has a much higher interrupt rate during the first minute of operation than later on.
Is this possibly a data-dependent issue? I mean could the processing burden of individual audio frames be higher for the first minute of the audio stream?
Alan
There are 2 HWI used. One is the I2S RX that receives the input samples from ADC, which is configured as a DMA with ping-pong buffers of 64 samples, the other one is the I2S TX that transmit samples to the DAC, which is configured as a sample by sample interrupt as in the Common Audio Framework.
Apart from that there is an SD card task that writes and reads 256 sample buffers and communicates via semaphores, but I don´t see change in load on it.
The thing is that actually during the first minute when there are many underflows the load of KNL_swi is low and idle_BusyObj is high, It is when the load of KNL_swi is high after one minute that things work better with no underflows.