Bootloader client implementation

Bootloader file format

In order to make bootloading easier across platforms the different firmwares are packaged together in a ZIP file that contains a manifest describing which files are used for what. Here's an example of a manifest, it should be called manifest.json:

{
   "version":2,
   "subversion":1,
   "fw_platform":"cf2",
   "release":"2024.2",
   "files":{
      "cf2-2023.11.bin":{
         "platform":"cf2",
         "target":"stm32",
         "type":"fw",
         "release":"2023.11",
         "repository":"crazyflie-firmware"
      },
      "cf2_nrf-2024.2.bin":{
         "platform":"cf2",
         "target":"nrf51",
         "type":"fw",
         "release":"2024.2",
         "repository":"crazyflie2-nrf-firmware",
         "requires":[
            "sd-s130"
         ]
      },
      "sd130_bootloader-2024.2.bin":{
         "platform":"cf2",
         "target":"nrf51",
         "type":"bootloader+softdevice",
         "release":"2024.2",
         "repository":"crazyflie2-nrf-bootloader",
         "provides":[
            "sd-s130"
         ]
      },
      "lighthouse.bin":{
         "platform":"deck",
         "target":"bcLighthouse4",
         "type":"fw",
         "release":"V6",
         "repository":"lighthouse-fpga"
      },
      "aideck_esp.bin":{
         "platform":"deck",
         "target":"bcAI:esp",
         "type":"fw",
         "release":"2023.06",
         "repository":"aideck-esp-firmware"
      }
   }
}

Each entry in the file describes one file, with the following attributes:

Attribute Values Comments
platform cf2, deck Select the target platform, either the main board (CF2) or a deck
target stm32, nrf51, : Select the target MCU on the target platform
type fw, bootloader, bootloader+softdevice Describe what's contained in the binary
release A version string The release name of the file
repository A repository string The binary’s project git repository. If not a complete address, is on the Bitcraze’s github project
requires A list of requirement Requirement before flashing the firmware. Is used to specify a required softdevice
provices A requiremet provided by this file Used to describe what a softdevice binary provides

Currently only platform=cf2, target=stm32, target=nrf51 and type=fw, type=bootloader+softdevice is supported.