The interaction between hardware on/off and sleep states usually occurs on IDLE 
loop. I'm not sure if you are aware of this option but you can have a board 
specific idle loop implementation. This is what I usually do to implement 
project specific handling of sleep states. 

Best,
Matias

On Wed, Mar 10, 2021, at 11:39, Cis Van Mierlo wrote:
> Hi Matias,

>  

> I indeed saw that there are several governors.

>  

> I implemented PM switches in the application code (you could see this as a 
> governor), there is for example a sleep state of the application, there the 
> PM_SLEEP state is used to set the MCU in a very low power state.


> Another one is the PM_STANDBY, where the MCU will be put in very low power 
> run mode, with only one SPI bus and the console UART enabled. All on a slower 
> clock source. To reduce as much power as possible. 
> 
> But the problem that I have is that these peripherals and MCU modes are chip 
> specific and you want to do the configuration of which MCU mode, which 
> peripherals, etc. to enable in a power mode per board/project. Because then 
> you know which peripherals you can turn off in a certain mode to reduce as 
> much power, but still have the application states functional.  
> 
> This is what I wanted to bring to a discussion on how to solve this. 
>  

> Kind regards,

>  


> Cis van Mierlo
> Embedded Software Engineer

> NXP Semiconductors, CTO Systems Innovations


> 
> High Tech Campus 46, room 0.64, 5656 AE Eindhoven, The Netherlands
> E-mail: cis.van.mie...@nxp.com 
> Internet: http://www.nxp.com

>  


> *From:* Matias N. <mat...@imap.cc> 
> *Sent:* Friday, March 5, 2021 4:32 PM
> *To:* dev@nuttx.apache.org
> *Subject:* [EXT] Re: Project specific power management configuration

>  

> *Caution: *EXT Email

> Hi,

>  

> I'm not entirely sure what is the specific control over PM you need but some 
> time ago I introduced the notion of "governor" which lets you select either 
> the activity based one (which uses a specific algorithm to control states), a 
> greedy governor (which lets an application directly control states via 
> relax/stay calls). This can easily be extended to have another governor or 
> even an application defined one (in that case, there need to be some extra 
> logic to receive the lower-half of the governor from board logic).

>  

> Best,

> Matias

>  

> On Fri, Mar 5, 2021, at 07:15, Cis Van Mierlo wrote:

>> Hi all,

>>  

>> Me and my colleagues (NXP mobile robotics) encountered a problem and we 
>> would like to start a discussion on how to solve that. We're making a 
>> development board using NuttX and we would like to add the power mode 
>> configuration to it. But this needs to be specific for this "project".

>>  

>> The problem:

>> The pm.h specific logic is in the chip dependent code (for example the 
>> up_pm_prepare() and up_pm_notify() callback functions are located in 
>> nuttx/arch/arm/src/s32k1xx/s32k1xx_clockconfig.c for the power mode switch 
>> of the MCU). And for peripherals in the chip specific files as well, for 
>> example to enable/disable peripherals, like in 
>> nuttx/arch/arm/src/s32k1xx/s32k1xx_serial.c to enable the serial on the 
>> other clock which is active in the MCU low power run mode.

>>  

>> But you should not decide on chip level what your current board is doing, 
>> each board/project would want to have its own power optimizations and 
>> ability to enable/disable peripherals depending on the use case.

>>  

>> So in that case you would want to give the user/developer the option to 
>> refine which power reductions he will use for his product/project.

>>  

>> We have several ideas which we would like to use to start a discussion on 
>> this.

>>  

>> Idea 1:

>> Add the configuration with the kconfig files to for example "System Type" in 
>> menuconfig. Make a PM configure part in which you can enable/disable the 
>> various PM states (PM_IDLE, PM_STANDBY, PM_SLEEP) and going in this PM state 
>> will allow you to configure in what state the MCU should be and which 
>> peripherals should be enabled.

>>  

>>  Machine generated alternative text: menuconfig Build Setup System Type 
>> Allows user to specify which peripherals are enabled In e specflc power mode 
>> and in which mode the MCI-I Is PM configuration IDLE SLEEP Copy 
>> configuratjon from menuconfig (pherjpherals)? chip specific MCIJ mode RUN 
>> chip specific MCIJ mode UART CARTO LIARTI only show PM suppoƤed peripherals 
>> HSRUN RUN VLPR STOP 

>> Idea 2:

>> Another idea is that you add the PM configuration of the peripherals, to the 
>> peripheral configuration.

>> 
>> Machine generated alternative text: menuconfig Build Setup System Type 
>> Peripheral Selection UART CARTO LIARTI BAUD rate OMA support Power 
>> Management NORMAL PM IDLE PM STANDBY PM SLEEP 
>> Of course we are open to other ideas. We just wanted to get a discussion 
>> started on how to do this the best way.

>>  

>> Kind regards,

>>  

>> Cis van Mierlo

>> Embedded Software Engineer

>> NXP Semiconductors, CTO Systems Innovations

>>  

>> High Tech Campus 46, room 0.64, 5656 AE Eindhoven, The Netherlands

>> E-mail: cis.van.mie...@nxp.com 

>> Internet: http://www.nxp.com 
>> <https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.nxp.com%2F&data=04%7C01%7Ccis.van.mierlo%40nxp.com%7Cffe5a6177a3c45a66afd08d8dfebe00b%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637505551459130586%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=CCwUYCNICORguVhH3hbnbbzI2rpWyUxTZUvSBVi5%2Fu8%3D&reserved=0>

>>  

>>  

>> *Attachments:*

>>  * image001.png
>>  * image002.png
>>  * PM_mode_configuration_option.png
>>  * PM_mode_configuration_option2.png
>  

> 
> *Attachments:*
>  * image001.png
>  * image002.png

Reply via email to