AWS IoT Over-the-air Update v3.0.0 vs FreeRTOS OTA V1.1.1 - OTA Download time and memory utilization

Hi,

I am trying to upgrading the CC3220SF-LAUNCHXL device with AWS-IOT freeRTOS SDK 202002 to 202107.

While comparing both the versions in terms of memory consumption and Download speed of OTA. Following huge difference observed (especially in the OTA).

AWS-IOT freeRTOS SDK 202002

      Memory : ~11KB

      OTA( FreeRTOS OTA V1.1.1) Download Speed: ~ 21348ms (Firmware file size 206193)

AWS-IOT freeRTOS SDK 202107

    Memory : ~22kb 

    OTA ( AWS IoT Over-the-air Update v3.0.0) Download Speed: ~46543ms (Firmware file size 206193)

If we observe about metrics, latest version (202107) consuming double the memory , and OTA (AWS IoT Over-the-air Update v3.0.0) is taking more time to download the firmware.

Please tell us the differences/advantages of upgrading latest version of OTA and also indicate the exact changes and why the memory is doubled and download speed also decreased.

Regards,
Suresh

Hello @Suresh ,

The 202002 and 202107 version has significant difference in OTA library and its dependencies ( AWS and third party libraries ) features. I can compile and share the major differences between these two versions , can you please share how you measured the memory ? Regarding download speed are you using the default OTA library configuration for testing both versions or updated any to make streaming configuration same?

HI @pvyawaha,

Thanks a lot for your response.

Ans: As I am using IAR compiler to build,  *"<awsDemos>.map"* file -->  *<ota_demo_filename.o>* indicates the memory consumption.
   Ans: I am using  the default ota library (demo) without any configuration changes.

As my application is memory constrained and battery operated, so Memory and Speed is major concerns here.,
So from your response I understand that it is expected behaviour in terms of memory. Please point me if any optimizations is possible.

Yes Please share, and also confirm the download speed as well.

Regards,
Suresh

Hello @Suresh,

To optimize for speed or size a great place will be to start with OTA configurations. The CC3220SF-LAUNCHXL OTA config is at amazon-freertos/ota_config.h at main · aws/amazon-freertos · GitHub.

The config parameter otaconfigMAX_NUM_BLOCKS_REQUEST can be used for setting the number of blocks received in response to a single request. More blocks per request will increase the speed of the download. The maximum response from service is 128KB so if the block size is set to 4 KB then maximum number of blocks can be 128/4 i.e 32 blocks. This will require more data buffers as well ( see otaconfigMAX_NUM_OTA_DATA_BUFFERS ). The block size is defined by otaconfigLOG2_FILE_BLOCK_SIZE ( default is 1KB ). Increasing block size will also increase the speed but at cost of increase in buffer size as well.