Are all low power modes supported?
FreeRTOS will be able to use any low power mode that maintains the RAM and CPU register contents. Using a power mode that does not maintain the RAM contents and/or the CPU registers would take a little more effort.
The ARM Cortex-M7 port provides a default tickless mode, which uses the basic WFI method to place just the CPU core into a light low power mode. The default mode is portable, and can be used on any Cortex-M3/4/7 device. It is however limited by the speed and limited number of bits of the SysTick clock, and the fact that you cannot enter a low power mode that disables the SysTick clock. This is explained on the link above.
Once low power modes start to use features outside of the Cortex-M core itself then they stop being portable and it is necessary to provide a chip specific implementation. This is already demonstrated on an Atmel part (the SAM4L) where retension mode is the lowest power mode that maintains the RAM contents. FreeRTOS is structures such that the default low power mode can be completely overridden by an application defined version (by providing your own implementation of the low power functions, which are weekly defined symbols in the core code), or simply extended using the pre and post sleep macros. The Atmel low power library functions can be called from the pre and post sleep macros to enter the Atmel specific low power modes.
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.