Firmware Nordic Thingy:53 Build Error in nRF Connect SDK

Hi, I’d cloned this repo https://github.com/edgeimpulse/firmware-nordic-thingy53 and attempt to build the firmware using nRF Connect SDK (v2.1.0) in VS code. There are some errors during the build process which I’m not able to trace/solve.

-- Found devicetree overlay: C:/nRF/myapps/EI_download1/boards/thingy53_nrf5340_cpuapp.overlay
node '/soc/peripheral@50000000/i2c@9000/vm3011@60' compatible 'vesper,vm3011' has unknown vendor prefix 'vesper'
-- Generated zephyr.dts: C:/nRF/myapps/EI_download1/build/zephyr/zephyr.dts
-- Generated devicetree_unfixed.h: C:/nRF/myapps/EI_download1/build/zephyr/include/generated/devicetree_unfixed.h
-- Generated device_extern.h: C:/nRF/myapps/EI_download1/build/zephyr/include/generated/device_extern.h
-- Including generated dts.cmake file: C:/nRF/myapps/EI_download1/build/zephyr/dts.cmake
Parsing C:/nRF/myapps/EI_download1/Kconfig
C:/ncs/v2.1.0/zephyr/scripts/kconfig/kconfig.py: Dependency loop
===============

I2C (defined at boards/shields\adafruit_2_8_tft_touch_v2\Kconfig.defconfig:16, boards/shields\amg88xx\Kconfig.defconfig:7, boards/shields\buydisplay_2_8_tft_touch_arduino\Kconfig.defconfig:13, boards/shields\buydisplay_3_5_tft_touch_arduino\Kconfig.defconfig:13, boards/shields\frdm_stbc_agm01\Kconfig.defconfig:7, boards/shields\lmp90100_evb\Kconfig.defconfig:28, boards/shields\ssd1306\Kconfig.defconfig:17, boards/shields\x_nucleo_53l0a1\Kconfig.defconfig:9, boards/shields\x_nucleo_eeprma2\Kconfig.defconfig:14, boards/shields\x_nucleo_iks01a2\Kconfig.defconfig:7, boards/shields\x_nucleo_iks01a3\Kconfig.defconfig:7, boards/shields\x_nucleo_iks02a1\Kconfig.defconfig:7, C:/ncs/v2.1.0/zephyr/boards/arm/thingy53_nrf5340/Kconfig.defconfig:89, drivers/i2c/Kconfig:9), with definition...

config I2C
        bool
        default y
        depends on KSCAN && DISPLAY && (SHIELD_ADAFRUIT_2_8_TFT_TOUCH_V2 || SHIELD_ADAFRUIT_2_8_TFT_TOUCH_V2_NANO)

config I2C
        bool
        default y if SENSOR
        depends on SHIELD_AMG88XX_EVAL_KIT

config I2C
        bool
        default y
        depends on KSCAN && DISPLAY && SHIELD_BUYDISPLAY_2_8_TFT_TOUCH_ARDUINO

config I2C
        bool
        default y
        depends on KSCAN && DISPLAY && SHIELD_BUYDISPLAY_3_5_TFT_TOUCH_ARDUINO

config I2C
        bool
        default y if SENSOR
        depends on SHIELD_FRDM_STBC_AGM01

config I2C
        bool
        default y
        depends on EEPROM && SHIELD_LMP90100_EVB

config I2C
        bool
        default y
        depends on (SHIELD_SSD1306_128X64 || SHIELD_SSD1306_128X32 || SHIELD_SH1106_128X64) && DISPLAY && (SHIELD_SSD1306_128X64 || SHIELD_SSD1306_128X64_SPI || SHIELD_SSD1306_128X32 || SHIELD_SH1106_128X64)

config I2C
        bool
        default y
        depends on SHIELD_X_NUCLEO_53L0A1

config I2C
        bool
        default y
        depends on EEPROM && SHIELD_X_NUCLEO_EEPRMA2

config I2C
        bool
        default y if SENSOR
        depends on SHIELD_X_NUCLEO_IKS01A2

config I2C
        bool
        default y if SENSOR
        depends on SHIELD_X_NUCLEO_IKS01A3

config I2C
        bool
        default y if SENSOR
        depends on SHIELD_X_NUCLEO_IKS02A1

