[riot-users] Cortex Kinetis KW2xD Low Power Modes

Olivier Fauchon ofauchon2204 at gmail.com
Sat May 19 22:23:52 CEST 2018


Joakim, Matthew,

Thanks for your help.

@Joakim: I cloned your repository, I checkout the pr/kinetis-pm branch and
rebase from master
Then I turned ENABLE_LEDS 1 in pm.c to facilitate debugging.

I build a sample application with a very simple main() loop:

while (1){
   printf("*** pause 5s ***\n");
   xtimer_sleep(5);
}

With this setup, I could run the above code, but the MCU is  idling
in KINETIS_PM_WAIT mode
(Lowest power saving ?).

Maybe I missed something in my Makefiles  or includes (llwu, pm_layered ?)
to enable the advanced power saving modes ?

Are there changes to make on the board I use (pba-d-01-kw2x) too  ?

Do you have a test application I can use as a reference implementation ?

Thanks

Olivier Fauchon



















2018-05-16 20:07 GMT+02:00 Joakim NohlgÄrd <joakim.nohlgard at eistec.se>:

> 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 <matthew.blue.neuro at gmail.com>
> 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 <ofauchon2204 at gmail.com> 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
>> users at riot-os.org
>> https://lists.riot-os.org/mailman/listinfo/users
>>
>
> _______________________________________________
> users mailing list
> users at riot-os.org
> https://lists.riot-os.org/mailman/listinfo/users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.riot-os.org/pipermail/users/attachments/20180519/b441f0ff/attachment.html>


More information about the users mailing list