I have a MIPS platform running ECOS v2.0. Default tick interval is 10ms. There
are a few tasks at equal priority, and time slicing is enabled (5 ticks). At
10ms tick interval, everything works fine. All equal priority tasks get a
chance to run.
I tried changing tick intervals by modifying CYGNUM_HAL_RTC_DENOMINATOR value.
First, i lowered the tick interval to 1ms. After this, i see only one task is
running. None of the other tasks are getting a chance to run. Then i changed
tick interval to 5ms. Same result. It seems like context switch is not
happening.
Secondly, i increased the tick interval to 50ms and 100ms. And, the system
hangs on boot up. Nothing runs.
As soon as i change the CYGNUM_HAL_RTC_DENOMINATOR value to 10ms (default),
things get back to normal. I am not sure why changing the tick interval has
such a big impact on scheduling. The RTC interrupt on MIPS is derived from
count and compare register, which i would assume can handle 1ms or 5ms or 50ms
durations. In other words, i am not suspecting the RTC interrupt itself.
Any clues on why this is happening? The only value that i change is
CYGNUM_HAL_RTC_DENOMINATOR. I do see that CYGNUM_HAL_RTC_PERIOD changes based
on the denominator value.
Are there any other dependencies to change tick interval? I wonder what is so
special about the default 10ms tick interval?
Thanks in advance.
Santosh