2018-09-19 11:43 PM
We have a STM32F091 MCU board, it works, but we require to add bootloader function in for field update firmware.
The BOOT0(PF11) is connect to GND via 10K resistor, so it will go to Flash Memory after power up, it does that (LED flash).
I connect BOOT0 to 3.3V via 100 ohm resistor, when it power up, we expect it go to booloader mode, then nothing to UART after timeout, it will go to our application flash memory. But actually the LED doesn't flash.
I check the AN2606, BOOT0(pin) =1 and BOOT1(Pin) =0 will go to bootloader, but there is no Boot1 pin in STM32F091 MCU.
How can go to bootloader mode?
I check DM00031936, BOOT0(pin) = 1 and nBOOT1 bit = 1 will go to bootloader, but how can I set nBOOT1?
2018-09-20 07:28 AM
> then nothing to UART after timeout, it will go to our application flash memory.
No, there is no timeout in the bootloader. Once enters bootloader, it will remain in it waiting, until either you connect using one of the programming methods (where there may be a command to exit), or until reset.
> I check the AN2606, BOOT0(pin) =1 and BOOT1(Pin) =0 will go to bootloader, but there is no Boot1 pin
But there's no BOOT1(Pin) =0 in AN2606 either:
> I check DM00031936, BOOT0(pin) = 1 and nBOOT1 bit = 1 will go to bootloader, but how can I set nBOOT1?
Using a programmer, such as STLink.
JW
2018-09-20 08:39 AM
Usually in default states BOOT(0)=HIGH is sufficient.
Loader is a one-shot deal, looking for signals on several interfaces.
For the USART I tend to test in RealTerm with the port set to 9600 8E1 (EVEN PARITY), and in Hex Mode send the 0x7F pattern and watch for the 0x79 response. Note it is not receiving the 0x7F pattern but timing it with a TIM to determine the baud rate.
In debugger code typically executing in an 0x1FFxxxxx type range if stopped.