2020-02-11 11:28 PM
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