STM32 CAN bootloader
Hello,
I have a few questions regarding the system memory bootloader on STM32 cortex-M products (especially STM32F446, though other parts as well).
1) Is there no timeout to get out of the bootloader if no communication is detected?
I mean, the system boot is activated by tying the BOOTx pins to the proper voltage, then the bootloader executes, but no one is transmitting anything on any of the interfaces (UART, SPI, etc.).
Will the bootloader keep waiting forever?
Can it be exited by applying different voltages on the BOOTx pins?
Is the only way out that of transmitting a GO instruction via one of the available interfaces?
2) How should I connect the unused interfaces?
For instance, I want to use CAN2 for the firmware update. However, the bootloader will also listen to various USARTs, SPIs, I2Cs, etc.
Do their pins need to be tied to some voltage (e.g. pullups on I2C SDA, pullup on USART RX) to prevent spurious data being received, or will the bootloader initialize all the pins appropriately?
3) What if I have other hardware connected to the pins of unused interfaces?
For instance, if I don't want to use USART1, and I guarantee that nothing will be transmitted to USART1_RX, will USART1_TX still be configured as output while the bootloader is executing?
4) Are there utilities provided by ST to perform a firmware update from a PC?
I know that there's the "Flash loader demonstrator" (https://www.st.com/en/development-tools/flasher-stm32.html#), but as far as I can tell it only supports the USART bootloader protocol.
I would need a utility working with CAN instead (through a USB-to-CAN hardware adapter).
