jasonrlund wrote on Monday, March 09, 2015:
I am having a little trouble getting the FreeRTOS scheduler to work as expected with v8.2 using the ARM Cortex-A9 port. In this simple example, I have two tasks: one is a 96 KHz audio processing task and one is a 10 Hz video processing task.
In the scheduler setup routine, I have the audio task at priority (idle + 4) and the video task at (idle + 3); the audio is of higher priority than the video, as it will need to preempt the video task often. There is another task, the scheduler sender task, which runs with priority (idle + 1) and at a 96 KHz rate. It sends updates to the audio and video queues at their respective frame intervals to wake them up using vTaskDelayUntil (where the slave tasks use xQueueReceive).
These all start and queue correctly; I see that the audio task nominally runs at 96 KHz with a good amount of processing slack and the video task is woken up every 10 Hz. However, the video task takes about 712us to complete and is never preempted by the audio task, despite the video task having relatively well placed taskYIELD() calls throughout this processing interval. This is leading to audio dropouts at a 10 Hz rate. Any thought on what may be happening?
Thanks in advance, I will gladly share code and oscilloscope traces as needed.