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

>  

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

Reply via email to