2025-02-24 3:01 PM
I have on my desk an STM32F407 Discovery board and an STM32U083 Nucleo board. My intent is to write software for the F407 to bootload the U083 via I2C. As far as I can tell, these are the general steps:
Problem is, I can't even seem to do step 1. I have a logic analyzer verifying NRST and BOOT0 at the U083 chip, but regardless of the state of BOOT0, if I reset the U083, it boots from flash (i.e. I see my debug output on the UART).
Looking at RM0503, section 2.5 Boot configuration, Table 6 Boot modes, there are two ways to boot into system memory. Summarizing the table's logic conditions:
Here are the option bytes and their factory default values:
BOOT_LOCK, naturally, defaults to 0, so that's fine. But all of the other bits default to 1, including nBOOT_SEL, which needs to be 0 to allow BOOT0 to do, well, anything.
Am I correct in that it's not possible to bootload a U083 device via I2C unless you've touched it at least once with a programmer and cleared the nBOOT_SEL bit? (If so, that's extremely annoying for our rev. A prototype.)
Dana M.
Solved! Go to Solution.
2025-04-10 6:32 AM
I'm still waiting an answer.
I will let you know as soon as I have any feedback.
Thank you for your patience.
2025-06-25 3:47 AM
Hello,
This is an answer from our expert:
STM32U0 remains using pattern 11 but:
BOOT_LOCK(bit) = 0, nBoot1(bit) = 1, Boot0(pin) = 1 and nBOOT0_SEL(bit) = 1
must be changed to
BOOT_LOCK(bit) = 0, nBoot1(bit) = 1, Boot0(pin) = 1 and nBOOT0_SEL(bit) = 0
AN2606 will be updated accordingly.
2025-06-25 9:24 AM
@mƎALLEm wrote:Hello,
This is an answer from our expert:
STM32U0 remains using pattern 11 but:
BOOT_LOCK(bit) = 0, nBoot1(bit) = 1, Boot0(pin) = 1 and nBOOT0_SEL(bit) = 1
must be changed to
BOOT_LOCK(bit) = 0, nBoot1(bit) = 1, Boot0(pin) = 1 and nBOOT0_SEL(bit) = 0AN2606 will be updated accordingly.
The correction makes sense. However, I still dispute that the U0 is pattern 11. @TDK pointed out the definition of Pattern 11 earlier in the thread:
Existing definition of Pattern 11
According to this chart, if the device is not locked, and neither the nBOOT0_SEL nor nBoot0 bits have been programmed (i.e. they are each set to 1 from the factory), then if the main flash is empty, the bootloader should start automatically. Based on my previous testing, I did not find this to be the case.
Has your expert confirmed that a factory-new U083 or U073, when powered up, automatically enters the bootloader?
Dana M.