cancel
Showing results for 
Search instead for 
Did you mean: 

STM32U5A9 boot fail at low temperatures

NPato
Associate III

Hi,

We have a design that at normal temperatures runs fine (21C). If it goes below 0C it starts failing to boot.

The system has the Secure Boot Secure Firmware Update (SBSFU) system on it. We found that putting a delay at the start of the main() function in bl2_main.c seems to allow it to run. The delay needs to be about half a second.

Then as we reduce the temperature towards -40C we find we need to increase the delay to over a second to get it to work.

Does this sound familiar to anyone? Any ideas what could be going on?

Thanks

Nigel

14 REPLIES 14

I haven't got a STM32U5A9J-DK board to try.

CMYL
ST Employee

I don't think so, we need to check the board components, that's why I asked this question.

NPato
Associate III

Thanks all for the suggestions, we've found the problem.
It's related to the MCUBOOT_EXT_LOADER functionality. In boot_platform_init() towards the end there is a check for a BUTTON_PIN state and if high it tries to run a loader image. In our system this pin is not connected and must be floating high when cold causing it to attempt to run the loader image which also looks like it doesn't work.

It is not obvious to know this has to be configured and it is not helped that this pin is defined within the boot_hal.c file see https://github.com/STMicroelectronics/STM32CubeU5/blob/main/Projects/B-U585I-IOT02A/Applications/SBSFU/SBSFU_Boot/Src/boot_hal.c

To solve this we will probably disable MCUBOOT_EXT_LOADER as we probably don't need it.

Watch for this floating/thresholding issue on pins like BOOT0, this should be pulled down in designs to ensure as the voltage ramps and the part attains viability the level is not ill defined. Some people ground the pin directly, but that makes diagnostic/recovery options difficult later. BOOT0 floating issues are recurrent topic on the forum.

The speed the supplies ramp can change based on temperature, humidity, and input voltages, etc. External POR circuits with higher thresholds, or those managing multiple supplies/sequencing can help startup robustness.

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

BOOT0 has been handled as we knew about that functionality. The problem was the SBSFU loader pin was not obvious functionality, would have helped if this had to be explicitly implemented (maybe in a config function) rather than defaulting to a random pin. That way if you are expecting the functionality you'd implement the required code.