Re: HAL architecture


Erwan Gouriou
 

Additionally to Carles's answer, let me point you to an on going PR that aims at implementing lp modes on stm32:

It only supports L4/WB series for now, but you can contact François in CC if you have some questions to adapt this to your use case.

Cheers

On Thu, 4 Jun 2020 at 16:58, Cufi, Carles <Carles.Cufi@...> wrote:

Hi Noëlle,

 

Thanks for the kind words.

You can use CMSIS, which is built-in with Zephyr, for WFI.

 

Simply use:

 

__WFI();

 

in your C code.

 

The definition is here:

https://github.com/zephyrproject-rtos/cmsis/blob/master/CMSIS/Core/Include/cmsis_gcc.h#L909

 

That said, are you sure you  need to invoke the WFI instruction manually? this is automatically done by Zephyr when the core can be powered down, for example:

https://github.com/zephyrproject-rtos/zephyr/blob/master/arch/arm/core/aarch32/cpu_idle.S#L101

 

Thanks,

 

Carles

 

From: users@... <users@...> On Behalf Of Noëlle Clement via lists.zephyrproject.org
Sent: 04 June 2020 15:09
To: users@...
Subject: [Zephyr-users] HAL architecture

 

Hi everyone!

 

First of all: thanks specifically to Carles Cufi for taking the time a few months ago to give very detailed answers to my questions on whether Zephyr would be a right choice for our device. Partially because of this we're going with Zephyr for now - at least for the upcoming phase where I'm going to develop a prototype!

 

The first step for this prototype is making sure that the OS actually supports the low power mode we need to still meet our battery life requirements. Some context:

- We use the STM32L151CC MCU

- We need to be able to request the WFI (wait_for_interrupt) instruction (we use that one right now)

- In our current (bare-metal) code we use CMSIS +  a separate library (STM32 Standard Peripheral Library), of which the latter actually includes functions for requesting low power modes (including WFI)

 

I'm trying to figure out whether this specific instruction is already part of the HAL of Zephyr for the STM32Lxx MCU's. However, I'm kind of getting lost in the code, since the abstraction seems to be dispersed over multiple locations. I've looked into the documentation of course, but wasn't able to find an answer for my specific question. 

 

It would help me tremendously if someone could point me in the right direction or give a summary of the architecture, so I can check whether it's already supported or can start with implementing it myself.

 

Quick note that I'm relatively new to this, so if you need more information to understand my question or help me, I'm happy to provide it!

 

All the best,

Noelle 

 

Join users@lists.zephyrproject.org to automatically receive all group messages.