Hi, I am trying to test my SMP port as suggested here (even though I didn’t specify SMP was involved at all, my bad). I think the test implemented by IntQueue.c keeps failing because some assumptions may be violated. The reported error line is 614:
if( xQueueSend( xNormallyFullQueue, &uxTxed, intqONE_TICK_DELAY ) != errQUEUE_FULL )
{
/* Should only succeed when the higher priority task is suspended */
if( eTaskGetState( xHighPriorityNormallyFullTask1 ) != eSuspended )
{
prvQueueAccessLogError( __LINE__ );
}
vTaskResume( xHighPriorityNormallyFullTask1 );
uxLowPriorityLoops2++;
}
That condition seems something that would hold only in a single-core environment.
Am I missing something about the test it actually works only in single-core? And in this case, is there any set of tests for SMP ports?
These tests were designed for single core FreeRTOS, so I won’t be surprised if you find an issue in the test when running them on SMP. Having said that, can you try setting configRUN_MULTIPLE_PRIORITIES to 0 in your FreeRTOSConfig.h?
Thank you, that worked. Unfortunately I am also having an issue at line 686, inside the second interrupt handler, because it seems that the tasks that interact with the normally empty queue are draining it. I have intuitively lowered the tick frequency to 100Hz and increased the interrupt frequency to ~4000Hz but I am still experiencing the error. I have also checked the test configuration of other SMP ports and they do not seem to have this kind of problem with a tick rate of 1000Hz and an interrupt rate of 2000Hz.