AWS OTA for ESP32

Hi, I was referring to AWS OTA FreeRTOS MQTT example available at AWS site.

Wanted to know availability of:

  1. description for files used in project
  2. flow of program for OTA

Please suggest document for above

Hello @ravi,

Here are a couple of relevant links for the OTA library.

I recommend going through the library documentation to find information on what functions and files exist. I also recommend that you look at the demo applications as an example of how to use the library.

refering AWS code, getting below error:

cmake -DVENDOR=espressif -DBOARD=esp32_devkitc -DCOMPILER=xtensa-esp32 -G Ninja -S . -B …\build
– Configuring done
– Generating done
– Build files have been written to: C:/gau/AWS/ESP32/freertos-1643010662146/build

cmake --build …\build
C:\gau\AWS\ESP32\freertos-1643010662146\FreeRTOS>cmake --build …\build
[0/2] Re-checking globbed directories…
[2/1651] Building C object CMakeFiles/afr_crypto.dir/vendo…pressif/esp-idf/components/mbedtls/port/esp32/bignum.c.obj
FAILED: CMakeFiles/afr_crypto.dir/vendors/espressif/esp-idf/components/mbedtls/port/esp32/bignum.c.obj
C:\Users\RHONAKAM.espressif\tools\xtensa-esp32-elf\esp-2021r1-8.4.0\xtensa-esp32-elf\bin\xtensa-esp32-elf-gcc.exe -DAFR_ESP_LWIP -DESP_PLATFORM -DIDF_VER=“v4.3.1-dirty” -DMBEDTLS_CONFIG_FILE=“C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/mbedtls/port/include/mbedtls/esp_config.h” -D_GNU_SOURCE -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/freertos_plus/standard/crypto/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/mbedtls/port/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/xtensa/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/soc/soc/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/soc/src/esp32/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/pkcs11 -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls_config -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls_utils -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/lwip/include/apps -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/lwip/include/apps/sntp -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/lwip/lwip/src/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/lwip/port/esp32/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/lwip/port/esp32/include/arch -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/lwip/lwip/src/include/compat -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/freertos_kernel/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/app_update/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/bootloader_support/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/esp32/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/esp_event/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/efuse/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/driver/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/heap/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/log/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/nvs_flash/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/pthread/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/newlib/platform_include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/soc/soc/esp32/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/soc/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/spi_flash/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/vfs/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/esp_ringbuf/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/boards/esp32/…/components/freertos/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/xtensa/esp32/include/xtensa -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/xtensa/esp32/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/esp_rom/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/esp_timer/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/esp_common/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/esp_system/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/tcpip_adapter/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/boards/esp32/aws_demos/config_files/default_pkcs11_config -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/freertos_kernel/portable/ThirdParty/GCC/Xtensa_ESP32/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/demos/include -IC:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/boards/esp32/aws_demos/config_files -Iconfig -mlongcalls -Wno-maybe-uninitialized -std=gnu99 -Wno-old-style-declaration -Wno-stringop-overflow -Wno-bool-operation -Wno-sizeof-pointer-div -Wno-nonnull -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wextra -Wno-unused-parameter -Wno-sign-compare -ggdb -Og -Wno-parentheses -Wno-sizeof-pointer-memaccess -Wno-clobbered -Wno-format-overflow -Wno-stringop-truncation -Wno-misleading-indentation -Wno-cast-function-type -Wno-implicit-fallthrough -Wno-unused-const-variable -Wno-switch-unreachable -Wno-format-truncation -Wno-memset-elt-size -Wno-int-in-bool-context -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -MD -MT CMakeFiles/afr_crypto.dir/vendors/espressif/esp-idf/components/mbedtls/port/esp32/bignum.c.obj -MF CMakeFiles\afr_crypto.dir\vendors\espressif\esp-idf\components\mbedtls\port\esp32\bignum.c.obj.d -o CMakeFiles/afr_crypto.dir/vendors/espressif/esp-idf/components/mbedtls/port/esp32/bignum.c.obj -c C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/mbedtls/port/esp32/bignum.c
C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/mbedtls/port/esp32/bignum.c:31:8: error: unknown type name ‘_lock_t’
static _lock_t mpi_lock;
^~~~~~~
C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/mbedtls/port/esp32/bignum.c: In function ‘esp_mpi_enable_hardware_hw_op’:
C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/mbedtls/port/esp32/bignum.c:44:5: error: implicit declaration of function ‘_lock_acquire’ [-Werror=implicit-function-declaration]
_lock_acquire(&mpi_lock);
^~~~~~~~~~~~~
C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/mbedtls/port/esp32/bignum.c: In function ‘esp_mpi_disable_hardware_hw_op’:
C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/mbedtls/port/esp32/bignum.c:62:5: error: implicit declaration of function ‘_lock_release’; did you mean ‘__sync_lock_release’? [-Werror=implicit-function-declaration]
_lock_release(&mpi_lock);
^~~~~~~~~~~~~
__sync_lock_release
cc1.exe: some warnings being treated as errors
[5/1651] Building C object CMakeFiles/afr_pkcs11_implement…endors/espressif/boards/ports/pkcs11/core_pkcs11_pal.c.obj
C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/boards/ports/pkcs11/core_pkcs11_pal.c: In function ‘PKCS11_PAL_FindObject’:
C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/boards/ports/pkcs11/core_pkcs11_pal.c:233:17: warning: unused variable ‘pxZeroedData’ [-Wunused-variable]
CK_BYTE_PTR pxZeroedData = NULL;
^~~~~~~~~~~~
[8/1651] Building C object CMakeFiles/afr_tls.dir/vendors/espressif/esp-idf/components/mbedtls/port/mbedtls_debug.c.obj
In file included from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform_time.h:77,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform.h:68,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/mbedtls/port/mbedtls_debug.c:18:
C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/newlib/platform_include/time.h:25: warning: “CLOCK_MONOTONIC” redefined
#define CLOCK_MONOTONIC (clockid_t)4