config I2C
        bool
        default y
        depends on !TRUSTED_EXECUTION_SECURE && (BOARD_THINGY53_NRF5340_CPUAPP || BOARD_THINGY53_NRF5340_CPUAPP_NS)

menuconfig I2C
        bool "I2C Drivers"
        help
          Enable I2C Driver Configuration

(select-related dependencies: (ADT7420 && DT_HAS_ADI_ADT7420_ENABLED && SENSOR) || (AK8975 && DT_HAS_ASAHI_KASEI_AK8975_ENABLED && SENSOR) || (AMG88XX && DT_HAS_PANASONIC_AMG88XX_ENABLED && SENSOR) || (AMS_IAQ_CORE && DT_HAS_AMS_IAQCORE_ENABLED && SENSOR) || (APDS9960 && DT_HAS_AVAGO_APDS9960_ENABLED && SENSOR) || (BMA280 && DT_HAS_BOSCH_BMA280_ENABLED && SENSOR) || (BMC150_MAGN && DT_HAS_BOSCH_BMC150_MAGN_ENABLED && SENSOR) || (BMG160 && DT_HAS_BOSCH_BMG160_ENABLED && SENSOR) || (BMI270 && DT_HAS_BOSCH_BMI270_ENABLED && SENSOR) || (BMM150 && DT_HAS_BOSCH_BMM150_ENABLED && SENSOR) || (BQ274XX && DT_HAS_TI_BQ274XX_ENABLED && SENSOR) || (CCS811 && DT_HAS_AMS_CCS811_ENABLED && SENSOR) || (DPS310 && DT_HAS_INFINEON_DPS310_ENABLED && SENSOR) || (ENS210 && DT_HAS_AMS_ENS210_ENABLED && SENSOR) || (FDC2X1X && DT_HAS_TI_FDC2X1X_ENABLED && NEWLIB_LIBC && SENSOR) || (FXAS21002 && DT_HAS_NXP_FXAS21002_ENABLED && SENSOR) || (FXOS8700 && DT_HAS_NXP_FXOS8700_ENABLED && SENSOR) || (TI_HDC && DT_HAS_TI_HDC_ENABLED && SENSOR) || (TI_HDC20XX && (DT_HAS_TI_HDC2010_ENABLED || DT_HAS_TI_HDC2021_ENABLED || DT_HAS_TI_HDC2022_ENABLED || DT_HAS_TI_HDC2080_ENABLED) && SENSOR) || (HMC5883L && DT_HAS_HONEYWELL_HMC5883L_ENABLED && SENSOR) || (HP206C && DT_HAS_HOPERF_HP206C_ENABLED && SENSOR) || (INA23X && (DT_HAS_TI_INA230_ENABLED || DT_HAS_TI_INA237_ENABLED) && SENSOR) || (ISL29035 && DT_HAS_ISIL_ISL29035_ENABLED && SENSOR) || (INA219 && DT_HAS_TI_INA219_ENABLED && SENSOR) || (LIS3MDL && DT_HAS_ST_LIS3MDL_MAGN_ENABLED && SENSOR) || (LM75 && DT_HAS_LM75_ENABLED && SENSOR) || (LM77 && DT_HAS_LM77_ENABLED && SENSOR) || (LPS22HB && DT_HAS_ST_LPS22HB_PRESS_ENABLED && SENSOR) || (LPS25HB && DT_HAS_ST_LPS25HB_PRESS_ENABLED && SENSOR) || (LSM303DLHC_MAGN && DT_HAS_ST_LSM303DLHC_MAGN_ENABLED && SENSOR) || (LSM6DS0 && DT_HAS_ST_LSM6DS0_ENABLED && SENSOR) || (LSM9DS0_GYRO && DT_HAS_ST_LSM9DS0_GYRO_ENABLED && SENSOR) || (LSM9DS0_MFD && DT_HAS_ST_LSM9DS0_MFD_ENABLED && SENSOR) || (MAX17055 && DT_HAS_MAXIM_MAX17055_ENABLED && SENSOR) || (MAX17262 && DT_HAS_MAXIM_MAX17262_ENABLED && SENSOR) || (MAX30101 && DT_HAS_MAXIM_MAX30101_ENABLED && SENSOR) || (MAX31875 && DT_HAS_MAXIM_MAX31875_ENABLED && SENSOR) || (MAX44009 && DT_HAS_MAXIM_MAX44009_ENABLED && SENSOR) || (MCP9808 && DT_HAS_MICROCHIP_MCP9808_ENABLED && SENSOR) || (MPR && DT_HAS_HONEYWELL_MPR_ENABLED && SENSOR) || (MPU6050 && DT_HAS_INVENSENSE_MPU6050_ENABLED && SENSOR) || (MPU9250 && DT_HAS_INVENSENSE_MPU9250_ENABLED && SENSOR) || (MS5837 && DT_HAS_MEAS_MS5837_ENABLED && SENSOR) || (OPT3001 && DT_HAS_TI_OPT3001_ENABLED && SENSOR) || (SBS_GAUGE && DT_HAS_SBS_SBS_GAUGE_ENABLED && SENSOR) || (SGP40 && DT_HAS_SENSIRION_SGP40_ENABLED && SENSOR) || (SHTCX && DT_HAS_SENSIRION_SHTCX_ENABLED && SENSOR) || (SHT3XD && DT_HAS_SENSIRION_SHT3XD_ENABLED && SENSOR) || (SHT4X && DT_HAS_SENSIRION_SHT4X_ENABLED && SENSOR) || (SI7006 && DT_HAS_SILABS_SI7006_ENABLED && SENSOR) || (SI7055 && DT_HAS_SILABS_SI7055_ENABLED && SENSOR) || (SI7060 && DT_HAS_SILABS_SI7060_ENABLED && SENSOR) || (SI7210 && DT_HAS_SILABS_SI7210_ENABLED && SENSOR) || (STTS751 && DT_HAS_ST_STTS751_ENABLED && SENSOR) || (SX9500 && DT_HAS_SEMTECH_SX9500_ENABLED && SENSOR) || (TH02 && DT_HAS_HOPERF_TH02_ENABLED && SENSOR) || (TMP007 && DT_HAS_TI_TMP007_ENABLED && SENSOR) || (TMP108 && DT_HAS_TI_TMP108_ENABLED && SENSOR) || (TMP112 && DT_HAS_TI_TMP112_ENABLED && SENSOR) || (TMP116 && DT_HAS_TI_TMP116_ENABLED && SENSOR) || (VCNL4040 && DT_HAS_VISHAY_VCNL4040_ENABLED && SENSOR) || (VL53L0X && DT_HAS_ST_VL53L0X_ENABLED && SENSOR) || (ITDS && DT_HAS_WE_WSEN_ITDS_ENABLED && SENSOR) || (COUNTER_MICROCHIP_MCP7940N && DT_HAS_MICROCHIP_MCP7940N_ENABLED && COUNTER))

