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 <[email protected]>:
> 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
>
>
_______________________________________________
users mailing list
[email protected]
https://lists.riot-os.org/mailman/listinfo/users