Firmware update via bootloader - without reset - how to?
Scenario:
- one STM32F0, as part of a bigger system, has the purpose of monitoring and controlling the power rails.
- To be able to update the firmware in the field, a U(s)ART connects it to the Linux ARM SoC also in the system
- the latter is supposed to provide the firmware by implementing the corresponding USART firmware update protocol, talking to the STM32 bootloader.
As you may have guessed by now, it would be rather disadvantageous if the STM32 gets reset for the update, which reconfigures the pins as floating, and disables the power of the Linux SoC.
I searched around a bit and found several threads mentioning jumping to the bootloader code from user code - for which you apparently should do a reset, as things need to be set to defaults for it to work.
But if I understood the reference manual right, a "software reset" also resets everything, i.e. also the pins to floating. So the "write magic value to backup register, software reset, jump to bootloader from modified startup code if magic value is present" scheme would not work.
I can dream up a bunch of solutions using additional external hardware components.
But - can this be done without extra hardware?
Such that the system will still not saw at the branch it's sitting on and cut its own power?
