dynamic test failed at pre-emptive

yen2008 wrote on Tuesday, March 04, 2008:

Hi,

I am using FreeRTOS 4.7.1. 

Executing the dynamic test with all the other tests using the pre-emptive scheduler
fail after a certain period (usually more than 5 minutes on my platform),
at the vQueueSendWhenSuspendedTask.  It works fine at cooperative scheduler.  The followings summarise the test scenario.

Running at preemptive [Fail]:        Running at cooperative [PASS]:
blockQ,                    blockQ,
blocktim,                comtest,
comtest,                countsem,
countsem,                death,
death,                    dynamic,
dynamic, [FAIL]                flash,
flash,                    flop,
flop,                    GenQtest,
GenQtest,                integer,
integer,                pollQ,
pollQ,                    Qpeek,
Qpeek,                    recmutex,
recmutex,                semtest.
semtest.

What is causing the dynamic test to fail in pre-emptive mode please?

yen2008 wrote on Tuesday, March 04, 2008:

Oops…to tidy up previous message on the test scenario:

Running at preemptive [Fail]:
blockQ,
blocktim,
comtest,
countsem,
death, 
dynamic, [FAIL] 
flash,
flop, 
GenQtest,
integer, 
pollQ,
Qpeek, 
recmutex,
semtest.

Running at cooperative [PASS]:
blockQ,
comtest,
countsem,
death, 
dynamic,
flash,
flop, 
GenQtest,
integer, 
pollQ,
Qpeek, 
recmutex,
semtest.

rtel wrote on Tuesday, March 04, 2008:

I can’t tell from the information provided, but it could be to do with the relative priorities of the tasks, or the performance of the CPU you are using.

Regards.

yen2008 wrote on Tuesday, March 04, 2008:

Thanks!

The followings are the priority setting used:
GenQtest  ( tskIDLE_PRIORITY )
integer   ( tskIDLE_PRIORITY )
flop      ( tskIDLE_PRIORITY )
flash        ( tskIDLE_PRIORITY + 1 )
semtest   ( tskIDLE_PRIORITY + 1 )
PollQ     ( tskIDLE_PRIORITY + 2 )
BlockQ    ( tskIDLE_PRIORITY + 2 )
Comtest   ( tskIDLE_PRIORITY + 2 )
death     ( tskIDLE_PRIORITY + 4 )

I noticed that when I change blockQ test to priority 1 instead of 2, the dynamic failed much later, but still is failing. Why would relative priorities affect the dynamic test please?

yen2008 wrote on Wednesday, March 05, 2008:

The cause of the failure is because of too high tick resolution.  I have set my platform to use a very high clock speed and thus causing the tick interrupt not generating the RTOS tick at resolution of 1 second for 1000 ticks.

yen2008 wrote on Wednesday, March 05, 2008:

Apology for the unclear message, to change my previous comments: I have set my platform’s Timer to use a very high clock speed…