...depends on SHT4X (defined at drivers/sensor/sht4x/Kconfig:6), with definition...

config SHT4X
        bool "SHT4x Temperature and Humidity Sensor"
        default y
        select I2C
        depends on DT_HAS_SENSIRION_SHT4X_ENABLED && SENSOR
        help
          Enable driver for SHT4x temperature and humidity sensors.

...depends on SENSOR (defined at boards/shields\x_nucleo_53l0a1\Kconfig.defconfig:12, C:/ncs/v2.1.0/nrf\drivers\sensor/Kconfig:7, drivers/sensor/Kconfig:6), with definition...

config SENSOR
        bool
        default y
        depends on SHIELD_X_NUCLEO_53L0A1

menuconfig SENSOR
        bool "Sensor Drivers"
        help
          Include sensor drivers in config

menuconfig SENSOR
        bool "Sensor Drivers"
        help
          Include sensor drivers in system config

(select-related dependencies: (BT_BAS && BT_CONN && BT_RPC_STACK) || (BT_BAS && BT_CONN && BT_CONN && BT_HCI_HOST && BT_RPC_STACK) || (NRF_802154_SL_OPENSOURCE && NRF_802154_TEMPERATURE_UPDATE && <choice NRF_802154_SL_TYPE>) || (VM3011 && I2C) || (NRF_802154_SL && NRF_802154_TEMPERATURE_UPDATE && !NRF_802154_SOURCE_HAL_NORDIC && <choice NRF_802154_SL_TYPE>) || (NRF_802154_SL_OPENSOURCE && NRF_802154_TEMPERATURE_UPDATE && <choice NRF_802154_SL_TYPE>) || (CLOCK_CONTROL_NRF_USES_TEMP_SENSOR && HAS_HW_NRF_TEMP && CLOCK_CONTROL_NRF_DRIVER_CALIBRATION && CLOCK_CONTROL_NRF_K32SRC_RC_CALIBRATION && CLOCK_CONTROL_NRF && CLOCK_CONTROL) || (BT_BAS && BT_CONN && BT_CONN && BT_HCI_HOST && BT_HCI && BT))

