Agree- but there should be some way of easily knowing whether called by boot 
loader or actual system.

Sterling

> On Apr 10, 2017, at 6:53 PM, will sanfilippo <wi...@runtime.io> wrote:
> 
> Thinking about this more… (which is almost never a good thing with me):
> 
> Cortex-M MCU manufacturers produce a file called system_xxxx.c (where xxx is 
> the name of the mcu). There is a function in that file called SystemInit. 
> Generally, this is something that should be called as early as possible and 
> is called in the startup code. What I am now considering doing is adding our 
> own version of “SystemInit” as I do not think it proper to modify the 
> system_xxx.c module unless absolutely necessary.
> 
> To be more concise:
> 
> * SystemInit() will still be called and will remain exactly the way it is now.
> * Add a function in hal_system.c (which is in hw/mcu) called 
> hal_system_init().
> * This function will be called by the startup code after SystemInit is called.
> * The configuration variable for DCDCEN will live in the MCU (default to 0) 
> and will be overridden by any BSP that can support it.
> 
> NOTE: I will comment on this in the hal_system_init() function, but this 
> function will be called by both the bootloader and the app. If there is a 
> case where doing something twice is undesirable that will have to be dealt 
> with by anyone adding code to hal_system_init().
> 
> Comments?
> 
>> On Apr 7, 2017, at 4:50 PM, Sterling Hughes 
>> <sterling.hughes.pub...@gmail.com> wrote:
>> 
>> Hi,
>> 
>> Couple of thoughts:
>> 
>> - I think this function/syscfg belongs in the MCU definition, as a 
>> configuration item that can be controlled by the BSP.
>> 
>> - I think it should be called as early as possible, so probably 
>> hal_bsp_init().
>> 
>> - It’s a bid odd that hal_bsp_init() is the same for bootloader and running 
>> image, we should probably have an option to make this different.  I’d lean 
>> to having more functionality in the image, because it’s upgradable.
>> 
>> Sterling
>> 
>>> On 7 Apr 2017, at 16:32, will sanfilippo wrote:
>>> 
>>> Hello:
>>> 
>>> I want to add some code that enables the DC/DC regulator for the nordic 
>>> chips. Enabling this regulator reduces power consumption (considerably). 
>>> For example, using the LDO when running from flash (cache enabled) is 
>>> typically 7.4mA; using the DC/DC regulator it goes to 3.7 mA.
>>> 
>>> It would be best to turn this on as soon as possible but it should only be 
>>> enabled if there is some external circuitry attached to some of the pins 
>>> (see the product specifications for more details). For all the BSP’s 
>>> currently in the repo, the DC/DC regulator can (and should) be enabled. 
>>> GIven that there is external circuitry involved I was going to create a 
>>> syscfg variable that would either exist in the BSP or be overridden by the 
>>> BSP. What I am having a bit of trouble figuring out is where should the 
>>> code to enable the DC/DC regulator go?
>>> 
>>> We have a choice of putting it in an existing place or doing something new. 
>>> It seems to me that if we choose an exisiting place it would go in either 
>>> hal_bsp_init() or hal_system_start().
>>> 
>>> Some comments about the existing functions:
>>> 
>>> hal_system_start():
>>> * Code would only need to be modified in one place (in hw/mcu).
>>> * This function is called after the bootloader does some work, so more 
>>> power savings could be realized earlier on.
>>> * If you build an image with no bootloader I do not think this is called.
>>> * It might be a bit of an odd place to put this code (enabled the DC/DC 
>>> regulator).
>>> 
>>> hal_bsp_init():
>>> * This is called early on by the bootloader. It is also called by the 
>>> application which is a bit confusing to me. I am not super familiar with 
>>> the bootloader but unless this function exists in some place I do not see 
>>> or we override bsp syscfg variables in the bootloader app, hal_bsp_init() 
>>> is going to do things twice. Is this true or am I missing something?
>>> * We would have to modify hal_bsp_init() in all the bsps.
>>> 
>>> Honestly, I am not too concerned about having to modify all the bsps that 
>>> use the nordic chip if the community thinks this code belongs in 
>>> hal_bsp_init().
>>> 
>>> Any comments/suggestions?
>>> 
>>> Thanks!
>>> 
>>> PS If we decide that this code should exist in hw/mcu what I would do is to 
>>> create a syscfg variable in hw/mcu/nordic (or hw/mcu/nordic/nrf52xxx and 
>>> hw/mcu/nordic/nrf51xxx) called MCU_DCDC_ENABLE (or some such). By default, 
>>> this will be 0. All the bsp syscfg.yml files will override this setting.
> 

Reply via email to