Firmware Recovery: How to change mcuboot slot during runtime #mcumgr #mcuboot #fota


Brenton Chetty
 

Hi Zephyr developers/users

I'm working on an OTA firmware upgrade application.

I just wanted to find out, if there is any way to change slots during the zephyr application's runtime?

An example would be as follows:
   Firmware upgrade process is seen as successful.
   During Runtime the code detects an error with a peripheral (GSM modem), and therefore cannot download a new image OTA.
   The image needs to rollback to old firmware. How do I accomplish this?

With thanks
Brenton
 


Martin Kozusky
 

Hi,
so you have FW update solved, using boot_request_upgrade(BOOT_UPGRADE_TEST), mcuboot swaps the data between slots and starts your new FW? And then you want to rollback?
Then I think you should check all the firmware functionality before you call boot_write_img_confirmed() after the swap, if you don't call it, mcuboot should rollback automaticaly after next reboot (if you called boot_request_upgrade with BOOT_UPGRADE_TEST). Or may be try to call boot_request_upgrade() again?

Martin


Dne 01.02.2022 v 9:29 Brenton Chetty napsal(a):

Hi Zephyr developers/users

I'm working on an OTA firmware upgrade application.

I just wanted to find out, if there is any way to change slots during the zephyr application's runtime?

An example would be as follows:
   Firmware upgrade process is seen as successful.
   During Runtime the code detects an error with a peripheral (GSM modem), and therefore cannot download a new image OTA.
   The image needs to rollback to old firmware. How do I accomplish this?

With thanks
Brenton