...depends on VM3011 (defined at C:/nRF/myapps/EI_download1/drivers/vm3011/Kconfig.vm3011:4), with definition...

menuconfig VM3011
        bool "VM3011 dmic"
        select NRFX_PDM
        select SENSOR
        depends on I2C
        help
          Enable driver for VM3011 Digital MEMS Microphone.

...depends again on I2C (defined at boards/shields\adafruit_2_8_tft_touch_v2\Kconfig.defconfig:16, boards/shields\amg88xx\Kconfig.defconfig:7, boards/shields\buydisplay_2_8_tft_touch_arduino\Kconfig.defconfig:13, boards/shields\buydisplay_3_5_tft_touch_arduino\Kconfig.defconfig:13, boards/shields\frdm_stbc_agm01\Kconfig.defconfig:7, boards/shields\lmp90100_evb\Kconfig.defconfig:28, boards/shields\ssd1306\Kconfig.defconfig:17, boards/shields\x_nucleo_53l0a1\Kconfig.defconfig:9, boards/shields\x_nucleo_eeprma2\Kconfig.defconfig:14, boards/shields\x_nucleo_iks01a2\Kconfig.defconfig:7, boards/shields\x_nucleo_iks01a3\Kconfig.defconfig:7, boards/shields\x_nucleo_iks02a1\Kconfig.defconfig:7, C:/ncs/v2.1.0/zephyr/boards/arm/thingy53_nrf5340/Kconfig.defconfig:89, drivers/i2c/Kconfig:9)
CMake Error at C:/ncs/v2.1.0/zephyr/cmake/modules/kconfig.cmake:293 (message):
  command failed with return code: 1
Call Stack (most recent call first):
  C:/ncs/v2.1.0/zephyr/cmake/modules/zephyr_default.cmake:121 (include)
  C:/ncs/v2.1.0/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:66 (include)
  C:/ncs/v2.1.0/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:92 (include_boilerplate)
  CMakeLists.txt:15 (find_package)


-- Configuring incomplete, errors occurred!
FATAL ERROR: command exited with status 1: 'c:\ncs\toolchains\v2.1.0\opt\bin\cmake.EXE' '-DWEST_PYTHON=c:\ncs\toolchains\v2.1.0\opt\bin\python.exe' '-Bc:\nRF\myapps\EI_download1\build' -GNinja -DBOARD=thingy53_nrf5340_cpuapp -DNCS_TOOLCHAIN_VERSION:STRING=NONE -DCONF_FILE:STRING=c:/nRF/myapps/EI_download1/boards/thingy53_nrf5340_cpuapp.conf -DBOARD_ROOT:STRING=c:/nRF/myapps/EI_download1 '-Sc:\nRF\myapps\EI_download1'
1 Like

Hi @JuanYi,

We do not support nRF Connect v2+ at this time. Please use v1.9.1 (see this repo for requirements: GitHub - edgeimpulse/firmware-nordic-thingy53). Hope that helps!

1 Like

Thanks @shawn_edgeimpulse, I’d switched to ncs v1.9.1 and no more zephyr error during the build. However, I got error when building the edge-impulse-sdk for dsp.

[588/793] Building C object CMakeFiles/app.dir/src/libs/mbedtls_hmac_sha256_sw/mbedtls/src/ssl_srv.c.obj
[589/793] Building CXX object CMakeFiles/app.dir/src/inference/ei_run_fusion_impulse.cpp.obj
In file included from C:\ncs\v1.9.1\zephyr\include\kernel\sched_priq.h:9,
                 from C:\ncs\v1.9.1\zephyr\include\kernel_includes.h:23,
                 from C:\ncs\v1.9.1\zephyr\include\kernel.h:17,
                 from C:\ncs\v1.9.1\zephyr\include\zephyr.h:18,
                 from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\src\ble\ble_nus.h:5,
                 from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\src\inference\ei_run_fusion_impulse.cpp:29:
