STM32 Microcontroller System Memory Boot Mode
STM32 Microcontroller System Memory Boot Mode
Application note
STM32 microcontroller system memory boot mode
Introduction
The bootloader is stored in the internal boot ROM memory (system memory) of STM32
devices. It is programmed by ST during production. Its main task is to download the
application program to the internal Flash memory through one of the available serial
peripherals (USART, CAN, USB, I2C, SPI, etc.). A communication protocol is defined for
each serial interface, with a compatible command set and sequences. This document
applies to the products listed in Table 1. They are referred as STM32 throughout the
document.
This application note presents the general concept of the bootloader. It describes the
supported peripherals and hardware requirements to be considered when using the
bootloader of STM32 devices. However the specifications of the low-level communication
protocol for each supported serial peripheral are documented in separate documents as
referred in Section 2: Related documents.
Contents
1 General information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2 Related documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
List of tables
List of figures
1 General information
Note: Arm is a registered trademark of Arm Limited (or its subsidiaries) in the US and/or
elsewhere
2 Related documents
For each supported product (listed in Table 1), please refer to the following documents
available from www.st.com:
• Datasheet or databrief
• Reference manual
• Application Note:
– AN3154: CAN protocol used in the STM32 bootloader
– AN3155: USART protocol used in the STM32 bootloader
– AN3156: USB DFU protocol used in the STM32 bootloader
– AN4221: I2C protocol used in the STM32 bootloader
– AN4286: SPI protocol used in the STM32 bootloader
3 Glossary
F0 Series:
STM32F03xxx is used to refer to STM32F030x4, STM32F030x6, STM32F038x6,
STM32F030xC, STM32F031x4 and STM32F031x6 devices.
STM32F04xxx is used to refer to STM32F042x4 and STM32F042x6 devices.
STM32F05xxx and STM32F030x8 devices is used to refer to STM32F051x4,
STM32F051x6, STM32F051x8, STM32F058x8 and STM32F030x8 devices.
STM32F07xxx is used to refer to STM32F070x6, STM32F070xB, STM32F071xB
STM32F072x8 and STM32F072xB devices.
STM32F09xxx is used to refer to STM32F091xx and STM32F098xx devices.
F1 Series:
STM32F10xxx is used to refer to Low-density, Medium-density, High-density, Low-
density value line, Medium-density value line and High-density value line devices:
Low-density devices are STM32F101xx, STM32F102xx and STM32F103xx
microcontrollers where the Flash memory density ranges between 16 and 32
Kbyte.
Medium-density devices are STM32F101xx, STM32F102xx and STM32F103xx
microcontrollers where the Flash memory density ranges between 64 and 128
Kbyte.
High-density devices are STM32F101xx and STM32F103xx microcontrollers
where the Flash memory density ranges between 256 and 512 Kbyte.
Low-density value line devices are STM32F100xx microcontrollers where the
Flash memory density ranges between 16 and 32 Kbyte.
Medium-density value line devices are STM32F100xx microcontrollers where
the Flash memory density ranges between 64 and 128 Kbyte.
High-density value line devices are STM32F100xx microcontrollers where the
Flash memory density ranges between 256 and 5128 Kbyte.
STM32F105xx/107xx is used to refer to STM32F105xx and STM32F107xx devices.
STM32F10xxx XL-density is used to refer to STM32F101xx and STM32F103xx
devices where the Flash memory density ranges between 768 Kbyte and 1 Mbyte.
F2 Series:
STM32F2xxxx is used to refer to STM32F215xx, STM32F205xx, STM32F207xx and
SMT32F217xx devices.
F3 Series:
STM32F301xx/302x4(6/8) is used to refer to STM32F301x4, STM32F301x6,
STM32F301x8, STM32F302x4, STM32F302x6 and STM32F302x8 devices.
STM32F302xB(C)/303xB(C) is used to refer to STM32F302xB, STM32F302xC,
STM32F303xB and STM32F303xC devices.
STM32F302xD(E)/303xD(E) is used to refer to STM32F302xD, STM32F302xE,
STM32F303xD and STM32F303xE devices.
STM32F303x4(6/8)/334xx/328xx is used to refer to STM32F303x4, STM32F303x6,
STM32F303x8, STM32F334x4, STM32F334x6, STM32F334x8, and STM32F328x8
devices.
STM32F318xx is used to refer to STM32F318x8 devices.
STM32F358xx is used to refer to STM32F358xC devices.
STM32F373xx is used to refer to STM32F373x8, STM32F373xB and STM32F373xC
devices.
STM32F378xx is used to refer to STM32F378xC devices.
STM32F398xx is used to refer to STM32F398xE devices.
F4 Series:
STM32F40xxx/41xxx is used to refer to STM32F405xx, STM32F407xx,
STM32F415xx and SMT32F417xx devices.
STM32F401xB(C) is used to refer to STM32F401xB and STM32F401xC devices.
STM32F401xD(E) is used to refer to STM32F401xD and STM32F401xE devices.
STM32F410xx is used to refer to STM32F410x8 and STM32F410xB devices.
STM32F411xx is used to refer to STM32F411xD and STM32F411xE devices.
STM32F412xx is used to refer to STM32F412Cx, STM32F412Rx, STM32F412Vx and
STM32F412Zx devices.
STM32F413xx/423xx is used to refer to STM32F413xG, STM32F413xH and
STM32F423xH devices.
STM32F42xxx/43xxx is used to refer to STM32F427xx, STM32F429xx,
STM32F437xx and STM32F439xx devices
STM32F446xx is used to refer to STM32F446xE and STM32F446xC devices
STM32F469xx/479xx is used to refer to STM32F469xE, STM32F469xG,
STM32F469xI, STM32F479xG and STM32F479xI devices.
F7 Series:
STM32F72xxx/73xxx is used to refer to STM32F722xx, STM32F723xx,
STM32F732xx and STM32F733xx devices.
STM32F74xxx/75xxx is used to refer to STM32F745xx, STM32F746xx and
STM32F756xx devices.
STM32F76xxx/77xxx is used to refer to STM32F765xx, STM32F767xx,
STM32F769xx, STM32F777xx and STM32F779xx devices.
G0Series:
STM32G07xxx/08xxx s used to refer to STM32G07xxx and STM32G08xxx devices.
H7 Series:
STM32H74xxx/75xxx is used to refer to STM32H743xx and STM32H753xx devices.
L0 Series:
STM32L01xxx/02xxx is used to refer to STM32L011xx and STM32L021xx devices.
STM32L031xx/041xx is used to refer to STM32L031xx and STM32L041xx devices.
STM32L05xxx/06xxx is used to refer to STM32L051xx, STM32L052xx,
STM32L053xx, STM32L062xx and STM32L063xx ultralow power devices.
STM32L07xxx/08xxx is used to refer to STM32L071xx, STM32L072xx,
STM32L073xx, STM32L081xx, STM32L082xx and STM32L083xx devices
L1 Series:
STM32L1xxx6(8/B) is used to refer to STM32L1xxV6T6, STM32L1xxV6H6,
STM32L1xxR6T6, STM32L1xxR6H6, STM32L1xxC6T6, STM32L1xxC6H6,
STM32L1xxV8T6, STM32L1xxV8H6, STM32L1xxR8T6, STM32L1xxR8H6,
STM32L1xxC8T6, STM32L1xxC8H6, STM32L1xxVBT6, STM32L1xxVBH6,
STM32L1xxRBT6, STM32L1xxRBH6, STM32L1xxCBT6 and STM32L1xxCBH6
ultralow power devices.
STM32L1xxx6(8/B)A is used to refer to STM32L1xxV6T6-A, STM32L1xxV6H6-A,
STM32L1xxR6T6-A, STM32L1xxR6H6-A, STM32L1xxC6T6-A, STM32L1xxC6H6-A,
STM32L1xxV8T6-A, STM32L1xxV8H6-A, STM32L1xxR8T6-A, STM32L1xxR8H6-A,
STM32L1xxC8T6-A, STM32L1xxC8H6-A, STM32L1xxVBT6-A, STM32L1xxVBH6-A,
STM32L1xxRBT6-A, STM32L1xxRBH6-A, STM32L1xxCBT6-A and
STM32L1xxCBH6-A ultralow power devices.
STM32L1xxxC is used to refer to STM32L1xxVCT6, STM32L1xxVCH6 ,
STM32L1xxRCT6, STM32L1xxUCY6, STM32L1xxCCT6 and STM32L1xxCCU6
ultralow power devices.
STM32L1xxxD is used to refer to STM32L1xxZDT6, STM32L1xxQDH6,
STM32L1xxVDT6, STM32L1xxRDY6, STM32L1xxRDT6, STM32L1xxZCT6,
STM32L1xxQCH6, STM32L1xxRCY6, STM32L1xxVCT6-A and STM32L1xxRCT6-A
ultralow power devices.
STM32L1xxxE is used to refer to STM32L1xxZET6, STM32L1xxQEH6,
STM32L1xxVET6, STM32L1xxVEY6, and STM32L1xxRET6 ultralow power devices.
L4 Series:
STM32L412xx/422xx is used to refer to STM32L412xB, STM32L412x8,
STM32L422xB devices.
STM32L43xxx/44xxx is used to refer to STM32L431xx, STM32L432xx, STM32L433xx
and STM32L442xx and STM32L443xx devices.
STM32L45xxx/46xxx is used to refer to STM32L451xx, STM32L452xx and
STM32L462xx devices.
STM32L47xxx/48xxx is used to refer to STM32L471xx, STM32L475xx, STM32L476xx
and STM32L486xx devices.
STM32L496xx/4A6xx is used to refer to STM32L496xE, STM32L496xG and
STM32L4A6xG devices.
STM32L4Rxxx/4Sxxx is used to refer to STM32L4R5xx, STM32L4R7xx,
STM32L4R9xx, STM32L4S5xx, STM32L4S7xx and STM32L4S9xx devices.
WB Series:
STM32WB55xx is used to refer to STM32WB55Cx, STM32WB55Rx, STM32WB55Vx
devices.
In addition to patterns described above, user can execute bootloader by performing a jump
to system memory from user code. Before jumping to bootloader user must:
• Disable all peripheral clocks
• Disable used PLL
• Disable interrupts
• Clear pending interrupts
System memory boot mode can be exited by getting out from bootloader activation
condition and generating hardware reset or using Go command to execute user code.
Note: If you choose to execute the Go command, the peripheral registers used by the bootloader
are not initialized to their default reset values before jumping to the user application. They
should be reconfigured in the user application if they are used. So, if the IWDG is being
used in the application, the IWDG prescaler value has to be adapted to meet the
requirements of the application (since the prescaler was set to its maximum value).
Note: For STM32 devices having the Dual Bank Boot feature, in order to jump to system memory
from user code, the user has first to remap the System Memory bootloader at address
0x00000000 using SYSCFG register (except for STM32F7 series), then jump to bootloader.
For STM32F7 series, the user has to disable nDBOOT and/or nDBANK features (in option
bytes), then jump to bootloader.
Note: For STM32 devices embedding bootloader using the DFU/CAN interface in which the
external clock source (HSE) is required for DFU/CAN operations, the detection of the HSE
value is done dynamically by the bootloader firmware and is based on the internal oscillator
clock (HSI, MSI).
Thus, when due to temperature or other conditions, the internal oscillator precision is altered
above the tolerance band (1% around the theoretical value), the bootloader might calculate
a wrong HSE frequency value.
In this case, the bootloader DFU/CAN interfaces might dysfunction or might not work at all.
нs ϭ
Z
Zy Ϯ dy
Z^ϮϯϮ
^dDϯϮ
hZd,ŽƐƚ dy
dƌĂŶƐĐĞŝǀĞƌ
Zy DŝĐƌŽĐŽŶƚƌŽůůĞƌ
'E 'E
06Y9
1. A Pull-UP resistor should be added, if pull-up resistor are not connected in host side.
2. An RS232 transceiver must be connected to adapt voltage level (3.3V - 12V) between STM32 device and
host.
Note: +V typically 3.3 V and R value typically 100KOhm.This value depend on the application and
the used hardware.
To use the DFU, connect the microcontroller's USB interface to a USB host (i.e. PC).
ϭ
нs
ϭϬ<
ϯϲ<
sƵƐ
ϭ͘ϱ<
W W
^dDϯϮ
h^,ŽƐƚ
D D DŝĐƌŽĐŽŶƚƌŽůůĞƌ
'E 'E
069
1. This additional circuit permits to connect a Pull-Up resistor to (DP) pin using VBus when needed. Refer to
product section (Table which describes STM32 Configuration in system memory boot mode) to know if an
external pull-up resistor must be connected to (DP) pin.
Note: +V typically 3.3 V.This value depends on the application and the used hardware.
To use the I2C bootloader, connect the host (master) and the desired I2Cx interface (slave)
together via the data (SDA) and clock (SCL) pins. A 1.8 KOhm pull-up resistor has to be
connected to both (SDA) and (SCL) lines.
ϭ͘ϴ<
ϭ͘ϴ<
^> ^>
^dDϯϮ
/Ϯ,ŽƐƚ
^ ^ DŝĐƌŽĐŽŶƚƌŽůůĞƌ
'E 'E
069
Note: +V typically 3.3 V.This value depends on the application and the used hardware.
To use the SPI bootloader, connect the host (master) and the desired SPIx interface (slave)
together via the (MOSI), (MISO) and (SCK) pins. The (NSS) pin must be connected to
(GND). A pull-down resistor should be connected to the (SCK) line.
E^^
DK^/ DK^/
^dDϯϮ
D/^K D/^K
^W/,ŽƐƚ DŝĐƌŽĐŽŶƚƌŽůůĞƌ
^< ^<
Z
'E 'E
069
Note: R value typically 10KOhm. This value depends on the application and the used hardware.
To use the CAN interface, the host has to be connected to the (RX) and (TX) pins of the
desired CANx interface via CAN transceiver and a serial cable. A 120 Ohm resistor should
be added as terminating resistor.
Zy Eͺ, dy
E E ^dDϯϮ
E,ŽƐƚ
ϭϮϬ
ϭϮϬ
dƌĂŶƐĐĞŝǀ dƌĂŶƐĐĞŝǀ
dy Ğƌ Ğƌ Zy DŝĐƌŽĐŽŶƚƌŽůůĞƌ
Eͺ>
'E 'E
069
Note: When a bootloader firmware supports DFU, it is mandatory that no USB Host is connected
to the USB peripheral during the selection phase of the other interfaces. After selection
phase, the user can plug a USB cable without impacting the selected bootloader execution
except commands which generate a system reset.
It is recommended to keep the RX pins of unused bootloader interfaces (USART_RX,
SPI_MOSI, CAN_RX and USB D+/D- lines if present) at a known (low or high) level at the
startup of the bootloader (detection phase). Leaving these pins floating during the detection
phase might lead to activating unused interface.
written but cannot be erased using Erase command. When writing in an OTP memory
location, make sure that the relative protection bit is not reset.
• For STM32 F2, F4 and F7 series the internal flash write operation format depends on
voltage Range. By default write operation are allowed by one byte format (Half-Word,
Word and Double-Word operations are not allowed). to increase the speed of write
operation, the user should apply the adequate voltage range that allows write operation
by Half-Word, Word or Double-Word and update this configuration on the fly by the
bootloader software through a virtual memory location. This memory location is not
physical but can be read and written using usual bootloader read/write operations
according to the protocol in use. This memory location contains 4 bytes which are
described in table below. It can be accessed by 1, 2, 3 or 4 bytes. However, reserved
bytes should remain at their default values (0xFF), otherwise the request will be
NACKed.
The table below lists the valid memory area depending on the bootloader commands.
The system clock is derived from the embedded internal high-speed RC, no external quartz
is required for the bootloader execution.
Note: After the STM32F03xx4/6 devices has booted in bootloader mode, serial wire debug (SWD)
communication is no longer possible until the system is reset. This is because the SWD
uses the PA14 pin (SWCLK) which is already used by the bootloader (USART1_TX).
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
[)UHFHLYHGRQ
86$57[
QR
\HV
'LVDEOHDOO
LQWHUUXSWVRXUFHV
&RQILJXUH
86$57[
([HFXWH
%/B86$57B/RRS
IRU86$57[
069
Note: After the STM32F030xC devices have booted in bootloader mode using USART2, the serial
wire debug (SWD) communication is no more possible until the system is reset, because
SWD uses PA14 pin (SWCLK) which is already used by the bootloader (USART2_RX).
The system clock is derived from the embedded internal high-speed RC, no external quartz
is required for the bootloader execution.
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH,&[
\HV
[)UHFHLYHGRQ 'LVDEOHDOOLQWHUUXSW
86$57[ VRXUFHVDQGRWKHU
\HV LQWHUIDFHVFORFN¶V
QR
'LVDEOHDOOLQWHUUXSW
&RQILJXUH
VRXUFHVDQGRWKHU
86$57[
,&[$GGUHVV LQWHUIDFHVFORFN¶V
'HWHFWHG
QR ([HFXWH
([HFXWH
%/B,&B/RRSIRU %/B86$57B/RRS
,&[ IRU86$57[
06Y9
Table 10. STM32F05xxx and STM32F030x8 devices configuration in system memory boot mode
Bootloader Feature/Peripheral State Comment
The system clock is derived from the embedded internal high-speed RC, no external quartz
is required for the bootloader execution.
Note: After the STM32F05xxx and STM32F030x8 devices have booted in bootloader mode, the
serial wire debug (SWD) communication is no more possible until the system is reset,
because SWD uses PA14 pin (SWCLK) which is already used by the bootloader
(USART2_TX).
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
[)UHFHLYHGRQ
86$57[
QR
\HV
'LVDEOHDOO
LQWHUUXSWVRXUFHV
&RQILJXUH
86$57[
([HFXWH
%/B86$57B/RRS
IRU86$57[
069
Note: After the STM32F04xxx devices have booted in bootloader mode using USART2, the serial
wire debug (SWD) communication is no more possible until the system is reset, because
SWD uses PA14 pin (SWCLK) which is already used by the bootloader (USART2_RX).
The system clock is derived from the embedded internal high-speed RC, no external quartz
is required for the bootloader execution.
Note: Due to empty check mechanism present on this product, it is not possible to jump from user
code to system bootloader.
Such jump will result in a jump back to user flash space.
But if the first 4 bytes of User Flash (at 0x0800 0000) are empty at the moment of jump (ie.
erase first sector before jump or execute code from SRAM while Flash is empty), then
system bootloader will be executed when jumped to.
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
ŽŶĨŝŐƵƌĞ/Ϯdž
ŽŶĨŝŐƵƌĞh^&^ĚĞǀŝĐĞ
[)UHFHLYHG
LJĞƐ
RQ86$57[
LJĞƐ
QR
ŝƐĂďůĞĂůůŝŶƚĞƌƌƵƉƚ
'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU
ƐŽƵƌĐĞƐĂŶĚŽƚŚĞƌ
,&[$GGUHVV
'HWHFWHG \HV LQWHUIDFHVFORFN¶V ŝŶƚĞƌĨĂĐĞƐĐůŽĐŬ͛Ɛ
ŝƐĂďůĞŽƚŚĞƌ
QR ŝŶƚĞƌĨĂĐĞƐĐůŽĐŬ͛Ɛ ([HFXWH &RQILJXUH
ŶŽ %/B,&B/RRSIRU 86$57[
,&[
86%
'HWHFWHG ([HFXWH')8
ERRWORDGHUXVLQJ86% ([HFXWH
LQWHUUXSWV %/B86$57B/RRS
IRU86$57[
069
V10.0 Initial bootloader version At bootloader startup, the HSITRIM value is set to (0)
(in HSITRIM bits on RCC_CR register) instead of
Add dynamic support of default value (16), as consequence a deviation is
USART/USB interfaces on generated in crystal measurement.
V10.1
PA11/12 IOs for small For better results, please use the smallest supported
packages. crystal value (ie. 4 MHz).
Note: If HSI deviation exceeds 1% , the bootloader might not function correctly.
Note: After the STM32F070x6 devices have booted in bootloader mode using USART2, the serial
wire debug (SWD) communication is no more possible until the system is reset, because
SWD uses PA14 pin (SWCLK) which is already used by the bootloader (USART2_RX).
The bootloader has two cases of operation depending on the presence of the external clock
(HSE) at bootloader startup:
• If HSE is present and has a value of 24, 18, 16, 12, 8, 6, 4 MHz, the system clock is
configured to 48 MHz with HSE as clock source. The DFU interface, USART1,
USART2 and I2C1 are functional and can be used to communicate with the bootloader
device.
• If HSE is not present, the HSI is kept as default clock source and only USART1,
USART2 and I2C1 are functional.
The external clock (HSE) must be kept if it’s connected at bootloader startup because it will
be used as system clock source.
Note: Due to empty check mechanism present on this product, it is not possible to jump from user
code to system bootloader.
Such jump will result in a jump back to user flash space.
But if the first 4 bytes of User Flash (at 0x0800 0000) are empty at the moment of jump (ie.
erase first sector before jump or execute code from SRAM while Flash is empty), then
system bootloader will be executed when jumped to.
6\VWHP5HVHW
&RQILJXUH6\VWHPFORFNWR
0+]XVLQJ+6,
+6( QR
0+]"
LJĞƐ
5HFRQILJXUH6\VWHPFORFNWR
0+]XVLQJ+6(
6\VWHP,QLW&ORFN*3,2V
6\VWHP,QLW&ORFN*3,2V ,:'*6\V7LFN
,:'*6\V7LFN
&RQILJXUH86%
&RQILJXUH,&[
[)UHFHLYHG
\HV
RQ86$57[
\HV
QR
'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU
LQWHUIDFHVFORFN¶V
,&[$GGUHVV
'HWHFWHG \HV
'LVDEOHDOOLQWHUUXSW
'LVDEOHRWKHU VRXUFHVDQGRWKHU &RQILJXUH
LQWHUIDFHVFORFN¶V LQWHUIDFHVFORFN¶V 86$57[
QR
QR
06Y9
V10.2 Initial bootloader version At bootloader startup, the HSITRIM value is set to
(0) (in HSITRIM bits on RCC_CR register) instead
of default value (16), as consequence a deviation
Clock configuration fixed is generated in crystal measurement. For better
V10.3
to HSI 8 MHz results, please use the smallest supported crystal
value (ie. 4 MHz).
Note: If HSI deviation exceeds 1% , the bootloader might not function correctly.
Note: After the STM32F070xB devices have booted in bootloader mode using USART2, the serial
wire debug (SWD) communication is no more possible until the system is reset, because
SWD uses PA14 pin (SWCLK) which is already used by the bootloader (USART2_RX).
The bootloader has two cases of operation depending on the presence of the external clock
(HSE) at bootloader startup:
• If HSE is present and has a value of 24, 18, 16, 12, 8, 6, 4 MHz, the system clock is
configured to 48 MHz with HSE as clock source. The DFU interface, USART1,
USART2 and I2C1 are functional and can be used to communicate with the bootloader
device.
• If HSE is not present, the HSI is kept as default clock source and only USART1,
USART2 and I2C1 are functional.
The external clock (HSE) must be kept if it’s connected at bootloader startup because it will
be used as system clock source.
6\VWHP5HVHW
&RQILJXUH6\VWHPFORFNWR
0+]XVLQJ+6,
+6( QR
0+]"
LJĞƐ
5HFRQILJXUH6\VWHPFORFNWR
0+]XVLQJ+6(
6\VWHP,QLW&ORFN*3,2V
6\VWHP,QLW&ORFN*3,2V ,:'*6\V7LFN
,:'*6\V7LFN
&RQILJXUH86%
&RQILJXUH,&[
[)UHFHLYHG
\HV
RQ86$57[
\HV
QR
'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU
LQWHUIDFHVFORFN¶V
,&[$GGUHVV
'HWHFWHG \HV
'LVDEOHDOOLQWHUUXSW
'LVDEOHRWKHU VRXUFHVDQGRWKHU &RQILJXUH
LQWHUIDFHVFORFN¶V LQWHUIDFHVFORFN¶V 86$57[
QR
QR
06Y9
V10.2 Initial bootloader version At bootloader startup, the HSITRIM value is set to
(0) (in HSITRIM bits on RCC_CR register) instead
of default value (16), as consequence a deviation
Clock configuration fixed is generated in crystal measurement. For better
V10.3
to HSI 8 MHz results, please use the smallest supported crystal
value (ie. 4 MHz).
Note: After the STM32F071xx/072xx devices have booted in bootloader mode using USART2, the
serial wire debug (SWD) communication is no more possible until the system is reset,
because SWD uses PA14 pin (SWCLK) which is already used by the bootloader
(USART2_RX).
The system clock is derived from the embedded internal high-speed RC, no external quartz
is required for the bootloader execution.
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
ŽŶĨŝŐƵƌĞ/Ϯdž
ŽŶĨŝŐƵƌĞh^&^ĚĞǀŝĐĞ
[)UHFHLYHGRQ
LJĞƐ
86$57[
LJĞƐ
QR
ŝƐĂďůĞĂůůŝŶƚĞƌƌƵƉƚ
'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU
ƐŽƵƌĐĞƐĂŶĚŽƚŚĞƌ
,&[$GGUHVV
'HWHFWHG LJĞƐ LQWHUIDFHVFORFN¶V ŝŶƚĞƌĨĂĐĞƐĐůŽĐŬ͛Ɛ
ŝƐĂďůĞŽƚŚĞƌ
QR ŝŶƚĞƌĨĂĐĞƐĐůŽĐŬ͛Ɛ ([HFXWH &RQILJXUH
ŶŽ %/B,&B/RRSIRU 86$57[
,&[
86%
'HWHFWHG ([HFXWH')8
ERRWORDGHUXVLQJ86% ([HFXWH
LQWHUUXSWV %/B86$57B/RRS
IRU86$57[
069
Note: After the STM32F09xxx devices have booted in bootloader mode using USART2, the serial
wire debug (SWD) communication is no more possible until the system is reset, because
SWD uses PA14 pin (SWCLK) which is already used by the bootloader (USART2_RX).
The system clock is derived from the embedded internal high-speed RC, no external quartz
is required for the bootloader execution.
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH,&[
\HV
[)UHFHLYHGRQ 'LVDEOHDOOLQWHUUXSW
86$57[ VRXUFHVDQGRWKHU
\HV LQWHUIDFHVFORFN¶V
QR
'LVDEOHDOOLQWHUUXSW
&RQILJXUH
VRXUFHVDQGRWKHU
86$57[
,&[$GGUHVV LQWHUIDFHVFORFN¶V
'HWHFWHG
QR ([HFXWH
([HFXWH
%/B,&B/RRSIRU %/B86$57B/RRS
,&[ IRU86$57[
06Y9
The system clock is derived from the embedded internal high-speed RC, no external quartz
is required for the bootloader execution.
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
[)UHFHLYHGRQ
86$57[
1R
<HV
'LVDEOHDOO
LQWHUUXSWVRXUFHV
&RQILJXUH
86$57[
([HFXWH
%/B86$57B/RRS
IRU86$57[
069
The system clock is derived from the embedded internal high-speed RC for USARTx
bootloader. This internal clock is used also for DFU and CAN bootloaders but only for the
selection phase. An external clock (8 MHz, 14.7456 MHz or 25 MHz.) is required for DFU
and CAN bootloader execution after the selection phase.
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH86%
86%FDEOH
\HV
'HWHFWHG
QR \HV
'LVDEOHDOO
LQWHUUXSWVRXUFHV ,^сϴD,nj͕
ŶŽ [)UHFHLYHGRQ
86$57[ ϭϰ͘ϳϰϱϲD,njŽƌ
&RQILJXUH ϮϱD,nj
86$57[
QR
\HV
)UDPHGHWHFWHGRQ ([HFXWH
&$1[ %/B86$57B/RRS
5HFRQILJXUH6\VWHP
IRU86$57[
FORFNWR0+]DQG
LJĞƐ 86%FORFNWR0+]
*HQHUDWH6\VWHP
LJĞƐ
UHVHW
5HFRQILJXUH6\VWHP
FORFNWR0+]
'LVDEOHDOO
LQWHUUXSWVRXUFHV
&RQILJXUH&$1
([HFXWH
%/B&$1B/RRSIRU
&$1[
069
• The values of the vector table at the beginning of the bootloader code are different. The
user software (or via JTAG/SWD) reads 0x1FFFE945 at address 0x1FFFB004 for
bootloader V2.0 0x1FFFE9A1 for bootloader V2.1, and 0x1FFFE9C1 for bootloader
V2.2.
• The DFU version is the following:
– V2.1 in bootloader V2.1
– V2.2 in bootloader V2.2.
It can be read through the bcdDevice field of the DFU Device Descriptor.
Workaround
• For 64-pin packages
None. The bootloader cannot be used.
• For 100-pin packages
Depending on the used peripheral, the pins for the unused peripherals have to be kept
at a high level during the bootloader activation phase as described below:
– If USART1 is used to connect to the bootloader, PD6 and PB5 have to be kept at a
high level.
– If USART2 is used to connect to the bootloader, PA10, PB5, PA11 and PA12 have
to be kept at a high level.
– If CAN2 is used to connect to the bootloader, PA10, PD6, PA11 and PA12 have to
be kept at a high level.
– If DFU is used to connect to the bootloader, PA10, PB5 and PD6 have to be kept
at a high level.
Note: This limitation applies only to STM32F105xx and STM32F107xx devices with a date code
below 937. STM32F105xx and STM32F107xx devices with a date code higher or equal to
937 are not impacted. See STM32F105xx and STM32F107xx datasheets for where to find
the date code on the device marking.
Workaround
None.
Workaround
None.
The system clock is derived from the embedded internal high-speed RC, no external quartz
is required for the bootloader execution.
6\VWHP5HVHW
&ϮďŝƚƌĞƐĞƚ
;&ϮсϬͿ
LJĞƐ
/ĨsĂůƵĞ
ΛϬdžϬϴϬϴϬϬϬϬŝƐ
LJĞƐ
ǁŝƚŚŝŶŝŶƚ͘^ZD
ĂĚĚƌĞƐƐ -XPSWRXVHUFRGH
LQ%DQN
ŶŽ ŶŽ
/ĨsĂůƵĞ
ΛϬdžϬϴϬϬϬϬϬϬŝƐ
LJĞƐ
ǁŝƚŚŝŶŝŶƚ͘^ZD
ĂĚĚƌĞƐƐ :ƵŵƉƚŽƵƐĞƌĐŽĚĞ
ŝŶĂŶŬϭ
ŶŽ
&RQWLQXH%RRWORDGHUH[HFXWLRQ
'LVDEOHDOO
LQWHUUXSWVRXUFHV
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
\HV &RQILJXUH
86$57[
[)UHFHLYHGRQ ([HFXWH
86$57[ %/B86$57B/RRS
IRU86$57[
QR
069
The system clock is derived from the embedded internal high-speed RC. No external quartz
is required for the bootloader code.
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
[)UHFHLYHGRQ
86$57[
QR
\HV
'LVDEOHDOO
LQWHUUXSWVRXUFHV
&RQILJXUH
86$57[
([HFXWH
%/B86$57B/RRS
IRU86$57[
069
The system clock is derived from the embedded internal high-speed RC for USARTx
bootloaders. This internal clock is also used for CAN and DFU (USB FS Device) but only for
the selection phase. An external clock multiple of 1 MHz (between 4 and 26 MHz) is
required for CAN and DFU bootloader execution after the selection phase.
6\VWHP5HVHW
\HV 'LVDEOHDOO
6\VWHP,QLW&ORFN*3,2V
LQWHUUXSWVRXUFHV
,:'*6\V7LFN
&RQILJXUH
&RQILJXUH86%27*)6
86$57[
GHYLFH
([HFXWH
[)UHFHLYHGRQ %/B86$57B/RRS
86$57[ IRU86$57[
\HV
QR
)UDPHGHWHFWHG +6(GHWHFWHG
QR
RQ&$1[SLQ \HV
\HV
QR QR +6(GHWHFWHG QR 'LVDEOHDOO
LQWHUUXSWVRXUFHV
*HQHUDWH6\VWHP
86%FDEOH
<HV UHVHW 5HFRQILJXUH6\VWHP
'HWHFWHG
FORFNWR0+]
5HFRQILJXUH6\VWHP
FORFNWR0+]DQG
&RQILJXUH&$1
86%FORFNWR0+]
([HFXWH
([HFXWH')8 %/B&$1B/RRSIRU
ERRWORDGHUXVLQJ86% &$1[
LQWHUUXSWV
069
The bootloader has two case of operation depending on the presence of the external clock
(HSE) at bootloader startup:
• If HSE is present and has a value of 24, 18, 16, 12, 9, 8, 6, 4 or 3 MHz, the system
clock is configured to 48 MHz with HSE as clock source. The DFU interface, USART1
and USART2 are functional and can be used to communicate with the bootloader
device.
• If HSE is not present, the HSI is kept as default clock source and only USART1 and
USART2 are functional.
The external clock (HSE) must be kept if it’s connected at bootloader startup because it will
be used as system clock source.
6\VWHP5HVHW
&RQILJXUH6\VWHPFORFNWR
0+]XVLQJ+6,
+6(
ŶŽ
0+]"
zĞƐ
ZĞĐŽŶĨŝŐƵƌĞ^LJƐƚĞŵĐůŽĐŬƚŽ
ϰϴD,njƵƐŝŶŐ,^
^LJƐƚĞŵ/Ŷŝƚ;ůŽĐŬ͕'W/KƐ͕
,:'*6\V7LFN ^LJƐƚĞŵ/Ŷŝƚ;ůŽĐŬ͕'W/KƐ͕
,:'*6\V7LFN
ŽŶĨŝŐƵƌĞh^&^ĚĞǀŝĐĞ
\HV
86%FDEOH
'HWHFWHG 86%
FRQILJXUHG ŝƐĂďůĞĂůůŝŶƚĞƌƌƵƉƚ
LJĞƐ
ƐŽƵƌĐĞƐĂŶĚŽƚŚĞƌ
ŝŶƚĞƌĨĂĐĞƐĐůŽĐŬ͛Ɛ ŝƐĂďůĞŽƚŚĞƌ
QR ŝŶƚĞƌĨĂĐĞƐĐůŽĐŬ͛Ɛ
&RQILJXUH
86$57[
[)UHFHLYHGRQ
([HFXWH')8
86$57[
ŶŽ ([HFXWH ERRWORDGHUXVLQJ86%
%/B86$57B/RRS LQWHUUXSWV
IRU86$57[
069
The bootloader has two case of operation depending on the presence of the external clock
(HSE) at bootloader startup:
• If HSE is present and has a value of 24, 18, 16, 12, 9, 8, 6, 4 or 3 MHz, the system
clock is configured to 48 MHz with HSE as clock source. The DFU interface, USART1
and USART2 are functional and can be used to communicate with the bootloader
device.
• If HSE is not present, the HSI is kept as default clock source and only USART1 and
USART2 are functional.
The external clock (HSE) must be kept if it’s connected at bootloader startup because it will
be used as system clock source.
6\VWHP5HVHW
&RQILJXUH6\VWHPFORFNWR
0+]XVLQJ+6,
+6(
0+]
ŶŽ
LJĞƐ
5HFRQILJXUH6\VWHPFORFN
WR0+]XVLQJ+6(
6\VWHP,QLW&ORFN*3,2V
6\VWHP,QLW&ORFN*3,2V ,:'*6\V7LFN
,:'*6\V7LFN
&RQILJXUH86%
LJĞƐ
86%FRQILJXUHG
DQGFDEOH'HWHFWHG \HV ([HFXWH')8
'LVDEOHDOO ERRWORDGHUXVLQJ86%
LQWHUUXSWVRXUFHV LQWHUUXSWV
QR
&RQILJXUH
[)UHFHLYHG 86$57[
QR RQ86$57[
([HFXWH
%/B86$57B/RRS
IRU86$57[
069
The bootloader has two cases of operation depending on the presence of the external clock
(HSE) at bootloader startup:
• If HSE is present and has a value of 24, 18, 16, 12, 9, 8, 6, 4 or 3 MHz, the system
clock is configured to 48 MHz with HSE as clock source. The DFU interface, USART1
and USART2 are functional and can be used to communicate with the bootloader
device.
• If HSE is not present, the HSI is kept as default clock source and only USART1 and
USART2 are functional.
The external clock (HSE) must be kept if it’s connected at bootloader startup because it will
be used as system clock source.
6\VWHP5HVHW
&RQILJXUH6\VWHPFORFNWR
0+]XVLQJ+6,
+6(
QR
0+]"
\HV
5HFRQILJXUH6\VWHPFORFNWR
0+]XVLQJ+6(
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH86%)6GHYLFH
86%FDEOH
GHWHFWHG 86% \HV
FRQILJXUHG \HV
'LVDEOHDOOLQWHUUXSW
QR VRXUFHVDQGRWKHU
LQWHUIDFHVFORFN¶V
'LVDEOHRWKHU
&RQILJXUH86$57[ LQWHUIDFHVFORFN¶V
[)UHFHLYHGRQ
QR 86$57[
([HFXWH ([HFXWH')8
%/B86$57B/RRSIRU ERRWORDGHUXVLQJ86%
86$57[ LQWHUUXSWV
06Y9
The system clock is derived from the embedded internal high-speed RC, no external quartz
is required for the bootloader execution.
6\VWHP5HVHW
'LVDEOHDOO
LQWHUUXSWVRXUFHV
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH,&[
\HV
,&$GGUHVV
GHWHFWHG \HV ([HFXWH
%/B,&B/RRSIRU
&RQILJXUH
,&[
86$57[
QR
([HFXWH
[)UHFHLYHGRQ %/B86$57B/RRS
86$57[ IRU86$57[
QR
069
The system clock is derived from the embedded internal high-speed RC, no external quartz
is required for the bootloader execution.
6\VWHP5HVHW
'LVDEOHDOO
LQWHUUXSWVRXUFHV
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH,&[
\HV
,&$GGUHVV
GHWHFWHG \HV ([HFXWH
%/B,&B/RRSIRU
&RQILJXUH
,&[
86$57[
QR
([HFXWH
[)UHFHLYHGRQ %/B86$57B/RRS
86$57[ IRU86$57[
QR
069
The system clock is derived from the embedded internal high-speed RC, no external quartz
is required for the bootloader execution.
6\VWHP5HVHW
'LVDEOHDOO
LQWHUUXSWVRXUFHV
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH,&[
\HV
,&$GGUHVV
GHWHFWHG \HV ([HFXWH
%/B,&B/RRSIRU
&RQILJXUH
,&[
86$57[
QR
([HFXWH
[)UHFHLYHG %/B86$57B/RRS
RQ86$57[ IRU86$57[
QR
069
The bootloader has two case of operation depending on the presence of the external clock
(HSE) at bootloader startup:
• If HSE is present and has a value of 24, 18, 16, 12, 9, 8, 6, 4 or 3 MHz, the system
clock is configured to 48 MHz with HSE as clock source. The DFU interface, USART1
and USART2 are functional and can be used to communicate with the bootloader
device.
• If HSE is not present, the HSI is kept as default clock source and only USART1 and
USART2 are functional.
Note: The external clock (HSE) must be kept if it’s connected at bootloader startup because it will
be used as system clock source.
6\VWHP5HVHW
&RQILJXUH6\VWHPFORFNWR
0+]XVLQJ+6,
+6(
0+]
QR
\HV
5HFRQILJXUH6\VWHPFORFN
WR0+]XVLQJ+6(
6\VWHP,QLW&ORFN*3,2V
6\VWHP,QLW&ORFN*3,2V ,:'*6\V7LFN
,:'*6\V7LFN
&RQILJXUH86%
\HV
86%FRQILJXUHG
DQGFDEOH'HWHFWHG ([HFXWH')8
\HV 'LVDEOHDOO ERRWORDGHUXVLQJ86%
LQWHUUXSWVRXUFHV LQWHUUXSWV
QR
&RQILJXUH
[)UHFHLYHG 86$57[
QR RQ86$57[
([HFXWH
%/B86$57B/RRS
IRU86$57[
069
The system clock is derived from the embedded internal high-speed RC, no external quartz
is required for the bootloader execution.
6\VWHP5HVHW
'LVDEOHDOO
LQWHUUXSWVRXUFHV
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH,&[
\HV
,&$GGUHVV
GHWHFWHG \HV ([HFXWH
%/B,&B/RRSIRU
&RQILJXUH
,&[
86$57[
QR
([HFXWH
[)UHFHLYHG %/B86$57B/RRS
RQ86$57[ IRU86$57[
QR
069
The system clock is derived from the embedded internal high-speed RC for all bootloader
interfaces. No external quartz is required for bootloader operations.
6\VWHP5HVHW
'LVDEOHDOO
LQWHUUXSWVRXUFHV
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH,&[
[)UHFHLYHG \HV
RQ86$57[
'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU
\HV
QR LQWHUIDFHVFORFN¶V
'LVDEOHRWKHU
LQWHUIDFHVFORFN¶V &RQILJXUH86$57[
,&[$GGUHVV
QR 'HWHFWHG
([HFXWH
([HFXWH%/B,&B/RRS
%/B86$57B/RRS
IRU,&[
IRU86$57[
06Y9
The system clock is derived from the embedded internal high-speed RC for USARTx
bootloaders. This internal clock is also used for CAN and DFU (USB FS Device) but only for
the selection phase. An external clock multiple of 1 MHz (between 4 and 26 MHz) is
required for CAN and DFU bootloader execution after the selection phase.
6\VWHP5HVHW
\HV 'LVDEOHDOO
6\VWHP,QLW&ORFN*3,2V
LQWHUUXSWVRXUFHV
,:'*6\V7LFN
&RQILJXUH
&RQILJXUH86%27*)6
86$57[
GHYLFH
([HFXWH
[)UHFHLYHGRQ %/B86$57B/RRS
86$57[ IRU86$57[
\HV
QR
)UDPHGHWHFWHG +6(GHWHFWHG
QR
RQ&$1[SLQ \HV
\HV
QR QR +6(GHWHFWHG QR 'LVDEOHDOO
LQWHUUXSWVRXUFHV
*HQHUDWH6\VWHP
86%FDEOH
\HV UHVHW 5HFRQILJXUH6\VWHP
'HWHFWHG
FORFNWR0+]
5HFRQILJXUH6\VWHP
FORFNWR0+]DQG
&RQILJXUH&$1
86%FORFNWR0+]
([HFXWH
([HFXWH')8 %/B&$1B/RRSIRU
ERRWORDGHUXVLQJ86% &$1[
LQWHUUXSWV
069
The system clock is derived from the embedded internal high-speed RC for USARTx, I2Cx
and SPIx bootloaders. This internal clock is also used for CAN and DFU (USB FS Device)
but only for the selection phase. An external clock multiple of 1 MHz (between 4 and
26 MHz) is required for CAN and DFU bootloader execution after the selection phase.
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH86%27*)6
GHYLFH
&RQILJXUH,&[ 'LVDEOHDOO
LQWHUUXSWVRXUFHV
([HFXWH
[)UHFHLYHGRQ
86$57[ %/B86$57B/RR
SIRU86$57[
ŶŽ \HV
)UDPHGHWHFWHG
RQ&$1[ ŶŽ +6(GHWHFWHG
\HV
QR +6(GHWHFWHG QR
*HQHUDWH6\VWHP
\HV
<HV UHVHW
86%FDEOH
'HWHFWHG
5HFRQILJXUH6\VWHP
FORFNWR0+]DQG 'LVDEOHDOO
'LVDEOHDOOLQWHUUXSW 86%FORFNWR0+] LQWHUUXSWVRXUFHV
ŶŽ VRXUFHV
ŶŽ
LJĞƐ
5HFRQILJXUH6\VWHP
([HFXWH')8 FORFNWR0+]
([HFXWH
,&[$GGUHVV %/B,&B/RRSIRU ERRWORDGHUXVLQJ
'HWHFWHG ,&[ 86%LQWHUUXSWV
&RQILJXUH&$1
LJĞƐ
ŶŽ ([HFXWH
'LVDEOHDOO %/B&$1B/RRSIRU
LQWHUUXSWVRXUFHV &$1[
63,[GHWHFWV
6\QFKUR
PHFKDQLVP ([HFXWH
%/B63,B/RRSIRU
63,[
069
The system clock is derived from the embedded internal high-speed RC for USARTx, I2Cx
and SPIx bootloaders. This internal clock is also used for CAN and DFU (USB FS Device)
but only for the selection phase. An external clock multiple of 1 MHz (between 4 and
26 MHz) is required for CAN and DFU bootloader execution after the selection phase.
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH86%27*)6
GHYLFH
'LVDEOHDOO
LQWHUUXSWVRXUFHV
&RQILJXUH,&[
&RQILJXUH
86$57[
\HV
&RQILJXUH63,[
([HFXWH
%/B86$57B/RRS
IRU86$57[
[)UHFHLYHGRQ
86$57[
QR
86%FDEOH +6(GHWHFWHG QR
\HV
'HWHFWHG
LJĞƐ *HQHUDWH6\VWHP
\HV UHVHW
ŶŽ 'LVDEOHDOO
LQWHUUXSWVRXUFHV
5HFRQILJXUH6\VWHP
FORFNWR0+]DQG
,&[$GGUHVV 86%FORFNWR0+]
([HFXWH
'HWHFWHG %/B,&B/RRSIRU
ŶŽ ,&[
([HFXWH')8
LJĞƐ ERRWORDGHUXVLQJ86%
ŶŽ
LQWHUUXSWV
'LVDEOHDOO
LQWHUUXSWVRXUFHV
63,[GHWHFWV
6\QFKUR
PHFKDQLVP ([HFXWH
%/B63,B/RRSIRU
63,[
069
The system clock is derived from the embedded internal high-speed RC for USARTx, I2Cx
and SPIx bootloaders. This internal clock is also used for DFU (USB FS Device) but only for
the selection phase. An external clock multiple of 1 MHz (between 4 and 26 MHz) is
required for DFU bootloader execution after the selection phase.
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH86%27*)6
GHYLFH
'LVDEOHDOO
LQWHUUXSWVRXUFHV
&RQILJXUH,&[
&RQILJXUH
86$57[
\HV
&RQILJXUH63,[
([HFXWH
%/B86$57B/RRS
IRU86$57[
[)UHFHLYHG
RQ86$57[
QR
86%FDEOH +6(GHWHFWHG QR
\HV
'HWHFWHG
LJĞƐ *HQHUDWH6\VWHP
\HV UHVHW
ŶŽ 'LVDEOHDOO
LQWHUUXSWVRXUFHV
5HFRQILJXUH6\VWHP
FORFNWR0+]DQG
,&[$GGUHVV 86%FORFNWR0+]
([HFXWH
'HWHFWHG %/B,&B/RRSIRU
ŶŽ ,&[
([HFXWH')8
LJĞƐ ERRWORDGHUXVLQJ86%
ŶŽ
LQWHUUXSWV
'LVDEOHDOO
LQWHUUXSWVRXUFHV
63,[GHWHFWV
6\QFKUR
PHFKDQLVP ([HFXWH
%/B63,B/RRSIRU
63,[
069
The system clock is derived from the embedded internal high-speed RC for all bootloader
interfaces. No external quartz is required for bootloader operations.
^LJƐƚĞŵZĞƐĞƚ
'LVDEOHDOOLQWHUUXSW
VRXUFHV
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH,&[
&RQILJXUH63,[
[)UHFHLYHG
\HV
RQ86$57[
QR
,&[$GGUHVV
\HV
'HWHFWHG
QR 'LVDEOHDOORWKHU
'LVDEOHDOORWKHU 'LVDEOHDOORWKHU LQWHUIDFHVFORFNV
LQWHUIDFHVFORFNV LQWHUIDFHVFORFNV
&RQILJXUH86$57[
63,[GHWHFWV6\QFKUR LJĞƐ
PHFKDQLVP
06Y9
The system clock is derived from the embedded internal high-speed RC for USARTx, I2Cx
and SPIx bootloaders. This internal clock is also used for DFU (USB FS Device) but only for
the selection phase. An external clock multiple of 1 MHz (between 4 and 26 MHz) is
required for DFU bootloader execution after the selection phase.
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH86%27*)6
GHYLFH
'LVDEOHDOO
LQWHUUXSWVRXUFHV
&RQILJXUH,&[
&RQILJXUH
86$57[
\HV
&RQILJXUH63,[
([HFXWH
%/B86$57B/RRS
IRU86$57[
[)UHFHLYHGRQ
86$57[
QR
86%FDEOH +6(GHWHFWHG QR
\HV
'HWHFWHG
LJĞƐ *HQHUDWH6\VWHP
<HV UHVHW
ŶŽ 'LVDEOHDOO
LQWHUUXSWVRXUFHV
5HFRQILJXUH6\VWHP
FORFNWR0+]DQG
,&[$GGUHVV 86%FORFNWR0+]
([HFXWH
'HWHFWHG %/B,&B/RRSIRU
ŶŽ ,&[
([HFXWH')8
LJĞƐ ERRWORDGHUXVLQJ86%
ŶŽ
LQWHUUXSWV
'LVDEOHDOO
LQWHUUXSWVRXUFHV
63,[GHWHFWV
6\QFKUR
PHFKDQLVP ([HFXWH
%/B63,B/RRSIRU
63,[ 069
The system clock is derived from the embedded internal high-speed RC for USARTx and
I2Cx bootloaders. This internal clock is also used for CAN and DFU (USB FS Device) but
only for the selection phase. An external clock multiple of 1 MHz (between 4 and 26 MHz) is
required for CAN and DFU bootloader execution after the selection phase.
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN \HV
&RQILJXUH86%27*)6
GHYLFH \HV
'LVDEOHDOOLQWHUUXSW
\HV VRXUFHVDQGRWKHU
LQWHUIDFHVFORFNV
&RQILJXUH,&[
'LVDEOHDOOLQWHUUXSW 'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU VRXUFHVDQGRWKHU &RQILJXUH
LQWHUIDFHVFORFNV LQWHUIDFHVFORFNV 86$57[
&RQILJXUH63,[
QR
\HV
,&[$GGUHVV
'HWHFWHG
QR
+6(GHWHFWHG QR QR +6(GHWHFWHG
6\QFKURPHFKDQLVP *HQHUDWH6\VWHP
GHWHFWHGRQ63,[ \HV UHVHW \HV
'LVDEOHDOOLQWHUUXSW
'LVDEOHRWKHU
VRXUFHVDQGRWKHU
QR LQWHUIDFHVFORFNV
LQWHUIDFHVFORFNV
QR
QR &RQILJXUH&$1[
([HFXWH')8
ERRWORDGHUXVLQJ86%
86%FDEOH LQWHUUXSWV ([HFXWH
\HV
'HWHFWHG %/B&$1B/RRSIRU
&$1[
06Y9
The system clock is derived from the embedded internal high-speed RC for USARTx and
I2Cx bootloaders. This internal clock is also used for CAN and DFU (USB FS Device) but
only for the selection phase. An external clock multiple of 1 MHz (between 4 and 26 MHz) is
required for CAN and DFU bootloader execution after the selection phase.
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN \HV
&RQILJXUH86%27*)6
GHYLFH \HV
'LVDEOHDOOLQWHUUXSW
\HV VRXUFHVDQGRWKHU
LQWHUIDFHVFORFNV
&RQILJXUH,&[
'LVDEOHDOOLQWHUUXSW 'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU VRXUFHVDQGRWKHU &RQILJXUH
LQWHUIDFHVFORFNV LQWHUIDFHVFORFNV 86$57[
&RQILJXUH63,[
QR
\HV
,&$GGUHVV
'HWHFWHG
QR
+6(GHWHFWHG QR QR +6(GHWHFWHG
6\QFKURPHFKDQLVP *HQHUDWH6\VWHP
GHWHFWHGRQ63,[ \HV UHVHW \HV
'LVDEOHDOOLQWHUUXSW
'LVDEOHRWKHU
VRXUFHVDQGRWKHU
QR LQWHUIDFHVFORFNV
LQWHUIDFHVFORFNV
QR
QR &RQILJXUH&$1
([HFXWH')8
ERRWORDGHUXVLQJ86%
86%FDEOH LQWHUUXSWV ([HFXWH
\HV
'HWHFWHG %/B&$1B/RRSIRU
&$1
D^ǀϰϮϮϮϵsϭ
The system clock is derived from the embedded internal high-speed RC for USARTx and
I2Cx bootloaders. This internal clock is also used for CAN and DFU (USB FS Device) but
only for the selection phase. An external clock multiple of 1 MHz (between 4 and 26 MHz) is
required for CAN and DFU bootloader execution after the selection phase.
Figure 36. Dual Bank Boot Implementation for STM32F42xxx/43xxx Bootloader V7.x
6\VWHP5HVHW
,I%RRW
\HV
QR
,I9DOXHRIILUVW
DGGUHVVRI%DQNLV
\HV
ZLWKLQLQW65$0
DGGUHVV
3URWHFWLRQOHYHO QR
6HW%DQN6ZDSWR
HQDEOHG
%DQN
QR
3URWHFWLRQOHYHO QR
\HV
HQDEOHG
6HW%DQN6ZDSWR 6HW%DQN6ZDSWR 6HW%DQN6ZDSWR
%DQN %DQN %DQN
QR
069
1. CCM RAM is not considered valid as stack pointer address for the dual bank boot mechanism.
%RRWORDGHU
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH86%27*)6 'LVDEOHDOO
\HV
GHYLFH LQWHUUXSWVRXUFHV
&RQILJXUH
&RQILJXUH,&[ 86$57[
([HFXWH
[)UHFHLYHG %/B86$57B/RRS
RQ86$57[ IRU86$57[
\HV
QR
([HFXWH
%/B,&B/RRSIRU
,&[
,&$GGUHVV
'HWHFWHG \HV
+6(GHWHFWHG
QR QR
\HV \HV
)UDPHGHWHFWHG
QR RQ&$1[ +6(GHWHFWHG QR 'LVDEOHDOO
LQWHUUXSWVRXUFHV
*HQHUDWH6\VWHP
QR \HV UHVHW
5HFRQILJXUH6\VWHP
FORFNWR0+]
5HFRQILJXUH6\VWHP
86%FDEOH FORFNWR0+]DQG
'HWHFWHG 86%FORFNWR0+] &RQILJXUH&$1
([HFXWH')8 ([HFXWH
ERRWORDGHUXVLQJ86% %/B&$1B/RRSIRU
LQWHUUXSWV &$1
069
The system clock is derived from the embedded internal high-speed RC for USARTx, I2Cx
and SPIx bootloaders. This internal clock is also used for CAN and DFU (USB FS Device)
but only for the selection phase. An external clock multiple of 1 MHz (between 4 and
26 MHz) is required for CAN and DFU bootloader execution after the selection phase.
Figure 38. Dual Bank Boot Implementation for STM32F42xxx/43xxx bootloader V9.x
6\VWHP5HVHW
,I%RRW
\HV
QR
,I9DOXHRIILUVW
DGGUHVVRI%DQNLV
\HV
ZLWKLQLQW65$0
DGGUHVV 3URWHFWLRQOHYHO
QR
6HW%DQN6ZDSWR HQDEOHG
%DQN
QR
3URWHFWLRQOHYHO QR
\HV
HQDEOHG
6HW%DQN6ZDSWR 6HW%DQN6ZDSWR 6HW%DQN6ZDSWR
%DQN %DQN %DQN
QR
069
1. CCM RAM is not considered valid as stack pointer address for the dual bank boot mechanism.
%RRWORDGHU
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH86%27*)6
GHYLFH
'LVDEOHDOOLQWHUUXSW
VRXUFHV
&RQILJXUH,&[
\HV
&RQILJXUH86$57[
&RQILJXUH63,[
([HFXWH
%/B86$57B/RRSIRU
[)UHFHLYHG 86$57[
RQ86$57[
QR ([HFXWH
%/B,&B/RRSIRU
\HV
,&[
,&$GGUHVV
'HWHFWHG
([HFXWH
QR
\HV %/B63,B/RRSIRU
63,[
^LJŶĐŚƌŽ
ŵĞĐŚĂŶŝƐŵĚĞƚĞĐƚĞĚ
ŽŶ^W/dž \HV
QR +6(GHWHFWHG
QR
+6(GHWHFWHG
)UDPHGHWHFWHG \HV
QR \HV QR
RQ&$1[
'LVDEOHDOOLQWHUUXSW
VRXUFHV
\HV
QR *HQHUDWH6\VWHP
UHVHW
5HFRQILJXUH6\VWHPFORFN
5HFRQILJXUH6\VWHP WR0+]
86%FDEOH FORFNWR0+]DQG
'HWHFWHG 86%FORFNWR0+]
&RQILJXUH&$1
([HFXWH')8 ([HFXWH
ERRWORDGHUXVLQJ86% %/B&$1B/RRSIRU
LQWHUUXSWV &$1
069
The system clock is derived from the embedded internal high-speed RC for USARTx and
I2Cx bootloaders. This internal clock is also used for CAN and DFU (USB FS Device) but
only for the selection phase. An external clock multiple of 1 MHz (between 4 and 26 MHz) is
required for CAN and DFU bootloader execution after the selection phase.
^LJƐƚĞŵZĞƐĞƚ
'LVDEOHDOO
6\VWHP,QLW&ORFN*3,2V
LQWHUUXSWVRXUFHV
,:'*6\V7LFN
\HV
&RQILJXUH
&RQILJXUH86%27*)6
86$57[
GHYLFH
([HFXWH
&RQILJXUH,&[ %/B86$57B/RRS
IRU86$57[
[)UHFHLYHG
RQ86$57[
'LVDEOHDOO
\HV LQWHUUXSWVRXUFHV
QR
([HFXWH
,&$GGUHVV %/B,&B/RRSIRU
'HWHFWHG ,&[
\HV 'LVDEOHDOO
QR LQWHUUXSWVRXUFHV
([HFXWH
6\QFKURPHFKDQLVP %/B63,B/RRSIRU
GHWHFWHGRQ63,[ 63,[
\HV
QR +6(GHWHFWHG
QR
QR
\HV \HV
)UDPHGHWHFWHG
RQ&$1[ +6(GHWHFWHG QR 'LVDEOHDOO
LQWHUUXSWVRXUFHV
*HQHUDWH6\VWHP
\HV UHVHW
QR 5HFRQILJXUH6\VWHP
FORFNWR0+]
5HFRQILJXUH6\VWHP
FORFNWR0+]DQG
86%FDEOH 86%FORFNWR0+] &RQILJXUH&$1
'HWHFWHG
([HFXWH')8 ([HFXWH
ERRWORDGHUXVLQJ86% %/B&$1B/RRSIRU
LQWHUUXSWV &$1
06Y9
The system clock is derived from the embedded internal high-speed RC for USARTx and
I2Cx bootloaders. This internal clock is also used for CAN and DFU (USB FS Device) but
only for the selection phase. An external clock multiple of 1 MHz (between 4 and 48 MHz) is
required for CAN and DFU bootloaders execution after the selection phase.
Figure 41. Dual Bank Boot Implementation for STM32F469xx/479xx Bootloader V9.x
6\VWHP5HVHW
,I%RRW QR
\HV
,IYDOXHRI
ILUVWDGGUHVVRI%DQN
\HV
LVZLWKLQLQW65$0
DGGUHVV
6HW%DQN6ZDSWR
%DQN
QR
-XPSWRXVHUFRGH 3URWHFWLRQ
QR
LQ%DQN OHYHOHQDEOHG
&RQWLQXH%RRWORDGHU
,IYDOXHRI
H[HFXWLRQ
ILUVWDGGUHVVRI%DQN
\HV
LVZLWKLQLQW65$0 \HV
DGGUHVV
QR ,IYDOXHRI
ILUVWDGGUHVVRI%DQN
\HV
LVZLWKLQLQW65$0
3URWHFWLRQ DGGUHVV
\HV
OHYHOHQDEOHG
QR
06Y9
ŽŽƚůŽĂĚĞƌ
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
'LVDEOHDOOLQWHUUXSW
&RQILJXUH86%27*)6
'LVDEOHDOOLQWHUUXSW 'LVDEOHDOOLQWHUUXSW VRXUFHVDQGRWKHU
GHYLFH
VRXUFHVDQGRWKHU VRXUFHVDQGRWKHU LQWHUIDFHVFORFNV
LQWHUIDFHVFORFNV LQWHUIDFHVFORFNV
&RQILJXUH,&[ &RQILJXUH86$57[
[)UHFHLYHG
\HV
RQ86$57[
QR
,&$GGUHVV
\HV
'HWHFWHG
QR
QR +6(GHWHFWHG
6\QFKURPHFKDQLVP +6(GHWHFWHG QR
\HV
GHWHFWHGRQ63,[
*HQHUDWH6\VWHP \HV
UHVHW
\HV
'LVDEOHDOOLQWHUUXSW
QR 'LVDEOHRWKHU VRXUFHVDQGRWKHU
LQWHUIDFHVFORFNV LQWHUIDFHVFORFNV
)UDPHGHWHFWHG
\HV
RQ&$1[ 5HFRQILJXUH
5HFRQILJXUH6\VWHP 6\VWHPFORFNWR
FORFNWR0+]DQG 0+]
86%FORFNWR0+]
QR
&RQILJXUH&$1
([HFXWH')8
86%FDEOH ERRWORDGHUXVLQJ86%
\HV
'HWHFWHG LQWHUUXSWV
([HFXWH
%/B&$1B/RRSIRU
&$1
QR
06Y9
The system clock is derived from the embedded internal high-speed RC for USARTx and
I2Cx bootloaders. This internal clock is also used for CAN and DFU (USB FS Device) but
only for the selection phase. An external clock multiple of 1 MHz (between 4 and 26 MHz) is
required for CAN and DFU bootloader execution after the selection phase.
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN \HV
&RQILJXUH86%27*)6
GHYLFH \HV
'LVDEOHDOOLQWHUUXSW
\HV VRXUFHVDQGRWKHU
LQWHUIDFHVFORFNV
&RQILJXUH,&[
'LVDEOHDOOLQWHUUXSW 'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU VRXUFHVDQGRWKHU &RQILJXUH
LQWHUIDFHVFORFNV LQWHUIDFHVFORFNV 86$57[
&RQILJXUH63,[
QR
\HV
,&$GGUHVV
'HWHFWHG
QR
+6(GHWHFWHG QR QR +6(GHWHFWHG
6\QFKURPHFKDQLVP *HQHUDWH6\VWHP
GHWHFWHGRQ63,[ \HV UHVHW \HV
'LVDEOHDOOLQWHUUXSW
'LVDEOHRWKHU
VRXUFHVDQGRWKHU
QR LQWHUIDFHVFORFNV
LQWHUIDFHVFORFNV
QR
QR &RQILJXUH&$1
([HFXWH')8
ERRWORDGHUXVLQJ86%
86%FDEOH LQWHUUXSWV ([HFXWH
\HV
'HWHFWHG %/B&$1B/RRSIRU
&$1[
06Y9
The system clock is derived from the embedded internal high-speed RC for USARTx and
I2Cx bootloaders. This internal clock is also used for CAN and DFU (USB FS Device) but
only for the selection phase. An external clock multiple of 1 MHz (between 4 and 26 MHz) is
required for CAN and DFU bootloader execution after the selection phase.
6\VWHP5HVHW
\HV
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN \HV
'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU
&RQILJXUH86%27*)6 LQWHUIDFHVFORFNV
GHYLFH
'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU &RQILJXUH
LQWHUIDFHVFORFNV 86$57[
&RQILJXUH,&[
([HFXWH ([HFXWH
%/B,&B/RRS %/B86$57B/RRS
[)UHFHLYHGRQ IRU,&[ IRU86$57[
86$57[
\HV
QR
,&$GGUHVV
'HWHFWHG +6(GHWHFWHG QR QR +6(GHWHFWHG
QR *HQHUDWH6\VWHP
\HV UHVHW \HV
'LVDEOHDOOLQWHUUXSW
)UDPHGHWHFWHG 'LVDEOHRWKHU
VRXUFHVDQGRWKHU
RQ&$1[ LQWHUIDFHVFORFNV
LQWHUIDFHVFORFNV
QR
QR 5HFRQILJXUH6\VWHP 5HFRQILJXUH6\VWHP
FORFNWR0+]DQG FORFNWR0+]
86%FORFNWR0+]
86%FDEOH
\HV
'HWHFWHG
&RQILJXUH&$1
([HFXWH')8
ERRWORDGHUXVLQJ86%
LQWHUUXSWV ([HFXWH
%/B&$1B/RRSIRU
&$1
06Y9
The system clock is derived from the embedded internal high-speed RC for USARTx, I2Cx
and SPIx bootloaders. This internal clock is also used for CAN and DFU (USB FS Device)
but only for the selection phase. An external clock multiple of 1 MHz (between 4 and
26 MHz) is required for CAN and DFU bootloader execution after the selection phase.
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN \HV
&RQILJXUH86%27*)6
GHYLFH \HV
'LVDEOHDOOLQWHUUXSW
\HV VRXUFHVDQGRWKHU
LQWHUIDFHVFORFNV
&RQILJXUH,&[
'LVDEOHDOOLQWHUUXSW 'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU VRXUFHVDQGRWKHU &RQILJXUH
LQWHUIDFHVFORFNV LQWHUIDFHVFORFNV 86$57[
&RQILJXUH63,[
QR
\HV
,&$GGUHVV
'HWHFWHG
QR
+6(GHWHFWHG QR QR +6(GHWHFWHG
6\QFKURPHFKDQLVP *HQHUDWH6\VWHP
GHWHFWHGRQ63,[ \HV UHVHW \HV
'LVDEOHDOOLQWHUUXSW
'LVDEOHRWKHU
VRXUFHVDQGRWKHU
QR LQWHUIDFHVFORFNV
LQWHUIDFHVFORFNV
QR
QR &RQILJXUH&$1
([HFXWH')8
ERRWORDGHUXVLQJ86%
86%FDEOH LQWHUUXSWV ([HFXWH
\HV
'HWHFWHG %/B&$1B/RRSIRU
&$1
06Y9
The system clock is derived from the embedded internal high-speed RC for USARTx and
I2Cx bootloaders. This internal clock is also used for CAN and DFU (USB FS Device) but
only for the selection phase. An external clock multiple of 1 MHz (between 4 and 26 MHz) is
required for CAN and DFU bootloader execution after the selection phase.
Figure 46. Dual Bank Boot Implementation for STM32F76xxx/77xxx Bootloader V9.x
6\VWHP5HVHW
Q'%$1.
\HV
Q'%227
6HOHFW%227B$''[E\%227
QR 3LQ
&RPSXWHHQWLUHERRWDGGUHVVIURP
%227B$''[
3URWHFWLRQOHYHO
HQDEOHG \HV
QR ,IERRWDGGUHVVLVRXWRI 3URWHFWLRQOHYHO
\HV \HV
PHPRU\UDQJHRULQ,&3 HQDEOHG
-XPSWR$;,0)ODVK
&RQWLQXH%RRWORDGHU
EDVHDGGUHVV[
H[HFXWLRQ
QR
QR
&RQWLQXH%RRWORDGHU
H[HFXWLRQ
,IERRWDGGUHVVLVLQ
5$0PHPRU\65$0 \HV
65$0'7&05$0
QR
,IWKHFRGHLQERRW
DGGUHVVLVYDOLG
\HV
,IERRWDGGUHVVLVLQ
\HV
%DQN
6HW%DQN6ZDSWR
%DQN
QR
-XPSWRDGGUHVV
GHILQHGE\
%227B$''[
,IERRWDGGUHVVLVLQ
QR \HV
%DQN
6HW%DQN6ZDSWR
%DQN
QR
-XPSWRDGGUHVV
GHILQHGE\
%227B$''[
3URWHFWLRQOHYHO
\HV
HQDEOHG
QR
-XPSWR$;,0)ODVK
&RQWLQXH%RRWORDGHU
EDVHDGGUHVV[
H[HFXWLRQ
06Y9
1. Only BOOT_ADD0 value is considered whatever the BOOT0 pin state, as described in Known limitation under Table 81.
2. ITCM RAM is not considered valid as stack pointer address for the dual bank boot mechanism.
%RRWORDGHU
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN \HV
&RQILJXUH86%27*)6
GHYLFH \HV
'LVDEOHDOOLQWHUUXSW
\HV VRXUFHVDQGRWKHU
LQWHUIDFHVFORFNV
&RQILJXUH,&[
'LVDEOHDOOLQWHUUXSW 'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU VRXUFHVDQGRWKHU &RQILJXUH
LQWHUIDFHVFORFNV LQWHUIDFHVFORFNV 86$57[
&RQILJXUH63,[
,&$GGUHVV
'HWHFWHG +6(GHWHFWHG QR QR +6(GHWHFWHG
*HQHUDWH6\VWHP
QR UHVHW
\HV \HV
'LVDEOHDOOLQWHUUXSW
'LVDEOHRWKHU
6\QFKURPHFKDQLVP VRXUFHVDQGRWKHU
LQWHUIDFHVFORFNV
GHWHFWHGRQ63,[ LQWHUIDFHVFORFNV
QR 5HFRQILJXUH6\VWHP 5HFRQILJXUH6\VWHP
QR FORFNWR0+]DQG FORFNWR0+]
86%FORFNWR0+]
)UDPHGHWHFWHG
RQ&$1[ &RQILJXUH&$1
([HFXWH')8
ERRWORDGHUXVLQJ86%
QR LQWHUUXSWV ([HFXWH
%/B&$1B/RRSIRU
&$1[
86%FDEOH
\HV
'HWHFWHG
06Y9
The sticky area is used to isolate boot code/data which manipulate sensitive information
(secrets) from application code:
• Access is controlled by a sticky bit STICKY_PROT (write once), in the flash CR
register;
• Executed once at boot then locked by writing the sticky bit;
• Width (number of FLASH pages) is defined through an OB, STICKY_SIZE, in the flash
STICKYR register;
The chain of trust is seeded by a unique boot entry via an additional option byte, the
BOOT_EP option byte in the flash STICKYR register.
The BOOT_EP forces boot from user flash, regardless from boot configuration and RDP
level.
Note: For more information regarding the STM32G0xxxx option bytes configuration, refer to the
STM32G0 reference manual
Figure 48 shows the flow to access to sticky area from the bootloader.
-XPSWRVWLFN\
DGGUHVV
&KHFNOLQNUHJLVWHUµ/5¶ -XPSWR([LW6WLFN\$UHD
WRNQRZEDQNMXPSHU IXQFWLRQ
6HWEDQN¶VVWLFN\ELW
6LQJOHEDQN 'XDOEDQN
6LQJOHEDQNRU
-XPSULJKWDIWHUWKH GXDOEDQN"
VWLFN\DUHD
<HV
6HWWKHH[LWVWLFN\ELWIRU 6HWWKHH[LWVWLFN\ELWIRU
6HWWKHH[LWVWLFN\ELW
EDQN EDQN
069
1. The Bootloader doesn’t check on the integrity of the user address, it’s up to the user to ensure the validity
of the address to jump to.
%RRWORDGHU
'LVDEOHDOOLQWHUUXSWVRXUFHV
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH,&[
\HV
&RQILJXUH63,[
\HV
[)UHFHLYHG
RQ86$57[ \HV
'LVDEOHDOORWKHU
QR LQWHUIDFHVFORFNV
QR
([HFXWH ([HFXWH ([HFXWH
%/B63,B/RRS %/B,&B/RRS %/B86$57B/RRS
QR IRU63,[ IRU,&[ IRU86$57[
6\QFKURPHFKDQLVP
GHWHFWHGRQ63,[
069
6\VWHP5HVHW
&RQILJXUH6\VWHPFORFNWR
0+]ZLWK+6,
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH86%27*)6
'HYLFH
'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU
&RQILJXUH,&[ LQWHUIDFHVFORFNV
'LVDEOHDOOLQWHUUXSW 'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU VRXUFHVDQGRWKHU &RQILJXUH
&RQILJXUH63,[ LQWHUIDFHVFORFNV LQWHUIDFHVFORFNV 86$57[
QR
,&[$GGUHVV
\HV
'HWHFWHG
+6(GHWHFWHG \HV
QR 5HFRQILJXUH6\VWHP
QR FORFNWR0+]DQG
86%FORFNWR
*HQHUDWH6\VWHP 0+]
63,[GHWHFWV UHVHW
\HV
6\QFKURPHFKDQLVP
QR ([HFXWH')8
ERRWORDGHUXVLQJ
QR 86%LQWHUUXSWV
86%FDEOH
\HV
'HWHFWHG
06Y9
The system clock is derived from the embedded internal high-speed RC for all bootloader
interfaces. No external quartz is required for bootloader operations.
6\VWHP5HVHW
'LVDEOHDOO
LQWHUUXSWVRXUFHV
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH63,[
[)UHFHLYHG
\HV
RQ86$57[
'LVDEOHDOORWKHU
\HV LQWHUIDFHVFORFNV
QR
'LVDEOHDOORWKHU &RQILJXUH
LQWHUIDFHVFORFNV 86$57[
63,[GHWHFWV
QR 6\QFKUR
PHFKDQLVP ([HFXWH ([HFXWH
%/B63,B/RRS %/B86$57B/RRS
IRU63,[ IRU86$57[
06Y9
The system clock is derived from the embedded internal high-speed RC for all bootloader
interfaces. No external quartz is required for bootloader operations.
The bootloader Read/Write commands don’t support SRAM memory space for this product.
6\VWHP5HVHW
'LVDEOHDOO
LQWHUUXSWVRXUFHV
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH63,[
[)UHFHLYHGRQ
\HV
86$57[
ŝƐĂďůĞĂůůŽƚŚĞƌ
ŝŶƚĞƌĨĂĐĞƐĐůŽĐŬƐ
QR
LJĞƐ &RQILJXUH
ŝƐĂďůĞĂůůŽƚŚĞƌ 86$57[
ŝŶƚĞƌĨĂĐĞƐĐůŽĐŬƐ
63,[GHWHFWV
ŶŽ ([HFXWH
6\QFKUR
%/B86$57B/RRS
PHFKDQLVP ([HFXWH IRU86$57[
%/B63,B/RRSIRU
63,[
069
The system clock is derived from the embedded internal high-speed RC for all bootloader
interfaces. No external quartz is required for bootloader operations.
6\VWHP5HVHW
'LVDEOHDOO
LQWHUUXSWVRXUFHV
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH63,[
[)UHFHLYHGRQ
\HV
86$57[
ŝƐĂďůĞĂůůŽƚŚĞƌ
ŝŶƚĞƌĨĂĐĞƐĐůŽĐŬƐ
QR
LJĞƐ &RQILJXUH
ŝƐĂďůĞĂůůŽƚŚĞƌ 86$57[
ŝŶƚĞƌĨĂĐĞƐĐůŽĐŬƐ
63,[GHWHFWV
ŶŽ ([HFXWH
6\QFKUR
%/B86$57B/RRS
PHFKDQLVP ([HFXWH IRU86$57[
%/B63,B/RRSIRU
63,[
069
The system clock is derived from the embedded internal high-speed RC for all bootloader
interfaces. No external quartz is required for bootloader operations.
Figure 54. Dual Bank Boot Implementation for STM32L07xxx/08xxx bootloader V4.x
6\VWHP5HVHW
,I%RRW QR
\HV
,I9DOXHRIILUVW
DGGUHVVRI%DQNLV 3URWHFWLRQ
ZLWKLQLQW65$0
\HV QR
OHYHOHQDEOHG
DGGUHVV
6HW%DQN6ZDSWR
%DQN
&RQWLQXH%RRWORDGHU
QR -XPSWRXVHU \HV
H[HFXWLRQ
FRGHLQ%DQN
,I9DOXHRIILUVW ,I9DOXHRIILUVW
DGGUHVVRI%DQNLV DGGUHVVRI%DQNLV
ZLWKLQLQW65$0 ZLWKLQLQW65$0
DGGUHVV DGGUHVV
\HV \HV
QR
QR
3URWHFWLRQ
OHYHOHQDEOHG
\HV
&RQWLQXH%RRWORDGHU
-XPSWRXVHU -XPSWRXVHU -XPSWRXVHU
H[HFXWLRQ
FRGHLQ%DQN FRGHLQ%DQN FRGHLQ%DQN
06Y9
%RRWORDGHU
&RQILJXUH6\VWHPFORFN
WR0+]ZLWK+6,
&RQILJXUH86%FORFNWR
0+]ZLWK+6,DVFORFNVRXUFH
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH86%)6GHYLFH
[)UHFHLYHGRQ
\HV
86$57[
'LVDEOHDOO
LQWHUUXSWVRXUFHV
QR
&RQILJXUH
86$57[
86%FDEOH
\HV
'HWHFWHG
QR ([HFXWH
([HFXWH')8ERRWORDGHU %/B86$57B/RRS
XVLQJ86%LQWHUUXSWV IRU86$57[
06Y9
The system clock is derived from the embedded internal high-speed RC for all bootloader
interfaces. No external quartz is required for bootloader operations.
Figure 56. Dual Bank Boot Implementation for STM32L07xxx/08xxx bootloader V11.x
6\VWHP5HVHW
,I%RRW QR
\HV
,I9DOXHRIILUVW
DGGUHVVRI%DQNLV 3URWHFWLRQ
ZLWKLQLQW65$0
\HV QR
OHYHOHQDEOHG
DGGUHVV
6HW%DQN6ZDSWR
%DQN
&RQWLQXH%RRWORDGHU
QR -XPSWRXVHU \HV
H[HFXWLRQ
FRGHLQ%DQN
,I9DOXHRIILUVW ,I9DOXHRIILUVW
DGGUHVVRI%DQNLV DGGUHVVRI%DQNLV
ZLWKLQLQW65$0 ZLWKLQLQW65$0
DGGUHVV DGGUHVV
\HV \HV
QR
QR
3URWHFWLRQ
OHYHOHQDEOHG
\HV
&RQWLQXH%RRWORDGHU
-XPSWRXVHU -XPSWRXVHU -XPSWRXVHU
H[HFXWLRQ
FRGHLQ%DQN FRGHLQ%DQN FRGHLQ%DQN
06Y9
%RRWORDGHU
'LVDEOHDOO
LQWHUUXSWVRXUFHV
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH,&[
&RQILJXUH63,[
[)UHFHLYHG
\HV
RQ86$57[
QR
,&[$GGUHVV
\HV
GHWHFWHG
QR
\HV 'LVDEOHDOORWKHU
QR LQWHUIDFHVFORFNV
06Y9
The system clock is derived from the embedded internal high-speed RC, no external quartz
is required for the bootloader execution.
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
[)UHFHLYHGRQ
86$57[
QR \HV
'LVDEOHDOO
LQWHUUXSWVRXUFHV
&RQILJXUH
86$57[
([HFXWH
%/B86$57B/RRS
IRU86$57[
069
The system clock is derived from the embedded internal high-speed RC, no external quartz
is required for the bootloader execution.
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
[)UHFHLYHGRQ
86$57[
QR \HV
'LVDEOHDOO
LQWHUUXSWVRXUFHV
&RQILJXUH
86$57[
([HFXWH
%/B86$57B/RRS
IRU86$57[
069
The system clock is derived from the embedded internal high-speed RC for the USARTx
bootloader. This internal clock is also used the for DFU bootloader but only for the selection
phase. An external clock in the range of [24, 16, 12, 8, 6, 4, 3, 2] MHz is required for the
execution of the DFU bootloader after the selection phase.
6\VWHP5HVHW
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH86%
86%FDEOH
\HV
'HWHFWHG
QR
+6(
QR
[)UHFHLYHGRQ 0+]
QR 86$57[
*HQHUDWH6\VWHP
\HV \HV UHVHW
5HFRQILJXUH6\VWHP
'LVDEOHDOO FORFNWR0+]DQG
LQWHUUXSWVRXUFHV 86%FORFNWR0+]
&RQILJXUH
([HFXWH')8
86$57[
ERRWORDGHUXVLQJ86%
LQWHUUXSWV
([HFXWH
%/B86$57B/RRS
IRU86$57[
069
The system clock is derived from the embedded internal high-speed RC for USARTx
bootloader. This internal clock is used also for DFU bootloader but only for the selection
phase. An external clock in the range of [24, 16, 12, 8, 6, 4, 3, 2] MHz is required for DFU
bootloader execution after the selection phase.
6\VWHP5HVHW
&ϮďŝƚƌĞƐĞƚ
;&ϮсϬͿ
WƌŽƚĞĐƚŝŽŶ
ŶŽ LJĞƐ
ůĞǀĞůϮĞŶĂďůĞĚ
/ĨsĂůƵĞ
ΛϬdžϬϴϬϯϬϬϬϬŝƐ
LJĞƐ LJĞƐ
ǁŝƚŚŝŶŝŶƚ͘^ZD
ĂĚĚƌĞƐƐ -XPSWRXVHUFRGH
LQ%DQN /ĨsĂůƵĞ
ŶŽ ŶŽ ΛϬdžϬϴϬϯϬϬϬϬŝƐ
LJĞƐ
ǁŝƚŚŝŶŝŶƚ͘^ZD
/ĨsĂůƵĞ ĂĚĚƌĞƐƐ
ΛϬdžϬϴϬϬϬϬϬϬŝƐ -XPSWRXVHUFRGH
LJĞƐ LQ%DQN
ǁŝƚŚŝŶŝŶƚ͘^ZD
ĂĚĚƌĞƐƐ :ƵŵƉƚŽƵƐĞƌĐŽĚĞ ŶŽ
ŝŶĂŶŬϭ
ŶŽ /ĨsĂůƵĞ
ΛϬdžϬϴϬϬϬϬϬϬŝƐ
&RQWLQXH%RRWORDGHUH[HFXWLRQ LJĞƐ
ǁŝƚŚŝŶŝŶƚ͘^ZD
ĂĚĚƌĞƐƐ
:ƵŵƉƚŽƵƐĞƌĐŽĚĞ
'LVDEOHDOO ŝŶĂŶŬϭ
LQWHUUXSWVRXUFHV ŶŽ
WhďůŽĐŬĞĚ
6\VWHP,QLW&ORFN*3,2V ;ŚĂůƚĞĚͿ
,:'*6\V7LFN
&RQILJXUH86%
LJĞƐ
86%FDEOH *HQHUDWH6\VWHP
'HWHFWHG +6(GHWHFWHG ŶŽ
UHVHW
\HV
QR \HV
&RQILJXUH 5HFRQILJXUH6\VWHP
[)UHFHLYHGRQ 86$57[ FORFNWR0+]DQG
86$57[ 86%FORFNWR0+]
QR
([HFXWH
%/B86$57B/RRS
IRU86$57[
([HFXWH')8
ERRWORDGHUXVLQJ86%
LQWHUUXSWV 069
The system clock is derived from the embedded internal high-speed RC for USARTx
bootloader. This internal clock is used also for DFU bootloader but only for the selection
phase. An external clock in the range of [24, 16, 12, 8, 6, 4, 3, 2] MHz is required for DFU
bootloader execution after the selection phase.
6\VWHP5HVHW
ŶŽ
%)%ELWUHVHW 3URWHFWLRQOHYHO
%)% HQDEOHG
\HV \HV
,I9DOXH
ŶŽ ,I9DOXH#[LV #[LVZLWKLQ \HV
\HV
ZLWKLQLQW65$0DGGUHVV LQW65$0DGGUHVV
-XPSWRXVHUFRGH -XPSWRXVHUFRGH
QR LQ%DQN QR LQ%DQN
,I9DOXH#[LV ,I9DOXH#[LV
\HV \HV
ZLWKLQLQW65$0DGGUHVV ZLWKLQLQW65$0DGGUHVV
-XPSWRXVHUFRGH
LQ%DQN
QR -XPSWRXVHUFRGH
QR
LQ%DQN
&RQWLQXH%RRWORDGHUH[HFXWLRQ
&38EORFNHG
KDOWHG
'LVDEOHDOOLQWHUUXSWVRXUFHV
&RQILJXUH86%
5HFRQILJXUH6\VWHP
FORFNWR0+]DQG
86%FDEOH 86%FORFNWR0+]
GHWHFWHG
LJĞƐ
QR LJĞƐ
([HFXWH')8
ERRWORDGHUXVLQJ86%
[)UHFHLYHG LQWHUUXSWV
&RQILJXUH86$57[
RQ86$57[
([HFXWH%/B86$57B/RRS
ŶŽ IRU86$57[
069
6\VWHP5HVHW
&RQILJXUH6\VWHPFORFNWR
0+]ZLWK+6,
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH86%'HYLFH)6
XVLQJ&56DQG+6,DV
FORFNVRXUFH 'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU
LQWHUIDFHVFORFNV
&RQILJXUH,&[
'LVDEOHDOOLQWHUUXSW 'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU VRXUFHVDQGRWKHU &RQILJXUH
LQWHUIDFHVFORFNV LQWHUIDFHVFORFNV 86$57[
&RQILJXUH63,[
([HFXWH ([HFXWH ([HFXWH
%/B63,B/RRS %/B,&B/RRS %/B86$57B/RRS
IRU63,[ IRU,&[ IRU86$57[
[)UHFHLYHG
RQ86$57[ \HV
QR
,&$GGUHVV
\HV
'HWHFWHG
QR
'LVDEOHRWKHU
6\QFKURPHFKDQLVP LQWHUIDFHVFORFNV
\HV
GHWHFWHGRQ63,[
([HFXWH')8
ERRWORDGHUXVLQJ86%
QR
LQWHUUXSWV
QR
86%FDEOH \HV
'HWHFWHG
069
6\VWHP5HVHW
&RQILJXUH6\VWHPFORFNWR
0+]ZLWK+6,
'LVDEOHDOOLQWHUUXSW
6\VWHP,QLW&ORFN*3,2V VRXUFHVDQGRWKHU
,:'*6\V7LFN LQWHUIDFHVFORFNV
'LVDEOHDOOLQWHUUXSW 'LVDEOHDOOLQWHUUXSW
&RQILJXUH86%'HYLFH)6 VRXUFHVDQGRWKHU VRXUFHVDQGRWKHU &RQILJXUH
XVLQJ&56DQG+6,DV LQWHUIDFHVFORFNV LQWHUIDFHVFORFNV 86$57[
FORFNVRXUFH
&RQILJXUH63,[
[)UHFHLYHGRQ
86$57[ \HV
+6(GHWHFWHG QR
QR
*HQHUDWH6\VWHP
,&$GGUHVV \HV UHVHW
\HV
'HWHFWHG
'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU
QR
LQWHUIDFHVFORFNV
QR
'LVDEOHRWKHU &RQILJXUH&$1
QR LQWHUIDFHVFORFNV
)UDPHGHWHFWHG
RQ&$1[ \HV
([HFXWH')8 ([HFXWH
ERRWORDGHUXVLQJ86% %/B&$1B/RRSIRU
QR LQWHUUXSWV &$1[
86%FDEOH
\HV
'HWHFWHG
06Y9
CAN1 bootloader CAN1_TX pin Output PB9 pin: CAN1 in transmission mode
This timer is used to determine the value of the
HSE. Once the HSE frequency is determined,
TIM16 Enabled
the system clock is configured to 60 MHz using
PLL and HSE.
6\VWHP5HVHW
&RQILJXUH6\VWHPFORFNWR
0+]ZLWK+6,
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH86%'HYLFH)6
XVLQJ&56DQG+6,DV
FORFNVRXUFH 'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU
LQWHUIDFHVFORFNV
&RQILJXUH,&[
'LVDEOHDOOLQWHUUXSW 'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU VRXUFHVDQGRWKHU &RQILJXUH
LQWHUIDFHVFORFNV LQWHUIDFHVFORFNV 86$57[
&RQILJXUH63,[
([HFXWH ([HFXWH ([HFXWH
%/B63,B/RRS %/B,&B/RRS %/B86$57B/RRS
IRU63,[ IRU,&[ IRU86$57[
[)UHFHLYHG
\HV
RQ86$57[
QR
,&$GGUHVV
\HV
'HWHFWHG +6(GHWHFWHG QR
*HQHUDWH6\VWHP
QR UHVHW
\HV
'LVDEOHDOOLQWHUUXSW
6\QFKURPHFKDQLVP VRXUFHVDQGRWKHU
\HV LQWHUIDFHVFORFNV
GHWHFWHGRQ63,[
5HFRQILJXUH6\VWHP
QR FORFNWR0+]
QR
([HFXWH')8 ([HFXWH
QR
ERRWORDGHUXVLQJ86% %/B&$1B/RRSIRU
LQWHUUXSWV &$1[
86%FDEOH
\HV
'HWHFWHG
06Y9
Figure 66. Dual Bank Boot Implementation for STM32L47xxx/48xxx bootloader V10.x
6\VWHP5HVHW
/ĨŽŽƚϬсϬ
ŶŽ
LJĞƐ
,I9DOXHRIILUVW WƌŽƚĞĐƚŝŽŶůĞǀĞůϮ ŶŽ
DGGUHVVRI%DQNLV LJĞƐ ĞŶĂďůĞĚ
ZLWKLQLQW65$0
DGGUHVV
^ĞƚĂŶŬ^ǁĂƉƚŽ
ĂŶŬϮ LJĞƐ
ŶŽ
&RQWLQXH%RRWORDGHUH[HFXWLRQ
:ƵŵƉƚŽƵƐĞƌĐŽĚĞ
ŝŶĂŶŬϮ /ĨsĂůƵĞŽĨĨŝƌƐƚ
/ĨsĂůƵĞŽĨĨŝƌƐƚ ĂĚĚƌĞƐƐŽĨĂŶŬϮŝƐ
ǁŝƚŚŝŶŝŶƚ͘^ZD LJĞƐ
ĂĚĚƌĞƐƐŽĨĂŶŬϭŝƐ
ǁŝƚŚŝŶŝŶƚ͘^ZD ĂĚĚƌĞƐƐ
ĂĚĚƌĞƐƐ
LJĞƐ
ŶŽ
ŶŽ
^ĞƚĂŶŬ^ǁĂƉƚŽ ^ĞƚĂŶŬ^ǁĂƉƚŽ
ĂŶŬϭ ĂŶŬϮ
WƌŽƚĞĐƚŝŽŶ
ůĞǀĞůϮĞŶĂďůĞĚ LJĞƐ
:ƵŵƉƚŽƵƐĞƌĐŽĚĞ :ƵŵƉƚŽƵƐĞƌĐŽĚĞ
ŝŶĂŶŬϭ ŝŶĂŶŬϮ
^ĞƚĂŶŬ^ǁĂƉƚŽ
ŶŽ ĂŶŬϭ
&RQWLQXH%RRWORDGHU :ƵŵƉƚŽƵƐĞƌĐŽĚĞ
H[HFXWLRQ ŝŶĂŶŬϭ
06Y9
%RRWORDGHU
&RQILJXUH6\VWHPFORFN
WR0+]ZLWK+6,
/6(GHWHFWHG QR
\HV
&RQILJXUH86%FORFNWR
0+]ZLWK+6,DVFORFNVRXUFH
&RQILJXUH86%FORFNWR
0+]ZLWK06,DVFORFNVRXUFH
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
'LVDEOHDOO
LQWHUUXSWVRXUFHV
&RQILJXUH86%27*)6 \HV
GHYLFH &RQILJXUH
86$57[
&RQILJXUHDOO,&V
([HFXWH
%/B86$57B/RRS
IRU86$57[
[)UHFHLYHG
RQ86$57[
'LVDEOHDOO
\HV
LQWHUUXSWVRXUFHV
QR
([HFXWH
%/B,&B/RRSIRU
,&$GGUHVV ,&[
'HWHFWHG \HV
06,XVHGDV86%
QR
FORFNVRXUFH
QR
\HV +6(GHWHFWHG QR
86%FDEOH *HQHUDWH6\VWHP
'HWHFWHG \HV UHVHW
\HV 5HFRQILJXUH6\VWHPFORFN
WR0+]DQG86%FORFN
WR0+]ZLWK+6(
([HFXWH')8ERRWORDGHU
XVLQJ86%LQWHUUXSWV
06Y9
In case, the HSE is present, the system clock and USB clock will be configured respectively
to 72 MHz and 48 MHz with PLL (clocked by HSE) as a clock source.
Figure 68. Dual Bank Boot Implementation for STM32L47xxx/48xxx bootloader V9.x
6\VWHP5HVHW
/ĨŽŽƚϬсϬ
ŶŽ
LJĞƐ
,I9DOXHRIILUVW WƌŽƚĞĐƚŝŽŶůĞǀĞůϮ ŶŽ
DGGUHVVRI%DQNLV LJĞƐ ĞŶĂďůĞĚ
ZLWKLQLQW65$0
DGGUHVV
^ĞƚĂŶŬ^ǁĂƉƚŽ
ĂŶŬϮ LJĞƐ
ŶŽ
&RQWLQXH%RRWORDGHUH[HFXWLRQ
:ƵŵƉƚŽƵƐĞƌĐŽĚĞ
ŝŶĂŶŬϮ /ĨsĂůƵĞŽĨĨŝƌƐƚ
/ĨsĂůƵĞŽĨĨŝƌƐƚ ĂĚĚƌĞƐƐŽĨĂŶŬϮŝƐ
ǁŝƚŚŝŶŝŶƚ͘^ZD LJĞƐ
ĂĚĚƌĞƐƐŽĨĂŶŬϭŝƐ
ǁŝƚŚŝŶŝŶƚ͘^ZD ĂĚĚƌĞƐƐ
ĂĚĚƌĞƐƐ
LJĞƐ
ŶŽ
ŶŽ
^ĞƚĂŶŬ^ǁĂƉƚŽ ^ĞƚĂŶŬ^ǁĂƉƚŽ
ĂŶŬϭ ĂŶŬϮ
WƌŽƚĞĐƚŝŽŶ
ůĞǀĞůϮĞŶĂďůĞĚ LJĞƐ
:ƵŵƉƚŽƵƐĞƌĐŽĚĞ :ƵŵƉƚŽƵƐĞƌĐŽĚĞ
ŝŶĂŶŬϭ ŝŶĂŶŬϮ
^ĞƚĂŶŬ^ǁĂƉƚŽ
ŶŽ ĂŶŬϭ
&RQWLQXH%RRWORDGHU :ƵŵƉƚŽƵƐĞƌĐŽĚĞ
H[HFXWLRQ ŝŶĂŶŬϭ
06Y9
%RRWORDGHU
&RQILJXUH6\VWHPFORFNWR0+]
ZLWK+6,
/6(GHWHFWHG QR
\HV
&RQILJXUH86%FORFNWR0+]
ZLWK06,DVFORFNVRXUFH
&RQILJXUH86%FORFNWR0+]ZLWK+6,
DVFORFNVRXUFH
6\VWHP,QLW&ORFN
*3,2V,:'*6\VWLFN
&RQILJXUH63,[ ([HFXWH
%/B86$57B/RRS
IRU86$57[
[)UHFHLYHGRQ
\HV
86$57[
06,XVHGDV86%FORFN
QR VRXUFH
\HV
,&$GGUHVV
\HV QR
'HWHFWHG
QR
+6(GHWHFWHG QR QR +6(GHWHFWHG
6\QFKURPHFKDQLVP \HV
GHWHFWHGRQ63,[ \HV
\HV
QR \HV *HQHUDWH6\VWHP \HV
5HFRQILJXUH6\VWHP UHVHW
QR 86%FDEOH FORFNWR0+]
'HWHFWHG 5HFRQILJXUH6\VWHPFORFN
WR0+]DQG86%FORFN
QR &RQILJXUH&$1 WR0+]
)UDPH \HV
GHWHFWHGRQ ([HFXWH
&$1[ %/B&$1B/RRS ([HFXWH')8ERRWORDGHU
IRU&$1[ XVLQJ86%LQWHUUXSWV
06Y9
CAN1 bootloader CAN1_TX pin Output PB9 pin: CAN1 in transmission mode
This timer is used to determine the value
of the HSE. Once the HSE frequency is
TIM16 Enabled determined, the system clock is
configured to 60 MHz using PLL and
HSE.
6\VWHP5HVHW
&RQILJXUH6\VWHPFORFNWR
0+]ZLWK+6,
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH86%27*)6XVLQJ
&56DQG+6,DVFORFN
VRXUFH 'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU
LQWHUIDFHVFORFNV
&RQILJXUH,&[
'LVDEOHDOOLQWHUUXSW 'LVDEOHDOOLQWHUUXSW
VRXUFHVDQGRWKHU VRXUFHVDQGRWKHU &RQILJXUH
LQWHUIDFHVFORFNV LQWHUIDFHVFORFNV 86$57[
&RQILJXUH63,[
([HFXWH ([HFXWH ([HFXWH
%/B63,B/RRS %/B,&B/RRS %/B86$57B/RRS
IRU63,[ IRU,&[ IRU86$57[
[)UHFHLYHG
RQ86$57[ \HV
QR
,&$GGUHVV
\HV +6(GHWHFWHG QR
'HWHFWHG
*HQHUDWH6\VWHP
QR UHVHW
\HV
'LVDEOHDOOLQWHUUXSW
6\QFKURPHFKDQLVP \HV VRXUFHVDQGRWKHU
GHWHFWHGRQ63,[ LQWHUIDFHVFORFNV
5HFRQILJXUH6\VWHP
QR FORFNWR0+]
QR
([HFXWH')8 ([HFXWH
QR
ERRWORDGHUXVLQJ86% %/B&$1B/RRSIRU
LQWHUUXSWV &$1[
86%FDEOH \HV
'HWHFWHG
06Y9
CAN1 bootloader CAN1_TX pin Output PB9 pin: CAN1 in transmission mode
This timer is used to determine the value
of the HSE. Once the HSE frequency is
TIM16 Enabled determined, the system clock is
configured to 60 MHz using PLL and
HSE.
USB FS configured in forced device
mode.
USB FS interrupt vector is enabled and
USB Enabled
used for USB DFU communications.
Note: VDDUSB IO must be connected to
DFU bootloader
3.3V for USB to be operational.
USB_DM pin PA11: USB DM line.
Input/Output PA12: USB DP line
USB_DP pin
No external Pull-up resistor is required
Figure 71. Dual bank boot implementation for STM32L4Rxxx/STM32L4Sxxx bootloader V9.x
6\VWHP5HVHW
Q'%$1.
\HV
Q'%227
6HOHFW%227B$''[E\
%2273LQ
QR
&RPSXWHHQWLUHERRWDGGUHVV
IURP%227B$''[
3URWHFWLRQ
\HV
OHYHOHQDEOHG
,IERRWDGGUHVVLVRXWRI 3URWHFWLRQ
\HV \HV
QR PHPRU\UDQJHRULQ,&3 OHYHOHQDEOHG
-XPSWR$;,0
&RQWLQXH QR
)ODVKEDVH
%RRWORDGHU QR
DGGUHVV[
H[HFXWLRQ &RQWLQXH%RRWORDGHU
H[HFXWLRQ
,IERRWDGGUHVVLVLQ
5$0PHPRU\65$0 \HV
65$0'7&05$0
QR
,IWKHFRGH
LQERRWDGGUHVVLV
YDOLG
\HV
,IERRWDGGUHVV
\HV
LVLQ%DQN
6HW%DQN6ZDSWR
%DQN
QR
-XPSWRDGGUHVV
GHILQHGE\
%227B$''[
QR ,IERRWDGGUHVV
\HV
LVLQ%DQN
6HW%DQN6ZDSWR
%DQN
QR
-XPSWRDGGUHVV
GHILQHGE\
%227B$''[
3URWHFWLRQ
\HV
OHYHOHQDEOHG
QR
&RQWLQXH
%RRWORDGHU -XPSWR$;,0)ODVKEDVH
H[HFXWLRQ DGGUHVV[
,7&05$0LVQRWFRQVLGHUHGYDOLGDVVWDFNSRLQWHUDGGUHVVIRUWKHGXDOEDQNERRWPHFKDQLVP 069
6\VWHP5HVHW
&RQILJXUH6\VWHPFORFNWR
0+]ZLWK+6,
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH86%'HYLFH)6
XVLQJ&56DQG+6,DV
FORFNVRXUFH
&RQILJXUH,&[
&RQILJXUH63,[
'LVDEOHDOOLQWHUUXSW
[)UHFHLYHGRQ VRXUFHVDQGRWKHU
\HV LQWHUIDFHVFORFNV
86$57[ 'LVDEOHDOO 'LVDEOHDOO
LQWHUUXSWVRXUFHV LQWHUUXSWVRXUFHV
DQGRWKHU DQGRWKHU
QR LQWHUIDFHVFORFNV LQWHUIDFHVFORFNV &RQILJXUH86$57[
QR
+6(GHWHFWHG QR
6\QFKURPHFKDQLVP
\HV
GHWHFWHGRQ63,[
*HQHUDWH
\HV 6\VWHPUHVHW
QR 'LVDEOHDOOLQWHUUXSW
\HV VRXUFHVDQGRWKHU
QR LQWHUIDFHVFORFNV
)UDPHGHWHFWHGRQ
5HFRQILJXUH6\VWHP
&$1[
FORFNWR0+]
'LVDEOHRWKHU
QR LQWHUIDFHVFORFNV &RQILJXUH&$1
069
6\VWHP5HVHW
&RQILJXUH6\VWHPFORFNWR
0+]ZLWK06,
6\VWHP,QLW&ORFN*3,2V
,:'*6\V7LFN
&RQILJXUH86%'HYLFH)6
XVLQJ&56DQG+6,DV
FORFNVRXUFH
&RQILJXUH,&[
&RQILJXUH63,[
'LVDEOHDOOLQWHUUXSW
[)UHFHLYHGRQ VRXUFHVDQGRWKHU
\HV LQWHUIDFHVFORFNV
86$57[ 'LVDEOHDOO 'LVDEOHDOO
LQWHUUXSWVRXUFHV LQWHUUXSWVRXUFHV
DQGRWKHU DQGRWKHU
QR LQWHUIDFHVFORFNV LQWHUIDFHVFORFNV &RQILJXUH86$57[
QR
6\QFKURPHFKDQLVP
\HV
GHWHFWHGRQ63,[
QR
'LVDEOHRWKHU
LQWHUIDFHVFORFNV
QR
([HFXWH')8
86%FDEOH ERRWORDGHUXVLQJ
\HV
'HWHFWHG 86%LQWHUUXSWV
069
The bootloader protocol’s command set and sequences for each serial peripheral are the
same for all STM32 devices. However, some parameters depend on device and bootloader
version:
• PID (Product ID)
• Valid RAM memory addresses (RAM area used during bootloader execution is not
accessible) accepted by the bootloader when the Read Memory, Go and Write Memory
commands are requested.
• System Memory area.
The table below shows the values of these parameters for each STM32 device bootloader in
production.
STM32F05xxx and
0x440 0x21 0x20000800 - 0x20001FFF
STM32F030x8 devices 0x1FFFEC00 - 0x1FFFF7FF
STM32F03xx4/6 0x444 0x10 0x20000800 - 0x20000FFF
STM32F030xC 0x442 0x52 0x20001800 - 0x20007FFF 0x1FFFD800 - 0x1FFFF7FF
58 Bootloader timing
This section presents the typical timings of the bootloader firmware that should be used to
ensure correct synchronization between host and STM32 device.
Two types of timings will be described herein:
• STM32 device bootloader resources initialization duration.
• Communication interface selection duration.
After these timings the bootloader is ready to receive and execute host commands.
The table below contains the minimum startup timing for each STM32 product:
STM32F03xx4/6 1.612 NA
STM32F05xxx and STM32F030x8 devices 1.612 NA
STM32F04xxx 0.058 NA
STM32F071xx/072xx 0.058 NA
HSE connected 3
STM32F070x6 200
HSE not connected 230
HSE connected 6
STM32F070xB 200
HSE not connected 230
STM32F09xxx 2 NA
STM32F10xxx 1.227 NA
PA9 pin low 1.396
STM32F105xx/107xx NA
PA9 pin high 524.376
STM32F10xxx XL-density 1.227 NA
V2.x 134 NA
STM32F2xxxx
V3.x 84.59 0.790
HSE connected 45
STM32F301xx/302x4(6/8) 560.5
HSE not connected 560.8
HSE connected 43.4
STM32F302xB(C)/303xB(C) 2.236
HSE not connected 2.36
HSE connected 7.53 NA
STM32F302xD(E)/303xD
HSE not connected 146.71 NA
STM32F303x4(6/8)/334xx/328xx 0.155 NA
STM32F318xx 0.182 NA
STM32F358xx 1.542 NA
HSE connected 43.4
STM32F373xx 2.236
HSE not connected 2.36
STM32F378xx 1.542 NA
STM32F398xx 1.72 NA
V3.x 84.59 0.790
STM32F40xxx/41xxx
V9.x 74 96
STM32F401xB(C) 74.5 85
STM32F401xD(E) 74.5 85
STM32F410xx 0.614 NA
STM32F411xx 74.5 85
STM32F412xx 0.614 180
STM32F413xx/423xx 0.642 165
V7.x 82 97
STM32F429xx/439xx
V9.x 74 97
STM32F446xx 73.61 96
Ă ď Ă
ŽŽƚůŽĂĚĞƌ
ĞdžĞĐƵƚŝŽŶƚŝŵĞ
Ă ƵƌĂƚŝŽŶŽĨϭďLJƚĞƐĞŶĚŝŶŐƚŚƌŽƵŐŚh^Zd;ĚĞƉĞŶĚƐŽŶĂƵĚƌĂƚĞͿ
ď ƵƌĂƚŝŽŶŽĨh^ZdƉĞƌŝƉŚĞƌĂůĐŽŶĨŝŐƵƌĂƚŝŽŶ 069
1. Receiving any other character different from 0x7F (or line glitches) will cause bootloader to start
communication using a wrong baudrate. Bootloader measures the signal length between rising edge of first
1 bit in 0x7F to the falling edge of the last 1 bit in 0x7F to deduce the baudrate value
2. Bootloader does not re-align the calculated baudrate to standard baudrate values (ie. 1200, 9600, 115200,
...).
Note: For STM32F105xx/107xx line devices, PA9 pin (USB_VBUS) is used to detect the USB host
connection. The initialization of USB peripheral is performed only if PA9 is high at detection
phase which means that a host is connected to the port and delivering 5 V on the USB bus.
When PA9 level is high at detection phase, more time is required to initialize and shutdown
the USB peripheral. To minimize bootloader detection time when PA9 pin is not used, keep
PA9 state low during USART detection phase from the moment the device is reset till a
device ACK is sent.
ĞǀŝĐĞ
ƌĞƐĞƚ
Ă
ŽŽƚůŽĂĚĞƌ
ĞdžĞĐƵƚŝŽŶƚŝŵĞ
ŽŽƚůŽĂĚĞƌ
ƌĞĂĚLJƚŽƐƚĂƌƚ
ĚĞƚĞĐƚŝŽŶƉŚĂƐĞ
Ă ƵƌĂƚŝŽŶŽĨŽŽƚůŽĂĚĞƌƌĞƐŽƵƌĐĞƐŝŶŝƚŝĂůŝnjĂƚŝŽŶ
06Y9
Note: For STM32F105xx/107xx devices, if the external HSE crystal frequency is different from
25 MHz (14.7456 MHz or 8 MHz), the device performs several unsuccessful enumerations
(with connect – disconnect sequences) before being able to establish a correct connection
with the host. This is due to the HSE automatic detection mechanism based on Start Of
Frame (SOF) detection.
STM32F04xxx 350
STM32F070x6 TBD
STM32F070xB 320
HSE = 25 MHz 460
STM32F105xx/107xx HSE = 14.7465 MHz 4500
HSE = 8 MHz 13700
STM32F2xxxx 270
STM32F301xx/302x4(6/8) 300
STM32F302xB(C)/303xB(C) 300
STM32F302xD(E)/303xD 100
STM32F373xx 300
V3.x 270
STM32F40xxx/41xxx
V9.x 250
STM32F401xB(C) 250
STM32F401xD(E) 250
STM32F411xx 250
STM32F412xx 380
STM32F413xx/423xx 350
V7.x
STM32F429xx/439xx 250
V9.x
STM32F446xx 200
STM32F469xx/479xx 270
STM32F72xxx/73xxx 320
STM32F74xxx/75xxx 230
STM32H74xxx/75xxx 53.9764
STM32L07xxx/08xxx 140
STM32L1xxxC 849
STM32L1xxxD 849
STM32L412xx/L422xx 820
STM32L43xxx/44xxx 820
STM32L45xxx/46xxx 330
V10.x
STM32L47xxx/48xxx 300
V9.x
STM32L496xx/4A6xx 430
STM32L4Rxx/4Sxx NA
STM32WB55xx 300
,ŽƐƚƐĞŶĚƐƐƚĂƌƚ ,ŽƐƚƌĞĐĞŝǀĞƐ
ĐŽŶĚŝƚŝŽŶн ĂĐŬŶŽǁůĞĚŐĞ
ĚĞǀŝĐĞĂĚĚƌĞƐƐ
Ă ď
ŽŽƚůŽĂĚĞƌ
ĞdžĞĐƵƚŝŽŶƚŝŵĞ
ĞǀŝĐĞ ŽŽƚůŽĂĚĞƌ
ĂĐŬŶŽǁůĞĚŐĞƐŝƚƐ ƌĞĂĚLJƚŽƌĞĐĞŝǀĞ
ĂĚĚƌĞƐƐĂŶĚ ĂŶĚĞdžĞĐƵƚĞ
ƐƚƌĞƚĐŚůŝŶĞ ĐŽŵŵĂŶĚƐ
Ă
ƵƌĂƚŝŽŶŽĨƐƚĂƌƚнϭďLJƚĞƐĞŶĚŝŶŐƚŚƌŽƵŐŚ/Ϯ;ĚĞƉĞŶĚƐŽŶĐŽŵŵƵŶŝĐĂƚŝŽŶƐƉĞĞĚͿ
ď ƵƌĂƚŝŽŶŽĨ/ϮůŝŶĞƐƚƌĞƚĐŚŝŶŐ
069
Note: For I2C communication, a timeout mechanism is implemented and it must be respected to
execute bootloader commands correctly. This timeout is implemented between two I2C
frames in the same command (eg: for Write memory command a timeout is inserted
between command sending frame and address memory sending frame). Also the same
timeout period is inserted between two successive data reception or transmission in the
same I2C frame. If the timeout period is elapsed a system reset is generated to avoid
bootloader crash.
In erase memory command and read-out unprotect command, the duration of flash
operation should be taken into consideration when implementing the host side. After
sending the code of pages to be erased, the host should wait until the bootloader device
performs page erasing to complete the remaining steps of erase command.
,ŽƐƚ ,ŽƐƚƌĞĐĞŝǀĞƐ
ƐĞŶĚƐ <ďLJƚĞ
Ϭdžϱ Ϭdžϳϵ
Ă ď Ă
ŽŽƚůŽĂĚĞƌ
ĞdžĞĐƵƚŝŽŶƚŝŵĞ
Ă ƵƌĂƚŝŽŶŽĨϭďLJƚĞƐĞŶĚŝŶŐƚŚƌŽƵŐŚ^W/;ĚĞƉĞŶĚƐŽŶĐŽŵŵƵŶŝĐĂƚŝŽŶƐƉĞĞĚͿ
ď ĞůĂLJďĞƚǁĞĞŶƚǁŽďLJƚĞƐ 069
59 Revision history
IWDG added to Table : The system clock is derived from the embedded
internal high-speed RC, no external quartz is required for the bootloader
execution.. Note added.
BL changed bootloader in the entire document.
Go command description modified in Table : The system clock is derived from
the embedded internal high-speed RC, no external quartz is required for the
bootloader execution.
Number of bytes awaited by the bootloader corrected in Section 2.4: Read
Memory command.
19-Nov-2009 5 Note modified below Figure 10: Go command: host side.
Note removed in Section 2.5: Go command and note added.
Start RAM address specified and note added in Section 2.6: Write Memory
command. All options are erased when a Write Memory command is issued to
the Option byte area.
Figure 11: Go command: device side modified.
Figure 13: Write Memory command: device side modified.
Note added and bytes 3 and 4 sent by the host modified in Section 2.7: Erase
Memory command.
Note added to Section 2.8: Write Protect command.
Application note restructured. Value line and connectivity line device
09-Mar-2010 6 bootloader added (Replaces AN2662).
Introduction changed. Glossary added.
Related documents: added XL-density line datasheets and programming
manual.
Glossary: added XL-density line devices.
Table 3: added information for XL-density line devices.
20-Apr-2010 7
Section 4.1: Bootloader configuration: updated first sentence.
Section 5.1: Bootloader configuration: updated first sentence.
Added Section 6: STM32F10xxx XL-density devices bootloader.
Table 65: added information for XL-density line devices.
08-Oct-2010 8 Added information for high-density value line devices in Table 3 and Table 65.
14-Oct-2010 9 Removed references to obsolete devices.
26-Nov-2010 10 Added information on ultralow power devices.
Added information related to STM32F205/215xx and STM32F207/217xx
13-Apr-2011 11 devices.
Added Section 32: Bootloader timing
Updated:
– Table 12: STM32L1xxx6(8/B) bootloader versions
06-Jun-2011 12 – Table 17: STM32F2xxxx configuration in System memory boot mode
– Table 18: STM32F2xxxx bootloader V2.x versions
– Table 20: STM32F2xxxx bootloader V3.x versions
Added information related to STM32F405/415xx and STM32F407/417xx
bootloader, and STM32F105xx/107xx bootloader V2.1.
28-Nov-2011 13
Added value line devices in Section 4: STM32F10xxx devices bootloader title
and overview.
Updated:
– Introduction
– Section 2: Glossary
– Section 3.3: Hardware connection requirement
– Section 7: STM32L1xxx6(8/B) devices bootloader to include STM32L100
value line
– Section 32.2: USART connection timing
– Section 34.2: USB bootloader timing characteristics
21-May-2013 17
– Section 34.3: I2C bootloader timing characteristics
– Table 1: Applicable products
– Table 3: Embedded bootloaders
– Table 25: STM32F051xx configuration in System memory boot mode
– Table 27: STM32F031xx configuration in System memory boot mode
– Table 65: Bootloader device-dependent parameters
– Figure 17: Bootloader selection for STM32F031xx devices
Added Section 19: STM32F429xx/439xx devices bootloader.
Add:
– Figure 1 to Figure 5, Figure 62, Figure 6, Figure 25, Figure 26, Figure 24,
from Figure 38 to Figure 74, Figure 78
– Table 4, Table 104, Table 105, from Table 6 to Table 45, from Table 46 to
Table 43, from Table 68 to Table 69, from Table to Table 127
– Section 38.4, Section 33.2, Section 58.1, Section 58.5
– Section 5 ,Section 23, Section 24, Section 22, from Section 17 to Section 53
– note under Figure 1, Figure 2, Figure 3 and Figure 4
Updated:
19-May-2014 18 – Updated starting from Section 4 to Section 7 and Section 18, Section 33 and
Section 33 the chapter structure organized in three subsection: Bootloader
configuration, Bootloader selection and Bootloader version.
Updated Section 53 and Section 58
– Updated block diagram of Figure 25 and Figure 20.
– Fixed I2C address for STM32F429xx/439xx devices in Table 66
– Table 1, Table 2, Table 3, Table 24, Table 98, Table 100, Table 102,
Table 28, Table 30, Table 50, Table 122
– from Figure 14, to Figure 28, Figure 8, from Figure 74 to Figure 78
– note on Table 99
Updated:
– notes under Table 2
– Figure 61 and Figure 62
– Section 3: Glossary
– replaced any reference to STM32F427xx/437xx with STM32F42xxx/43xxx
on Section 33: STM32F42xxx/43xxx devices bootloader
– replace any occurrence of ‘STM32F072xx’ with ‘STM32F07xxx’
– replace any occurrence of ‘STM32F051xx’ with ‘STM32F051xx and
STM32F030x8 devices’.
– comment field related to OTG_FS_DP and OTG_FS_DM on Table 24,
Table 30, Table 50, Table 104, Table 66, Table 68, Table 12, Table 18,
Table 54, Table 56 and Table 60
29-Jul-2014 19
– comment field related to USB_DM on Table 104.
– replace reference to "STM32F429xx/439xx" by "STM32F42xxx/43xxx” on
Table 3
– comment field related to SPI2_MOSI, SPI2_MISO, SPI2_SCK and
SPI2_NSS pins on Table 68
Added:
– note under Table 2
– reference to STM32F411 on Table 1, Section 3: Glossary, Table 123,
Table 124, Table 125, Table 126
– Section 30: STM32F411xx devices bootloader
Removed reference to STM32F427xx/437xx on Table 3, Section 3: Glossary,
Table 122, Table 123, Table 124, Table 125
Updated:
– comment in “SPI1_NSS pin" and "SPI2_NSS pin" rows on Table 104 and
Table 90
24-Nov-2014 20
– comment in "SPI1_NSS pin", "SPI2_NSS pin" and "SPI3_NSS pin" rows on
Table 54, Table 56 and Table 60
– Figure 1
Updated:
– Table 1, Table 3, Table 22, Table 26, Table 98, Table 28, Table 30, Table 31,
Table 50, Table 104, Table 10, Table 11, Table 6, Table 34, Table 66,
Table 68, Table 12, Table 13, Table 18, Table 19,Table 32, Table 96,
Table 112, Table 122, Table 123, Table 124, Table 125 and Table 126
11-Mar-2015 21 – Figure 67
– Chapter 3: Glossary
– Section 4.1 and Section 4.4
Added:
– Section 53: STM32L47xxx/48xxx devices bootloader and Section 34:
STM32F446xx devices bootloader
Added:
– Section 9: STM32F070x6 devices bootloader
– Section 10: STM32F070xB devices bootloader
– Section 12: STM32F09xxx devices bootloader
– Section 19: STM32F302xD(E)/303xD(E) devices bootloaderSection 25:
STM32F398xx devices bootloader
– Section 36: STM32F72xxx/73xxx devices bootloader
– Section 53.2: Bootloader V9.x
09-Jun-2015 22
– Notes 1 and 2 on Figure 75
Updated:
– Table 1
– Section 3: Glossary
– Table 2
– Table 3
– Section 4.4: Bootloader memory management
– Table 122, Table 123, Table 124, Table 125 and Table 126
Added:
– Section 29: STM32F410xx devices bootloader
– Section 35: STM32F469xx/479xx devices bootloader
– Section 42: STM32L031xx/041xx devices bootloader
– Section 44: STM32L07xxx/08xxx devices bootloader
29-Sep-2015 23
Updated:
– Table 1
– Section 3: Glossary
– Table 3
– Figure 67, Table 114, Table 123, Table 124, Table 125, Table 126
Updated:
– Table 1, Table 3, Table 122, Table 123, Table 124, Table 125, Table 126
– Section 35
02-Nov-2015 24
Added:
– Note on Section 26.2.1
– Section 31
Updated:
01-Dec-2015 25 – Section 4.1, Section 44
– Table 122
Updated:
– Table 1, Table 3, Table 63, Table 93, Table 95, Table 122
– Section 3, Section 44.1.1, Section 44.2.1, Section 53
03-Mar-2016 26
Added:
– Section 41: STM32L01xxx/02xxx devices bootloader
– Figure 54, Figure 56
Added:
– Section 38: STM32F76xxx/77xxx devices bootloader, Section 51:
STM32L43xxx/44xxx devices bootloader.
– Note on: Section 4.1: Bootloader activation, Section 8.1: Bootloader
configuration, Section 9.1: Bootloader configuration, Figure 36: Dual Bank
Boot Implementation for STM32F42xxx/43xxx Bootloader V7.x, Figure 38:
Dual Bank Boot Implementation for STM32F42xxx/43xxx bootloader V9.x
Updated:
– Table 1: Applicable products, Table 2: Bootloader activation patterns,
Table 8: STM32F030xC configuration in system memory boot mode,
Table 14: STM32F070x6 configuration in system memory boot mode,
21-Apr-2016 27 Table 16: STM32F070xB configuration in system memory boot mode,
Table 20: STM32F09xxx configuration in system memory boot mode,
Table 32: STM32F301xx/302x4(6/8) configuration in system memory boot
mode, Table 34: STM32F302xB(C)/303xB(C) configuration in system
memory boot mode, Table 36: STM32F302xD(E)/303xD(E) configuration in
system memory boot mode, Table 44: STM32F373xx configuration in
system memory boot mode, Table 54: STM32F401xB(C) configuration in
system memory boot mode, Table 56: STM32F401xD(E) configuration in
system memory boot mode, Table 60: STM32F411xx configuration in system
memory boot mode, Table 113: STM32L47xxx/48xxx bootloader V10.x
versions, Table 115: STM32L47xxx/48xxx bootloader V9.x versions,
Table 122: Bootloader device-dependent parameters
– Section 3: Glossary,
Updated:
– Table 1: Applicable products, Table 8: STM32F030xC configuration in
system memory boot mode, Table 10: STM32F05xxx and STM32F030x8
devices configuration in system memory boot mode, Table 12:
STM32F04xxx configuration in system memory boot mode, Table 14:
STM32F070x6 configuration in system memory boot mode, Table 16:
STM32F070xB configuration in system memory boot mode, Table 18:
STM32F071xx/072xx configuration in system memory boot mode, Table 20:
STM32F09xxx configuration in system memory boot mode, Table 24:
STM32F105xx/107xx configuration in system memory boot mode, Table 26:
STM32F10xxx XL-density configuration in system memory boot mode,
Table 28: STM32F2xxxx configuration in system memory boot mode,
Table 30: STM32F2xxxx configuration in system memory boot mode,
Table 32: STM32F301xx/302x4(6/8) configuration in system memory boot
mode, Table 34: STM32F302xB(C)/303xB(C) configuration in system
memory boot mode, Table 36: STM32F302xD(E)/303xD(E) configuration in
system memory boot mode, Table 38: STM32F303x4(6/8)/334xx/328xx
configuration in system memory boot mode, Table 40: STM32F318xx
configuration in system memory boot mode, Table 42: STM32F358xx
configuration in system memory boot mode, Table 44: STM32F373xx
configuration in system memory boot mode, Table 46: STM32F378xx
configuration in system memory boot mode, Table 48: STM32F398xx
05-Sep-2016 28
configuration in system memory boot mode, Table 50: STM32F40xxx/41xxx
configuration in system memory boot mode, Table 52: STM32F40xxx/41xxx
configuration in system memory boot mode, Table 54: STM32F401xB(C)
configuration in system memory boot mode, Table 56: STM32F401xD(E)
configuration in system memory boot mode, Table 60: STM32F411xx
configuration in system memory boot mode, Table 66: STM32F42xxx/43xxx
configuration in system memory boot mode, Table 68: STM32F42xxx/43xxx
configuration in system memory boot modeTable 70: STM32F446xx
configuration in system memory boot mode, Table 72: STM32F469xx/479xx
configuration in system memory boot mode, Table 76: STM32F74xxx/75xxx
configuration in system memory boot mode, Table 78: STM32F74xxx/75xxx
configuration in system memory boot mode, Table 90: STM32L05xxx/06xxx
configuration in system memory boot mode, Table 96: STM32L1xxx6(8/B)A
configuration in system memory boot mode, Table 98: STM32L1xxx6(8/B)
configuration in system memory boot mode, Table 100: STM32L1xxxC
configuration in system memory boot mode, Table 102: STM32L1xxxD
configuration in system memory boot mode, Table 104: STM32L1xxxE
configuration in system memory boot mode, Table 109: STM32L43xxx/44xxx
bootloader versions, Table 112: STM32L47xxx/48xxx configuration in
system memory boot mode, Table 122: Bootloader device-dependent
parameters
– Section 51.1: Bootloader configuration
Updated:
– Table 1: Applicable products, Table 3: Embedded bootloaders, Table 11:
STM32F05xxx and STM32F030x8 devices bootloader versions, Table 12:
STM32F04xxx configuration in system memory boot mode, Table 13:
STM32F04xxx bootloader versions, Table 15: STM32F070x6 bootloader
versions, Table 17: STM32F070xB bootloader versions, Table 18:
STM32F071xx/072xx configuration in system memory boot mode, Table 19:
STM32F071xx/072xx bootloader versions, Table 20: STM32F09xxx
configuration in system memory boot mode, Table 21: STM32F09xxx
bootloader versions, Table 32: STM32F301xx/302x4(6/8) configuration in
system memory boot mode, Table 35: STM32F302xB(C)/303xB(C)
bootloader versions, Table 81: STM32F76xxx/77xxx bootloader V9.x
versions, Table 86: STM32L01xxx/02xxx configuration in system memory
13-Mar-2017 30
boot mode, Table 109: STM32L43xxx/44xxx bootloader versions, Table 122:
Bootloader device-dependent parameters, Table 114: STM32L47xxx/48xxx
configuration in system memory boot mode, Table 123: Bootloader startup
timings of STM32 devices, Table 124: USART bootloader minimum timings
of STM32 devices, Table 125: USB bootloader minimum timings of STM32
devices, Table 126: I2C bootloader minimum timings of STM32 devices,
Table 127: SPI bootloader minimum timings of STM32 devices
– Section 3: Glossary, Section 6.1: Bootloader configuration, Section 14.3.3:
USART bootloader Get-Version command returns 0x20 instead of 0x22,
RPN reference in Section 51: STM32L43xxx/44xxx devices bootloader and
in Section 53: STM32L47xxx/48xxx devices bootloader
Added Section 36: STM32F72xxx/73xxx devices bootloader and Section 54:
STM32L496xx/4A6xx devices bootloader
Updated:
– Table 1: Applicable products, Table 2: Bootloader activation patterns,
Table 3: Embedded bootloaders, Table 25: STM32F105xx/107xx bootloader
versions, Table 30: STM32F2xxxx configuration in system memory boot
mode, Table 34: STM32F302xB(C)/303xB(C) configuration in system
memory boot mode, Table 42: STM32F358xx configuration in system
memory boot mode, Table 44: STM32F373xx configuration in system
memory boot mode, Table 46: STM32F378xx configuration in system
memory boot mode, Table 52: STM32F40xxx/41xxx configuration in system
memory boot mode, Table 54: STM32F401xB(C) configuration in system
memory boot mode, Table 56: STM32F401xD(E) configuration in system
memory boot mode, Table 60: STM32F411xx configuration in system
memory boot mode, Table 66: STM32F42xxx/43xxx configuration in system
memory boot mode, Table 70: STM32F446xx configuration in system
memory boot mode, Table 72: STM32F469xx/479xx configuration in system
memory boot mode, Table 74: STM32F72xxx/73xxx configuration in system
04-Jul-2017 31 memory boot mode, Table 76: STM32F74xxx/75xxx configuration in system
memory boot mode, Table 78: STM32F74xxx/75xxx configuration in system
memory boot mode, Table 84: STM32H74xxx/75xxx configuration in system
memory boot mode, Table 100: STM32L1xxxC configuration in system
memory boot mode, Table 102: STM32L1xxxD configuration in system
memory boot mode, Table 104: STM32L1xxxE configuration in system
memory boot mode, Table 110: STM32L45xxx/46xxx configuration in system
memory boot mode, Table 122: Bootloader device-dependent parameters,
Table 123: Bootloader startup timings of STM32 devices, Table 124: USART
bootloader minimum timings of STM32 devices, Table 125: USB bootloader
minimum timings of STM32 devices, Table 126: I2C bootloader minimum
timings of STM32 devices
– Introduction, Section 3: Glossary
– Figure 64: Bootloader V9.x selection for STM32L43xxx/44xxx
Added:
– Section 40: STM32H74xxx/75xxx devices bootloader, Section 52:
STM32L45xxx/46xxx devices bootloader
Updated Table 3: Embedded bootloaders, Table 85: STM32H74xxx/75xxx
bootloader version, Table 116: STM32L496xx/4A6xx configuration in system
memory boot mode, Table 117: STM32L496xx/4A6xx bootloader version,
Table 122: Bootloader device-dependent parameters, Table 123: Bootloader
16-Feb-2018 32 startup timings of STM32 devices, Table 124: USART bootloader minimum
timings of STM32 devices, Table 125: USB bootloader minimum timings of
STM32 devices, Table 126: I2C bootloader minimum timings of STM32
devices.
Added Section 55: STM32L4Rxxx/4Sxxx devices bootloader
Updated Note: in Section 8.1: Bootloader configuration, Note: in Section 9.1:
07-Aug-2018 33
Bootloader configuration
STMicroelectronics NV and its subsidiaries (“ST”) reserve the right to make changes, corrections, enhancements, modifications, and
improvements to ST products and/or to this document at any time without notice. Purchasers should obtain the latest relevant information on
ST products before placing orders. ST products are sold pursuant to ST’s terms and conditions of sale in place at the time of order
acknowledgement.
Purchasers are solely responsible for the choice, selection, and use of ST products and ST assumes no liability for application assistance or
the design of Purchasers’ products.
Resale of ST products with provisions different from the information set forth herein shall void any warranty granted by ST for such product.
ST and the ST logo are trademarks of ST. All other product or service names are the property of their respective owners.
Information in this document supersedes and replaces information previously supplied in any prior versions of this document.