cancel
Showing results for 
Search instead for 
Did you mean: 

Using STM32 System Bootloader (USART <-> STM32H747I-DISC0)

JAdam.1
Associate

To whom it may concern,

I have a few questions about STM32 System Bootloader.

After execute STM32 Bootloader by performing a jump to system memory from user code, I can connect to the STM32H747I-DISC0 board via ST-LINK or USART1(USB-TTL Converter – CN13(PIN13 and PIN14)) using STM32CubeProgrammer. Also, I can configure Option Bytes using STM32CubeProgrammer and I can send the command to STM32 Bootloader like 0x00 0xFF (Get) via USART1. After receiving the command, the STM32 Bootloader transmits the corresponding command.

How should I proceed if the system powered down or communication lost while programming target MCU via USART1 using STM32CubeProgrammer or custom application(developed using STM32CubeProgrammer C++ API)?

I change the BOOT0 pin to 1 instead of 0 for making the bootloader start in System Memory. After power on the board, I can’t connect to bootloader via USART1 although I can connect via ST-LINK using STM32CubeProgrammer. 

When I try to connect to Bootloader via USART1 STM32CubeProgrammer says:

“Error: Activating device: KO. Please verify the boot mode configuration and check the serial port configuration. Reset your device then try again...�?

I communicate with STM32 Bootloader via USART1 when I connect with ST-LINK firstly. Also, after power on the board, I communicate with STM32 Bootloader via USART1 when I push the Reset Push-Button(B1) firstly on the STM32H747I-DISC0 board. After that, I programmed the board without problems via USART1.

I tried to connect via USART1 using connector pins of CN13(PIN13 and PIN14) on the board without ST-LINK. When I powered board by using CN14 connector I couldn't communicate with STM32 Bootloader directly. I communicated with STM32 Bootloader via USART1 when I push Reset Push-Button(B1) similarly.

Why can I not communicate with STM32 Bootloader via USART1 after power on the board(without interfering)?

Some of the Option Bytes values are given below:

BOR_LEV = 0 (VBOR0)

BCM4 = 1 (CM4 boot enabled)

BCM7 = 1 (CM7 boot enabled)

BOOT_CM7_ADD0 = 0x08000000

BOOT_CM7_ADD1 = 0x1FF00000

BOOT_CM7_ADD0 = 0x08100000

BOOT_CM7_ADD1 = 0x1FF00000

nWRP0-nWRP15 = Checked (Write protection not active on this sector)

I just updated the value of BOOT_CM7_ADD0 to 0x1FF00000 (BOOT0 = 0) as given in the AN2606 document using STM32CubeProgrammer for making the bootloader start in System Memory. Similary,I couldn't communicate directly with the STM32 Bootloader unless push the Reset Push-Button(B1).

Notes:

->STM32CubeProgrammer Version = v2.3.0

->Bootloader Version = v3.1

->Device ID = 0x450

0 REPLIES 0