C:\ncs\v1.9.1\zephyr\include\sys\util.h:154: warning: "ROUND_UP" redefined
  154 | #define ROUND_UP(x, align)                                   \
      | 
In file included from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\ei-model\edge-impulse-sdk\CMSIS\DSP\Include\arm_math.h:214,
                 from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\ei-model\edge-impulse-sdk\dsp\numpy.hpp:51,
                 from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\ei-model\edge-impulse-sdk\classifier\ei_model_types.h:27,
                 from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\ei-model\model-parameters\model_variables.h:27,
                 from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\ei-model\edge-impulse-sdk\classifier\ei_run_classifier.h:28,
                 from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\src\inference\ei_run_fusion_impulse.cpp:25:
c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\ei-model\edge-impulse-sdk\CMSIS\DSP\Include\dsp\utils.h:45: note: this is the location of the previous definition
   45 | #define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))
      | 
In file included from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\ei-model\edge-impulse-sdk\classifier\ei_model_types.h:27,
                 from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\ei-model\model-parameters\model_variables.h:27,
                 from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\ei-model\edge-impulse-sdk\classifier\ei_run_classifier.h:28,
                 from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\src\inference\ei_run_fusion_impulse.cpp:25:
../ei-model/edge-impulse-sdk/dsp/numpy.hpp: In static member function 'static int ei::numpy::welch_max_hold(float*, size_t, float*, size_t, size_t, size_t, bool)':
c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\ei-model\edge-impulse-sdk\dsp\numpy.hpp:2374:25: warning: comparison of integer expressions of different signedness: 'int' and 'size_t' {aka 'unsigned int'} [-Wsign-compare]
 2374 |         while (input_ix < input_size) {
      |                ~~~~~~~~~^~~~~~~~~~~~
In file included from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\ei-model\edge-impulse-sdk\dsp\spectral\spectral.hpp:28,
                 from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\ei-model\edge-impulse-sdk\classifier\ei_run_dsp.h:27,
                 from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\ei-model\edge-impulse-sdk\classifier\ei_run_classifier.h:34,
                 from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\src\inference\ei_run_fusion_impulse.cpp:25:
../ei-model/edge-impulse-sdk/dsp/spectral/feature.hpp: In static member function 'static int ei::spectral::feature::extract_spectral_analysis_features_v2(ei::matrix_t*, ei::matrix_t*, ei_dsp_config_spectral_analysis_t*, float)':
c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\ei-model\edge-impulse-sdk\dsp\spectral\feature.hpp:425:31: warning: comparison of integer expressions of different signedness: 'int' and 'size_t' {aka 'unsigned int'} [-Wsign-compare]
  425 |             for (int i = 0; i < data_size; i++) {
      |                             ~~^~~~~~~~~~~
In file included from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\ei-model\edge-impulse-sdk\classifier\ei_model_types.h:27,
                 from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\ei-model\model-parameters\model_variables.h:27,
                 from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\ei-model\edge-impulse-sdk\classifier\ei_run_classifier.h:28,
                 from c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\src\inference\ei_run_fusion_impulse.cpp:25:
c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\ei-model\edge-impulse-sdk\dsp\numpy.hpp:2393:43: warning: 'saved_point' may be used uninitialized in this function [-Wmaybe-uninitialized]
 2393 |                     input[fft_points / 2] = saved_point;
      |                     ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\ei-model\edge-impulse-sdk\dsp\numpy.hpp:2354:15: note: 'saved_point' was declared here
 2354 |         float saved_point;
      |               ^~~~~~~~~~~
ninja: build stopped: subcommand failed.
FATAL ERROR: command exited with status 1: 'c:\ncs\v1.9.1\toolchain\opt\bin\cmake.EXE' --build 'c:\nRF\myapps_ncs191\firmware-nordic-thingy53-main\build'

After switching to v1.9.1, the Edge Impulse FW compiles successfully.

I have uninstalled the v2.0.1 and reinstall the v1.9.1 and update the the toolchain, it still return the same error when I build the configuration in VS code… struggling.

I’d uninstalled both version in nRF toolchain manager and reinstall v1.9.1, and this time succeeded in building the firmware. I guess probably somehow v1.9.1 was using the updated (incompatible) packages from v2.1.0. Anyway, thanks for the attention! :smiley:

1 Like