FreeRTOS SMP: port testing

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?

Hi @Matth9814
You can take a look at these demos for reference .
This includes comprehensive demo as well, which you are trying to run.

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.

UPDATE: All the tests other than the interrupt queue tests pass without problems.