Gecko Bootloader supports multiple storage slots, where multiple firmware images can be stored. These images can then be loaded into the application area to be run. In current Bluetooth stack version (v2.4.x) OTA DFU (over-the-air device firmware upgrade) supports only the overwriting of the running stack and application image and it does not support the populating of the slots. Slots, however, can be easily written by user application using the bootloader API, so uploading can be solved on application level.
This article guides you through how to upload images to storage slots using the standard OTA DFU process. To learn how to bootload the uploaded images from the slots please read this article: http://community.silabs.com/t5/Bluetooth-Wi-Fi-Knowledge-Base/Switching-between-firmware-images-usin...
The standard OTA DFU sequence looks like this (provided that you use Gecko Bootloader):
The multislot OTA DFU process is the following:
The attached code implements image uploading to the slots using the standard OTA process. It is also extended with the possibility to select a slot to upload to, and to select a slot to boot from. You are free to modify this example according to your needs.
To create a project with multislot OTA DFU follow these steps:
(Note: setting gecko_bootloader=true in the .isc file will copy btl_interface.c and btl_interface_storage.c into your project again. Remove the instances you copied before to avoid duplicated definitions)
14. Flash the image to your device