In file included from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/newlib/platform_include/time.h:22,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform_time.h:77,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform.h:68,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/mbedtls/port/mbedtls_debug.c:18:
c:\users\rhonakam.espressif\tools\xtensa-esp32-elf\esp-2021r1-8.4.0\xtensa-esp32-elf\xtensa-esp32-elf\sys-include\time.h:293: note: this is the location of the previous definition
#define CLOCK_MONOTONIC ((clockid_t) 4)

In file included from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform_time.h:77,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform.h:68,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/mbedtls/port/mbedtls_debug.c:18:
C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/newlib/platform_include/time.h:26: warning: “CLOCK_BOOTTIME” redefined
#define CLOCK_BOOTTIME (clockid_t)4

In file included from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/newlib/platform_include/time.h:22,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform_time.h:77,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform.h:68,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/mbedtls/port/mbedtls_debug.c:18:
c:\users\rhonakam.espressif\tools\xtensa-esp32-elf\esp-2021r1-8.4.0\xtensa-esp32-elf\xtensa-esp32-elf\sys-include\time.h:303: note: this is the location of the previous definition
#define CLOCK_BOOTTIME ((clockid_t) 7)

[9/1651] Building C object CMakeFiles/afr_tls.dir/libraries/freertos_plus/standard/tls/src/iot_tls.c.obj
In file included from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform_time.h:77,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform.h:68,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/freertos_plus/standard/tls/src/iot_tls.c:39:
C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/newlib/platform_include/time.h:25: warning: “CLOCK_MONOTONIC” redefined
#define CLOCK_MONOTONIC (clockid_t)4

In file included from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/newlib/platform_include/time.h:22,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform_time.h:77,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform.h:68,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/freertos_plus/standard/tls/src/iot_tls.c:39:
c:\users\rhonakam.espressif\tools\xtensa-esp32-elf\esp-2021r1-8.4.0\xtensa-esp32-elf\xtensa-esp32-elf\sys-include\time.h:293: note: this is the location of the previous definition
#define CLOCK_MONOTONIC ((clockid_t) 4)

