In our design, the CPU can go to sleep for up to 4 minutes, basically missing 1,000 timer ticks per second while it’s under. I see some logic for the OS making up timer ticks. Obviously, when I wake up the CPU I don’t want to iterate through 240,000 missing timer ticks. Are there rules or standard design patterns for handling this situation? Our software can be designed to be tolerant of missing ticks, but does the OS need to account for these?
If your CPU is in deep sleep for 4 minutes, it is likely that it really missed the timer interrupts. So it will not have to iterate through missing ticks. Don’t you have an external RTC circuit that you can use for timing purpose? Note that the OS couldn’t care less about missing ticks unless you use delays or timeouts.
Yes, there is a separate oscillator circuit to track the elapsed time. The idle task wont execute sleep mode if there are timeouts scheduled. I just want to make sure the OS doesnt use these internally.
If there is no timeout scheduled, going to deep sleep and missing ticks will not harm FreeRTOS scheduler.
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.