2026-03-31 6:40 AM
Heyho,
I'm currently designing a new modular system, with an STMH7 on the base-card. That one's basically up and running, including a self-made bootloader.
Now I'm working on some new modules, these will be connected to the "base H7", probably via I2C, 2 extra UART lines might also be possible.
The previous system used ATmega-MCUs on the modules, now we'll surely use some STM32 type. These modules will not do any DSP or computing, so a "small" STM32 will do (tending towards L07x because of the EEPROM).
To save some dev time I'm thinking about using the internal bootloader for the module MCU, controlled by the base H7.
I have checked the application notes (AN2606 and the ANs depending on the BL interface), also found the example source code from ST on Github.
So far that looks okay and doable, nevertheless user experience always wins over "reading". :D
So...
Thanks in advance!
Solved! Go to Solution.
2026-04-07 10:47 PM
Thanks again for all your input.
With all the info, having checked all documentation, I have decided against the system bootloader.
Reasons for that:
2026-03-31 7:27 AM
Hi @LCE
ST does not provide the bootloader source code. However, application note AN2606, "STM32 Microcontroller System Memory Boot Mode," offers comprehensive details about the STM32H7xx bootloader functionality and implementation.
Best regards,
Bouraoui
2026-03-31 7:43 AM - edited 2026-03-31 7:50 AM
Okay, I thought I saw some example code from ST on Github?
AN2606 shows some basic info, the details are in the interface-dependent ANs.
BTW, I cannot find info about flash page size, neither in the DS, nor in the DM... why and where?
Edit: okay, found that in the RM under NVM organization.
Anyway, would be nice if one could find stuff like that with a simple "page size" search, or something similar.
2026-03-31 7:52 AM - edited 2026-03-31 7:57 AM
@LCE wrote:I thought I saw some example code from ST on Github?
Maybe that was for the "Host" side of the bootloader?
Maybe what @Bowman32 means is that ST don't provide the internal source for the code that's in ROM within the STM32?
That would make sense ...
PS:
The STM32 Open Bootloader supports exactly same protocol interfaces as STM32 System Bootloaders - so you could use that ... ?
2026-03-31 8:05 AM
I definitely mean the host side - I cannot do anything about the in-built bootloader anyway...
> The STM32 Open Bootloader supports exactly same protocol interfaces as STM32 System Bootloaders ...
Yes, that's what I found, so I was surprised about the "no, we don't" answer - classical misunderstanding.
2026-03-31 8:18 AM
@Tesla DeLorean points to the MKRWANFWUpdate_standalone as a Host for FW updates using the System Bootloader.
Also here.
Seems to be based on stm32flash: https://github.com/stm32duino/stm32flash
2026-03-31 8:23 AM
@LCE wrote:
- Anybody using the ST bootloaders in some real-life products ?
So, from the above, it seems that Arduino have used it in their MKR WAN 1300:
https://docs.arduino.cc/hardware/mkr-wan-1300/
2026-03-31 8:32 AM - edited 2026-03-31 8:37 AM
@LCE wrote:
- Anybody using the ST bootloaders in some real-life products ?
Many ST customers are using the built-in bootloader but I don't have the visibility on how they are using it.
For bootloader host side you need to refer to the respective ANs.
Example for I2C: AN4221 "I2C protocol used in the STM32 bootloader"
For USART: AN3155 "How to use USART protocol in bootloader on STM32 MCUs"
You need to implement the host protocol yourself.
2026-03-31 8:57 AM
As I've written, yes, I have found and checked the ANs.
> Many ST customers are using the built-in bootloader but I don't have the visibility on how they are using it.
@mƎALLEm and the ST support team doesn't have too many customers complaining / having troubles with it ? :D
2026-03-31 9:10 AM - edited 2026-03-31 9:16 AM
@LCE wrote:
@mƎALLEm and the ST support team doesn't have too many customers complaining / having troubles with it ? :D
To be honest, as any other features/peripherals, the bootloader could have issues. The limitations are listed in the errata sheet.
For example in the case of STM32L4Rxxx (ES0393) (see the screenshot in the attachment).
So need to check the errata sheet first then do some tests..