In file included from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform_time.h:77,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform.h:68,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/freertos_plus/standard/tls/src/iot_tls.c:39:
C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/newlib/platform_include/time.h:26: warning: “CLOCK_BOOTTIME” redefined
#define CLOCK_BOOTTIME (clockid_t)4

In file included from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/newlib/platform_include/time.h:22,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform_time.h:77,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform.h:68,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/freertos_plus/standard/tls/src/iot_tls.c:39:
c:\users\rhonakam.espressif\tools\xtensa-esp32-elf\esp-2021r1-8.4.0\xtensa-esp32-elf\xtensa-esp32-elf\sys-include\time.h:303: note: this is the location of the previous definition
#define CLOCK_BOOTTIME ((clockid_t) 7)

[10/1651] Building C object CMakeFiles/afr_pkcs11_implemen…rePKCS11/source/portable/mbedtls/core_pkcs11_mbedtls.c.obj
In file included from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform_time.h:77,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform.h:68,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/abstractions/pkcs11/corePKCS11/source/portable/mbedtls/core_pkcs11_mbedtls.c:46:
C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/newlib/platform_include/time.h:25: warning: “CLOCK_MONOTONIC” redefined
#define CLOCK_MONOTONIC (clockid_t)4

In file included from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/newlib/platform_include/time.h:22,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform_time.h:77,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform.h:68,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/abstractions/pkcs11/corePKCS11/source/portable/mbedtls/core_pkcs11_mbedtls.c:46:
c:\users\rhonakam.espressif\tools\xtensa-esp32-elf\esp-2021r1-8.4.0\xtensa-esp32-elf\xtensa-esp32-elf\sys-include\time.h:293: note: this is the location of the previous definition
#define CLOCK_MONOTONIC ((clockid_t) 4)

In file included from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform_time.h:77,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform.h:68,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/abstractions/pkcs11/corePKCS11/source/portable/mbedtls/core_pkcs11_mbedtls.c:46:
C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/newlib/platform_include/time.h:26: warning: “CLOCK_BOOTTIME” redefined
#define CLOCK_BOOTTIME (clockid_t)4

In file included from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/vendors/espressif/esp-idf/components/newlib/platform_include/time.h:22,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform_time.h:77,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/3rdparty/mbedtls/include/mbedtls/platform.h:68,
from C:/gau/AWS/ESP32/freertos-1643010662146/FreeRTOS/libraries/abstractions/pkcs11/corePKCS11/source/portable/mbedtls/core_pkcs11_mbedtls.c:46:
c:\users\rhonakam.espressif\tools\xtensa-esp32-elf\esp-2021r1-8.4.0\xtensa-esp32-elf\xtensa-esp32-elf\sys-include\time.h:303: note: this is the location of the previous definition
#define CLOCK_BOOTTIME ((clockid_t) 7)

[11/1651] Building C object CMakeFiles/afr_tls.dir/vendors/espressif/esp-idf/components/mbedtls/port/esp_bignum.c.obj
ninja: build stopped: subcommand failed.

Please suggest how to resolve

Hi Ravi, I have two questions:

  1. What version of the repository are you using?
  2. Did you download the submodules before attempting to build?

Hi, Code is taken from AWS console IoT core…build by using ESP IDF command. Build was done directly without providing AWS credentials.

Hi @ravi,

Some questions:

  • What is the ESP IDF command you are using to build?
  • Are you using that cmake command you have posted or are you using idf.py?
  • Have you followed the toolchain setup instructions here?
  • What are the values for the IDF-related environment variables in your shell?

Lastly, could you try cloning the repository at https://github.com/aws/amazon-freertos with its submodules and then try the build from there?

You’ll want

git clone https://github.com/aws/amazon-freertos.git --recurse-submodules

to make sure the submodules are cloned

A note for traceability - I saw this on the AWS forums before finding this post.

The replies here already have more detail and explanation so probably best to continue debugging here.