Open Bootloader is an In-Application programming (IAP) provided in the STM32Cube MCU Packages and GitHub. It is fully compatible with STM32 System Bootloader so that it have the same supported interfaces and commands. It's also using the same Tools such as STM32CubeProgrammer.
Open Bootloader is provided as an example that can be used by any customer who wants to build and customize his own Bootloader starting from a good basis. It allows all possible bootloader operations (Read, write, erase, jump...) into internal (Flash, SRAM, OTP...) or external memory using one of the available communication interfaces (USART, I2C, SPI, USB-DFU, FDCAN...).
Open Bootloader supplies services to the Host (can be STM32CubeProgrammer or another user made host) in order to perform all possible Bootloader operations.
Open Bootloader relies on STM32Cube HAL/LL drivers for hardware system initialization such as the clocks and the communication interfaces configuration.
Open Bootloader code can be loaded at any address of user Flash memory with taking necessary precautions to avoid erasing or corrupting it by error (for example use write protection mechanism).
Open Bootloader is executed by Cortex-M processor on the non-secure domain and uses the following resources:
Open Bootloader can be customized by changing its location (ie. load it in last user Flash sector or other sectors), its supported protocols, its supported interfaces, and its supported operations.
Since Open Bootloader supports exactly same protocol interfaces as STM32 System Bootloader, following list of documents provide details of how to use each protocol:
A useful introductory video series, in six parts, explaining how to use Open Bootloader step by step, can be found here:
All STM32 System Bootloader commands can be supported by Open Bootloader, which includes:
The user can customize the list of supported commands for a specific interface by removing the commands that he don't need.
More details about how to do that can be found in the Notes
section of the README.md
file of the application.
In order to make the program work, you need to do the following:
Following physical connections can be used with STM32CubeProgrammer host:
Note
Hardware and Software environment
of the README.md
file of the application.--recursive
has to be specified as shown below.git clone --recursive https://github.com/STMicroelectronics/stm32l5-openbl-apps.git
stm32l5-openbl-apps
as the current working directory).git pull
git submodule update --init --recursive
git clone
command, then the required components have to be collected manually by the user.Product | Board | Application Version |
---|---|---|
STM32L5xx | NUCLEO-L552ZE-Q | v1.0.0 |
Please refer to the CONTRIBUTING.md guide.