# mkfotaimg.py

The mkfotaimg.py tool takes two positional arguments as inputs: the FOTA Bluetooth Low Energy stack sub-image and the user application sub-image. Its usage and optional arguments are shown below.

Usage:

> mkfotaimg.py [-h] [--version] [-d UUID] [-s SecureBoot] [-i UUID][-n NAME] [-o OUT-IMG] FOTA-IMG APP-IMG

Arguments: see the "Positional Arguments" table and the "Optional Arguments" table.

Table: Positional Arguments

Argument | Meaning
FOTA-IMG | FOTA stack sub-image containing the Bluetooth Low Energy stack and the DFU component (.bin file)
APP-IMG | application sub-image (.bin file)

Table: Optional Arguments

Argument | Meaning
-h, --help | show help message and exit
--version | show program's version number and exit
-d UUID, --devid UUID | device UUID to embed in the image (default: no ID)
-s SecureBoot, --secure SecureBoot | the size of secure bootloader for the secure FOTA (default: non-secure)
-i UUID, --srvid UUID | advertised UUID to embed in the image (default: DFU service UUID)
-n NAME, --name NAME | advertised name to embed in the image (default: ON RSL FOTA )
-o OUT-IMG | name of output image file (default: <APP-IMG>.fota)

This Python utility can be integrated into the post-build steps of Eclipse to generate the .fota format file every time a user application project is built. This configuration is available in Project > Properties > C/C++ Build > Settings > Build Steps > Post-Build Steps. Two steps are required to generate the .fota image. First, we need to generate the app.bin, which is the application sub-image. This is done using the objcopy tool, as follows:

arm-none-eabi-objcopy -O binary <app_name>.elf <app_name>.bin

Then, we can call the mkfotaimg.py utility to generate the final FOTA image (app.fota file) from the stack sub-image (fota.bin) and the application sub-image (app.bin) generated above the .fota image, as follows:

mkfotaimg.py <app_name>.fota fota.bin <app_name>.bin

In order to invoke both commands, the two can be combined with the “&&” operator. Integrating FOTA Into Your Application, walks you step-by-step through generically configuring this post-build step for any application, including the path for the Python utility, FOTA stack binary file, and application binary file.