AWS FreeRTOS, ESP32, WOVER-ethernet-kit v1.1 uninitialized variables ....

netstv wrote on September 20, 2019:

First off, I do have the esp32 default FreeRTOS working, but the requirement has come down from the requirements god, that I must use the latest FreeRTOS from Amazon. So I know I have the toolchain all setup properly etc.

My hardware is the ESP32-Ethernet-Kit_A_V1.1

I have been following the instructions here:
[https://docs.aws.amazon.com/freertos/latest/userguide/getting_started_espressif.html]

darkLightning:esp stv$ git clone https://github.com/aws/amazon-freertos.git

I am on the latest stable code from the repo which from the README is the release branch. So I do the following:


git clone https://github.com/aws/amazon-freertos.git
Cloning into 'amazon-freertos'...
remote: Enumerating objects: 151, done.
remote: Counting objects: 100% (151/151), done.
remote: Compressing objects: 100% (103/103), done.
remote: Total 68838 (delta 56), reused 64 (delta 37), pack-reused 68687
Receiving objects: 100% (68838/68838), 192.30 MiB | 11.15 MiB/s, done.
Resolving deltas: 100% (34900/34900), done.
Checking out files: 100% (13609/13609), done.
darkLightning:esp stv$ cd amazon-freertos/


Then I switch to the release branch (NOTE: I didn’t upgrade the submodules, because it doesn’t seem that the release branch likes that )


darkLightning:amazon-freertos stv$ git co release
Branch 'release' set up to track remote branch 'release' from 'origin'.
Switched to a new branch 'release'

Now edit things like the doc said. And run the python setup, after editing the file


darkLightning:amazon-freertos stv$ vi tools/aws_config_quick_start/configure.json
darkLightning:amazon-freertos stv$ cd tools/aws_config_quick_start
darkLightning:aws_config_quick_start stv$ python SetupAWS.py setup


And then build the makefiles…

 

darkLightning:amazon-freertos stv$ cmake -DVENDOR=espressif -DBOARD=esp32_wrover_kit -DCOMPILER=xtensa-esp32 -S . -B build
-- The C compiler identification is GNU 8.2.0
-- The CXX compiler identification is GNU 8.2.0
-- The ASM compiler identification is GNU
-- Found assembler: /Users/stv/.espressif/tools/xtensa-esp32-elf/esp32-2019r1-8.2.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
-- Found Git: /usr/bin/git (found version "2.21.0 (Apple Git-120)") 
-- Checking Python dependencies...
Python requirements from /Users/stv/work/esp/amazon-freertos/vendors/espressif/esp-idf/requirements.txt are satisfied.
-- Building for target esp32

And then I do the make all -j4

 
darkLightning:build stv$ make all -j4
Scanning dependencies of target afr_3rdparty_tinycbor
Scanning dependencies of target afr_kernel
Scanning dependencies of target idf_component_ulp
Scanning dependencies of target idf_component_soc
[  0%] Building C object libraries/3rdparty/CMakeFiles/afr_3rdparty_tinycbor.dir/tinycbor/cborpretty.c.obj
[  0%] Building C object vendors/espressif/boards/esp32/esp-idf/ulp/CMakeFiles/idf_component_ulp.dir/ulp.c.obj
[  1%] Building C object vendors/espressif/boards/esp32/esp-idf/soc/CMakeFiles/idf_component_soc.dir/esp32/cpu_util.c.obj
[  1%] Building C object vendors/espressif/boards/esp32/esp-idf/ulp/CMakeFiles/idf_component_ulp.dir/ulp_macro.c.obj
[  1%] Building C object CMakeFiles/afr_kernel.dir/freertos_kernel/event_groups.c.obj
[  2%] Building C object vendors/espressif/boards/esp32/esp-idf/soc/CMakeFiles/idf_component_soc.dir/esp32/gpio_periph.c.obj
[  2%] Building C object libraries/3rdparty/CMakeFiles/afr_3rdparty_tinycbor.dir/tinycbor/cborencoder.c.obj
[  2%] Building C object vendors/espressif/boards/esp32/esp-idf/soc/CMakeFiles/idf_component_soc.dir/esp32/rtc_clk.c.obj
[  3%] Linking C static library libulp.a
[  3%] Building C object libraries/3rdparty/CMakeFiles/afr_3rdparty_tinycbor.dir/tinycbor/cborencoder_close_container_checked.c.obj
[  3%] Building C object CMakeFiles/afr_kernel.dir/freertos_kernel/list.c.obj
[  3%] Built target idf_component_ulp
[  3%] Building C object libraries/3rdparty/CMakeFiles/afr_3rdparty_tinycbor.dir/tinycbor/cborerrorstrings.c.obj
[ 
........

And it stops at:


Scanning dependencies of target idf_component_micro-ecc
[  8%] Building C object vendors/espressif/boards/esp32/esp-idf/spi_flash/CMakeFiles/idf_component_spi_flash.dir/flash_mmap.c.obj
[  8%] Building C object vendors/espressif/boards/esp32/esp-idf/micro-ecc/CMakeFiles/idf_component_micro-ecc.dir/micro-ecc/uECC.c.obj
[  8%] Linking C static library libfreertos.a
[  9%] Building C object vendors/espressif/boards/esp32/esp-idf/driver/CMakeFiles/idf_component_driver.dir/rmt.c.obj
[  9%] Built target idf_component_freertos
[  9%] Building C object vendors/espressif/boards/esp32/esp-idf/spi_flash/CMakeFiles/idf_component_spi_flash.dir/flash_ops.c.obj
Scanning dependencies of target idf_component_bootloader_support
[  9%] Building C object vendors/espressif/boards/esp32/esp-idf/bootloader_support/CMakeFiles/idf_component_bootloader_support.dir/src/bootloader_clock.c.obj
[  9%] Building C object vendors/espressif/boards/esp32/esp-idf/spi_flash/CMakeFiles/idf_component_spi_flash.dir/partition.c.obj
/Users/stv/work/esp/amazon-freertos/vendors/espressif/esp-idf/components/spi_flash/partition.c: In function 'load_partitions':
/Users/stv/work/esp/amazon-freertos/vendors/espressif/esp-idf/components/spi_flash/partition.c:180:66: error: argument to 'sizeof' in 'strncpy' call is the same expression as the source; did you mean to use the size of the destination? [-Werror=sizeof-pointer-memaccess]
         strncpy(item->info.label, (const char*) it->label, sizeof(it->label));
                                                                  ^
[ 10%] Linking C static library libmicro-ecc.a
[ 10%] Building C object vendors/espressif/boards/esp32/esp-idf/bootloader_support/CMakeFiles/idf_component_bootloader_support.dir/src/bootloader_common.c.obj
cc1: some warnings being treated as errors
make[2]: *** [vendors/espressif/boards/esp32/esp-idf/spi_flash/CMakeFiles/idf_component_spi_flash.dir/partition.c.obj] Error 1
make[1]: *** [vendors/espressif/boards/esp32/esp-idf/spi_flash/CMakeFiles/idf_component_spi_flash.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
/Users/stv/work/esp/amazon-freertos/vendors/espressif/esp-idf/components/bootloader_support/src/bootloader_common.c: In function 'bootloader_common_erase_part_type_data':
/Users/stv/work/esp/amazon-freertos/vendors/espressif/esp-idf/components/bootloader_support/src/bootloader_common.c:129:65: error: argument to 'sizeof' in 'strncpy' call is the same expression as the source; did you mean to use the size of the destination? [-Werror=sizeof-pointer-memaccess]
                 strncpy(label, (char *)&partition->label, sizeof(partition->label));
                                                                 ^
[ 10%] Building C object vendors/espressif/boards/esp32/esp-idf/driver/CMakeFiles/idf_component_driver.dir/rtc_module.c.obj
[ 10%] Building C object vendors/espressif/boards/esp32/esp-idf/bootloader_support/CMakeFiles/idf_component_bootloader_support.dir/src/bootloader_flash.c.obj
[ 10%] Built target idf_component_micro-ecc
cc1: some warnings being treated as errors
make[2]: *** [vendors/espressif/boards/esp32/esp-idf/bootloader_support/CMakeFiles/idf_component_bootloader_support.dir/src/bootloader_common.c.obj] Error 1
make[2]: *** Waiting for unfinished jobs....
[ 10%] Building C object vendors/espressif/boards/esp32/esp-idf/driver/CMakeFiles/idf_component_driver.dir/sdio_slave.c.obj
[ 10%] Building C object vendors/espressif/boards/esp32/esp-idf/driver/CMakeFiles/idf_component_driver.dir/sdmmc_host.c.obj
make[1]: *** [vendors/espressif/boards/esp32/esp-idf/bootloader_support/CMakeFiles/idf_component_bootloader_support.dir/all] Error 2
/Users/stv/work/esp/amazon-freertos/vendors/espressif/esp-idf/components/driver/rtc_module.c: In function 'touch_pad_filter_start':
/Users/stv/work/esp/amazon-freertos/vendors/espressif/esp-idf/components/driver/rtc_module.c:964:15: warning: passing argument 5 of 'xTimerCreate' from incompatible pointer type [-Wincompatible-pointer-types]
         NULL, touch_pad_filter_cb);
               ^~~~~~~~~~~~~~~~~~~
In file included from /Users/stv/work/esp/amazon-freertos/vendors/espressif/boards/esp32/aws_demos/application_code/espressif_code/freertos/include/freertos/timers.h:1,
                 from /Users/stv/work/esp/amazon-freertos/vendors/espressif/esp-idf/components/driver/rtc_module.c:36:
/Users/stv/work/esp/amazon-freertos/freertos_kernel/include/timers.h:232:33: note: expected 'TimerCallbackFunction_t' {aka 'void (*)(struct tmrTimerControl *)'} but argument is of type 'void (*)(void *)'
         TimerCallbackFunction_t pxCallbackFunction ) PRIVILEGED_FUNCTION;
         ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
[ 10%] Building C object vendors/espressif/boards/esp32/esp-idf/driver/CMakeFiles/idf_component_driver.dir/sdmmc_transaction.c.obj
[ 10%] Building C object vendors/espressif/boards/esp32/esp-idf/driver/CMakeFiles/idf_component_driver.dir/sdspi_crc.c.obj
[ 10%] Building C object vendors/espressif/boards/esp32/esp-idf/driver/CMakeFiles/idf_component_driver.dir/sdspi_host.c.obj
[ 10%] Building C object vendors/espressif/boards/esp32/esp-idf/driver/CMakeFiles/idf_component_driver.dir/sdspi_transaction.c.obj
[ 10%] Building C object vendors/espressif/boards/esp32/esp-idf/driver/CMakeFiles/idf_component_driver.dir/sigmadelta.c.obj
[ 10%] Building C object vendors/espressif/boards/esp32/esp-idf/driver/CMakeFiles/idf_component_driver.dir/spi_common.c.obj
[ 11%] Building C object vendors/espressif/boards/esp32/esp-idf/driver/CMakeFiles/idf_component_driver.dir/spi_master.c.obj
[ 11%] Building C object vendors/espressif/boards/esp32/esp-idf/driver/CMakeFiles/idf_component_driver.dir/spi_slave.c.obj
[ 11%] Building C object vendors/espressif/boards/esp32/esp-idf/driver/CMakeFiles/idf_component_driver.dir/timer.c.obj
[ 11%] Building C object vendors/espressif/boards/esp32/esp-idf/driver/CMakeFiles/idf_component_driver.dir/uart.c.obj
[ 11%] Linking C static library libdriver.a
[ 11%] Built target idf_component_driver
make: *** [all] Error 2

Then I thought it could be a -j4 think, so without it I get …


Scanning dependencies of target afr_pkcs11_implementation
[ 13%] Building C object CMakeFiles/afr_pkcs11_implementation.dir/vendors/espressif/boards/esp32/ports/pkcs11/iot_pkcs11_pal.c.obj
[ 13%] Building C object CMakeFiles/afr_pkcs11_implementation.dir/libraries/abstractions/pkcs11/mbedtls/iot_pkcs11_mbedtls.c.obj
/Users/stv/work/esp/amazon-freertos/libraries/abstractions/pkcs11/mbedtls/iot_pkcs11_mbedtls.c: In function 'C_CreateObject':
/Users/stv/work/esp/amazon-freertos/libraries/abstractions/pkcs11/mbedtls/iot_pkcs11_mbedtls.c:1979:21: warning: unused variable 'pxSession' [-Wunused-variable]
     P11SessionPtr_t pxSession = prvSessionPointerFromHandle( xSession );
                     ^~~~~~~~~
/Users/stv/work/esp/amazon-freertos/libraries/abstractions/pkcs11/mbedtls/iot_pkcs11_mbedtls.c: In function 'prvCreatePublicKey':
/Users/stv/work/esp/amazon-freertos/libraries/stv/pkcs11/mbedtls/iot_pkcs11_mbedtls.c:1897:22: error: 'lDerKeyLength' may be used uninitialized in this function [-Werror=maybe-uninitialized]
         xPalHandle = PKCS11_PAL_SaveObject( pxLabel,
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                             pxDerKey + ( MAX_LENGTH_KEY - lDerKeyLength ),
                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                             lDerKeyLength );
                                             ~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[2]: *** [CMakeFiles/afr_pkcs11_implementation.dir/libraries/abstractions/pkcs11/mbedtls/iot_pkcs11_mbedtls.c.obj] Error 1
make[1]: *** [CMakeFiles/afr_pkcs11_implementation.dir/all] Error 2
make: *** [all] Error 2

Any ideas on how to fix this I’d appreciate it. I’m hesitant to touch the code because this “should” works as it’s the stable branch.

-stv

Gaurav-Aggarwal-AWS wrote on September 20, 2019:

What is the version of your ESP32 compiler? You can check that using the following command:


xtensa-esp32-elf-gcc --version

The latest version of the ESP32 compiler does not work with ESP-IDF version in Amazon FreeRTOS and you need to make sure that you get the ESP32 complier as mentioned in the “Setting Up the Toolchain” section here: https://docs.aws.amazon.com/freertos/latest/userguide/getting_started_espressif.html

Which OS are you running on and what is the CMake version are you using?

I tried building the release branch on Ubuntu 18.04 using the following commands and it worked for me:


git clone git@github.com:aws/amazon-freertos.git
cd amazon-freertos/
git checkout release
cd ..
cmake -DVENDOR=espressif -DBOARD=esp32_wrover_kit -DCOMPILER=xtensa-esp32 -S . -B build
cd build/
make all -j4

My ESP32 toolchain version:


xtensa-esp32-elf-gcc (crosstool-NG crosstool-ng-1.22.0-80-g6c4433a) 5.2.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Thanks.

netstv wrote on November 15, 2019:

My version of the compiler was wrong. I have another issue but I’m going to start a new thread for that as this issue is resolved. I had to go to the AWS “how to page” and go to the MacOS link. It points to the proper toolchain.