Wonder why FreeRTOS does not support real tickless mode

Posted by spachner on February 18, 2017

Hi,

I wonder why FreeRTOS does not support real tick-less mode? It should be possible to completely forget about the tick timer which is firing periodically, even when not needed. This only wastes power and fires useless interrupts. When a timer is needed, e.g. for vTaskDelay() or simular it would be sufficient to setup a single HW timer for the next closest expiring time when more timers are active. When this timer fires a interrupt is called which probably wakes the mcu and the OS could generate a timer event as normal. No need for a tick timer which counts down to implement a vTaskDelay().

The only back draw would be that FreeRTOS feature configUSETIMESLICING is not possible. But this feature is actually only needed for tasks running continously at same priority and will there never block. Then a round robin scheme will schedule between these continously runnings task. At pure event driven systems this is not needed at all.

Currently FreeRTOS supports only "tickless idle" which means that the tick timer is stopped when all tasks are blocked for a certain amount of time and is started again when a task gets ready for run.

Much more simplier OS like Contiki does this already, why not FreeRTOS?

regards

spachner


Wonder why FreeRTOS does not support real tickless mode

Posted by rtel on February 19, 2017

There are pros and cons of doing it either way, and the tickless idle method was chosen for the following reasons:


Wonder why FreeRTOS does not support real tickless mode

Posted by spachner on February 19, 2017

Hi,

many thanks for your fast and comprehensive answers. Although I understand your argumentations and concerns, I would appreciate to have at least the option to turn on full tickless support for experienced users.

regards

spachner


Wonder why FreeRTOS does not support real tickless mode

Posted by rtel on February 19, 2017

Please add a feature request ticket in SourceForge.