How to check bootloader version in flash STM32H7?
There are two very different “bootloaders” people mean on an STM32H7—pick the one you care about:
A) ST’s system bootloader (ROM, not in Flash)
This is ST’s factory ROM in System Memory. To read its version you must boot into the ROM and ask it.
Quick steps (works on H7):
-
Enter system bootloader
-
Pull BOOT0=1 and reset, or jump from your app to the System Memory start address listed for your exact H7 part in AN2606 (tables show the address per device). Example posts show H723 using 0x1FF0_9800 (address varies by model, check AN2606).
-
-
Talk to the bootloader over one of the supported links (UART/I²C/USB-DFU/FDCAN/SPI per device in AN2606).
-
Issue “Get Version”
-
UART: send 0x7F to sync, then the Get Version & RDP Status command (0x01 + 0xFE). The ROM replies with a one-byte bootloader version (e.g., 0x93 ⇒ V9.3). Protocol is documented in AN3155 (USART) and AN4221 (I²C).
-
Tools: STM32CubeProgrammer will show the bootloader version after connecting in bootloader mode (USB DFU/UART).
-
Note: Don’t confuse Get (0x00) (returns protocol version + command list) with Get Version (0x01) (returns the bootloader version). Both are in AN3155.
B) Your own bootloader in user Flash
If you wrote a Flash-resident bootloader, define the version yourself in a fixed metadata spot and read it like any other constant:
Typical placements are at start of Flash (with vector table following) or in a dedicated metadata page near the end of Flash; both are fine if your linker script reserves the region.
FAQ
-
“Can I read the ST ROM bootloader version via SWD without entering it?” No. It’s not stored in user Flash; query it only after booting into System Memory via the official command set.
-
“Where is the exact System Memory base for my H7?” In AN2606 under your specific part number; addresses differ across H7 sub-families.

评论
发表评论