2010-04-29 08:50 PM
Loading Boot code via RAM
2011-05-17 04:49 AM
What if MCU reboots (power failure or whatever) during firmware upgrade?
What if upgrade fails somehow (corrupted firmware)? What if someone sends an invalid firmware? What we did here was: - fixed bootloader at 0x8000000 - application at 0x8008000 Now, bootloader here is NEVER changed, which might not fit in your workflow, but it works for us. We transfer application via wireless and flash it. In the end we calculate the checksum, and write the ''firmware is ok'' flag. Our bootloader sets up a watchdog, then checks if there's a new firmware waiting, otherwise it transfers control to the application. Application must ping that watchdog, or device will reboot into bootloader (we don't have a way to reboot the device physically), so that takes care of invalid applications. Well, at least some, you still need to take care to not ping the watchdog, if application is not functioning ok (ie. not able to detect firmware upgrade request and reboot). Hope this gave you some hints.2011-05-17 04:49 AM
Hi,
You didn't think about using the implemented STM32 Bootloader (in system memory) in this case? it may be much easier?2011-05-17 04:49 AM
It seems using system memory is the best solution for my problem. Thanks.
2011-05-17 04:49 AM
I think this must need a external MCU to control BOOT0/nSYSRST. I had got a patent at china, for this issue.