Hi Olivier, Welcome to RIOT! There is a pull request to integrate stop modes for the Kinetis CPUs [1]. There's no VLPR or VLPW yet, but STOP, VLPS, and LLS are working. It does need a rebase though. We could use some help reviewing this and some other related Kinetis pull requests [2], [3], [4] if you would like to help with this. Feel free to open new PRs for any other improvements you may have.
[1]: https://github.com/RIOT-OS/RIOT/pull/7897 [2]: https://github.com/RIOT-OS/RIOT/pull/8930 [3]: https://github.com/RIOT-OS/RIOT/pull/8933 [4]: https://github.com/RIOT-OS/RIOT/pull/8814 Best regards, Joakim On Wed, May 16, 2018, 09:01 Matthew Blue <[email protected]> wrote: > Hi Olivier, > > Unfortunately, it seems that low power management hasn't gotten a lot > of love for most platforms yet. The basic API is in place though, if you > wish to implement it on your platform. > > Relevant files: > sys/include/pm_layered.h > sys/pm_layered/pm.c > drivers/include/periph/pm.h > drivers/periph_common/pm.c > > The PR that introduced power management: > https://github.com/RIOT-OS/RIOT/pull/6160 > > This command will let you find a few areas where the API has been used: > grep -r -e 'pm_[un]*block' -e pm_set > > In general I think the idea is to number the power modes such that you: > * Start by giving your lowest power mode 0 > * Then find the next lowest power mode that supports features that are > a superset of the features supported by 0, and make that mode 1 > * Repeat until you run out of power modes. > > You then write a function pm_set in cpu/*/periph/pm.c that implements > switching the power modes. And also you set up anything that can't run > in a certain power mode to pm_block that mode, and then to pm_unblock > when it stops running. I think the kernel then handles the rest. > > There may be some details I missed, because I am not super-familiar > with the system, but this should give you a good start. > > Good luck! > Matthew Blue > > > On Wed, 16 May 2018 08:06:45 +0200 > Olivier Fauchon <[email protected]> wrote: > > > Hello, > > > > I'm using RIOT with KW2xD Kinetis MCU for Wireless sensors. > > > > I could observe that the board's current is 10mA when idle which is > > too high for long battery > > operation. > > > > The application note : > > http://cache.freescale.com/files/32bit/doc/app_note/AN4503.pdf), > > says there are Very Low Power Run / Wait / Stop modes. > > > > There are at lease these functions to integrate in RIOT Kernel. > > > > void enter_vlpr(void); => Enter low power run mode > > void exit_vlpr(void); => Go back in regular power run mode > > void enter_vlps(void); => Go to low power sleep > > > > What is the correct way to integrate this low power mode in Riot Power > > management? > > Are there existing implementation for these low power modes for other > > MCUs to take in example ? > > > > Thanks > > > > Olivier > > _______________________________________________ > users mailing list > [email protected] > https://lists.riot-os.org/mailman/listinfo/users >
_______________________________________________ users mailing list [email protected] https://lists.riot-os.org/mailman/listinfo/users
