This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

CMake script for add eternal libaray ( BSEC ) to test Bosch sensor raeding?

hello,

i have downloaded    ( BSEC )    library from https://www.bosch-sensortec.com/software-tools/software/bsec/  for read sensor data . now want to test the code by build and flashing it with VS code for thingy 91 borad.

CMamke  file have 

FILE(GLOB bsec_integration src/*.c)

target_sources(app PRIVATE src/bsec_integration.c)
target_sources(app PRIVATE src/bme680.c)

i have add c file and header file in scr folder .

on build shows error 

FATAL ERROR: command exited with status 1: 'c:\Users\mohit\ncs\v1.9.1\toolchain\opt\bin\cmake.EXE' '-DWEST_PYTHON=c:\Users\mohit\ncs\v1.9.1\toolchain\opt\bin\python.exe' '-Be:\Nordic_Acadmey\bsec_integration\build_1' '-Se:\Nordic_Acadmey\bsec_integration' -GNinja -DBOARD=thingy91_nrf9160 -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=On -DNCS_TOOLCHAIN_VERSION:STRING=NONE.

please suggest

Parents
  • Hello,

    Did the compiler say something before "FATAL ERROR:..." If so, can you paste what it said before that (anything that doesn't look like a build success line).

    Also, I don't know whether this is actually an issue, but i have seen that some users have ahd trouble with this earlier. Try moving your project folder to the same drive as your NCS installation (c: in your case). 

    Let me know if that doesn't solve the issue.

    Best regards,

    Edvin

  • as you says i change the file location

    but error still appearing

    CMake Error in CMakeLists.txt:
    No CMAKE_CXX_COMPILER could be found.

    Tell CMake where to find the compiler by setting either the environment
    variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
    to the compiler, or to the compiler name if it is in the PATH.


    -- Configuring incomplete, errors occurred!
    See also "C:/Users/mohit/ncs/bsec_integration/build/CMakeFiles/CMakeOutput.log".
    See also "C:/Users/mohit/ncs/bsec_integration/build/CMakeFiles/CMakeError.log".
    FATAL ERROR: command exited with status 1: 'c:\Users\mohit\ncs\v1.9.1\toolchain\opt\bin\cmake.EXE' '-DWEST_PYTHON=c:\Users\mohit\ncs\v1.9.1\toolchain\opt\bin\python.exe' '-Bc:\Users\mohit\ncs\bsec_integration\build' '-Sc:\Users\mohit\ncs\bsec_integration' -GNinja -DBOARD=thingy91_nrf9160 -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=On -DNCS_TOOLCHAIN_VERSION:STRING=NONE -DCONFIG_DEBUG_OPTIMIZATIONS=y -DCONFIG_DEBUG_THREAD_INFO=y
    The terminal process terminated with exit code: 1.

  • Ok, can you copy everything that is printed before "-- Configuring incomplete, errors occured!" It should say something about what failed.

    Best regards,

    Edvin

Reply Children
  • Sir now i explain situation step by step. in odder to interface with BSE i have taken following step . Please correct me where i was wrong .

    Step 1:   Download library from  https://www.bosch-sensortec.com/software-tools/software/bsec/ offical ink on nrodic site.

    Step 2: after extracting the file . i have created a folder in name" bsec"  you can see the path in image

    Step3: copy file from bsec_ito_example (1LHS) to scr folder of my "bsec" fle(2RHS)

                ( 1 )                                                              (2)

    Step4: change name from of  "bse_ito_example " which contain the main code (1)

    copy and rename in my application folder(2)     (i add zephyr library for print_k in main file , remain code is same )

                    (1)                                        (2)

    Step5: As i learn  from Nordic academy "ho to add external header file "  and take steps as suggested .

    My CMake file look like

    cmake_minimum_required(VERSION 3.20.0)
    find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
    project(hello_world)
    target_sources(app PRIVATE src/main.c)
    target_sources(app PRIVATE src/bsec_integration.c)  
    target_sources(app PRIVATE src/bme680.c)  
    

    Step6: As usual is add new application in VS code on making Build directory by selecting Thingy91_nrf9160

    Terminal  shows ERROR 

    -- west build: generating a build system
    Including boilerplate (Zephyr base): C:/Users/mohit/nrf/v1.9.1/zephyr/cmake/app/boilerplate.cmake
    -- Application: C:/Users/mohit/nrf/v1.9.1/Nordic_Acadmey/bsec
    -- Zephyr version: 2.7.99 (C:/Users/mohit/nrf/v1.9.1/zephyr), build: v2.7.99-ncs1-1
    -- Found Python3: C:/Users/mohit/nrf/v1.9.1/toolchain/opt/bin/python.exe (found suitable exact version "3.8.2") found components: Interpreter 
    -- Found west (found suitable version "0.12.0", minimum required is "0.7.1")
    -- Board: thingy91_nrf9160
    -- Cache files will be written to: C:/Users/mohit/nrf/v1.9.1/zephyr/.cache
    -- Found dtc: C:/Users/mohit/nrf/v1.9.1/toolchain/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6")
    -- Found toolchain: gnuarmemb (c:/Users/mohit/nrf/v1.9.1/toolchain/opt)
    -- Found BOARD.dts: C:/Users/mohit/nrf/v1.9.1/nrf/boards/arm/thingy91_nrf9160/thingy91_nrf9160.dts
    -- Generated zephyr.dts: C:/Users/mohit/nrf/v1.9.1/Nordic_Acadmey/bsec/build/zephyr/zephyr.dts
    -- Generated devicetree_unfixed.h: C:/Users/mohit/nrf/v1.9.1/Nordic_Acadmey/bsec/build/zephyr/include/generated/devicetree_unfixed.h
    -- Generated device_extern.h: C:/Users/mohit/nrf/v1.9.1/Nordic_Acadmey/bsec/build/zephyr/include/generated/device_extern.h
    -- Including generated dts.cmake file: C:/Users/mohit/nrf/v1.9.1/Nordic_Acadmey/bsec/build/zephyr/dts.cmake
    Parsing C:/Users/mohit/nrf/v1.9.1/zephyr/Kconfig
    Loaded configuration 'C:/Users/mohit/nrf/v1.9.1/nrf/boards/arm/thingy91_nrf9160/thingy91_nrf9160_defconfig'
    Merged configuration 'C:/Users/mohit/nrf/v1.9.1/Nordic_Acadmey/bsec/prj.conf'
    Merged configuration 'C:/Users/mohit/nrf/v1.9.1/Nordic_Acadmey/bsec/build/zephyr/misc/generated/extra_kconfig_options.conf'
    Configuration saved to 'C:/Users/mohit/nrf/v1.9.1/Nordic_Acadmey/bsec/build/zephyr/.config'
    Kconfig header saved to 'C:/Users/mohit/nrf/v1.9.1/Nordic_Acadmey/bsec/build/zephyr/include/generated/autoconf.h'
    -- The C compiler identification is GNU 9.2.1
    -- The CXX compiler identification is GNU 9.2.1
    -- The ASM compiler identification is GNU
    -- Found assembler: C:/Users/mohit/nrf/v1.9.1/toolchain/opt/bin/arm-none-eabi-gcc.exe
    -- Found partition manager static configuration: C:/Users/mohit/nrf/v1.9.1/nrf/boards/arm/thingy91_nrf9160/pm_static.yml
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/Users/mohit/nrf/v1.9.1/Nordic_Acadmey/bsec/build
    -- west build: building application
    [1/174] Generating misc/generated/syscalls.json, misc/generated/struct_tags.json
    [2/174] Generating include/generated/driver-validation.h
    [3/174] Generating include/generated/syscall_dispatch.c, include/generated/syscall_list.h
    [4/174] Generating include/generated/kobj-types-enum.h, include/generated/otype-to-str.h, include/generated/otype-to-size.h
    [5/174] Building C object zephyr/CMakeFiles/offsets.dir/arch/arm/core/offsets/offsets.c.obj
    [6/174] Generating include/generated/offsets.h
    [7/174] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/swap_helper.S.obj
    [8/174] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/cpu_idle.S.obj
    [9/174] Building C object zephyr/arch/common/CMakeFiles/arch__common.dir/sw_isr_common.c.obj
    [10/174] Building C object zephyr/arch/common/CMakeFiles/isr_tables.dir/isr_tables.c.obj
    [11/174] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/thread.c.obj
    [12/174] Generating linker_zephyr_pre0.cmd
    [13/174] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/nmi.c.obj
    [14/174] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/irq_manage.c.obj
    [15/174] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/nmi_on_reset.S.obj
    [16/174] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/fatal.c.obj
    [17/174] Linking C static library zephyr\arch\common\libisr_tables.a
    [18/174] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/swap.c.obj
    [19/174] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/fault_s.S.obj
    [20/174] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/prep_c.c.obj
    [21/174] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/exc_exit.S.obj
    [22/174] Linking C static library zephyr\arch\common\libarch__common.a
    [23/174] Building C object zephyr/arch/arch/arm/core/aarch32/mpu/CMakeFiles/arch__arm__core__aarch32__mpu.dir/arm_mpu.c.obj
    [24/174] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/thread_abort.c.obj
    [25/174] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/fpu.c.obj
    [26/174] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/fault.c.obj
    [27/174] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/scb.c.obj
    [28/174] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/irq_init.c.obj
    [29/174] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/reset.S.obj
    [30/174] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/vector_table.S.obj
    [31/174] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/atoi.c.obj
    [32/174] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/strtol.c.obj
    [33/174] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/cmse/CMakeFiles/arch__arm__core__aarch32__cortex_m__cmse.dir/arm_core_cmse.c.obj
    [34/174] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/abort.c.obj
    [35/174] Building C object zephyr/arch/arch/arm/core/aarch32/mpu/CMakeFiles/arch__arm__core__aarch32__mpu.dir/arm_core_mpu.c.obj
    [36/174] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/bsearch.c.obj
    [37/174] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/strtoul.c.obj
    [38/174] Linking C static library zephyr\arch\arch\arm\core\aarch32\cortex_m\libarch__arm__core__aarch32__cortex_m.a
    [39/174] Linking C static library zephyr\arch\arch\arm\core\aarch32\cortex_m\cmse\libarch__arm__core__aarch32__cortex_m__cmse.a
    [40/174] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/string/strncasecmp.c.obj
    [41/174] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/string/strstr.c.obj
    [42/174] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/exit.c.obj
    [43/174] Linking C static library zephyr\arch\arch\arm\core\aarch32\mpu\libarch__arm__core__aarch32__mpu.a
    [44/174] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/malloc.c.obj
    [45/174] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/string/string.c.obj
    [46/174] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/qsort.c.obj
    [47/174] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdout/fprintf.c.obj
    [48/174] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/time/gmtime.c.obj
    [49/174] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/string/strspn.c.obj
    [50/174] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdout/stdout_console.c.obj
    [51/174] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdout/sprintf.c.obj
    [52/174] Building C object zephyr/soc/arm/common/cortex_m/CMakeFiles/soc__arm__common__cortex_m.dir/arm_mpu_regions.c.obj
    [53/174] Building C object zephyr/lib/posix/CMakeFiles/lib__posix.dir/pthread_common.c.obj
    [54/174] Building C object zephyr/lib/posix/CMakeFiles/lib__posix.dir/nanosleep.c.obj
    [55/174] Building C object zephyr/boards/boards/arm/thingy91_nrf9160/CMakeFiles/..__nrf__boards__arm__thingy91_nrf9160.dir/nrf52840_reset.c.obj
    [56/174] Linking C static library zephyr\soc\arm\common\cortex_m\libsoc__arm__common__cortex_m.a
    [57/174] Linking C static library zephyr\lib\libc\minimal\liblib__libc__minimal.a
    [58/174] Building C object zephyr/boards/boards/arm/thingy91_nrf9160/CMakeFiles/..__nrf__boards__arm__thingy91_nrf9160.dir/board_secure.c.obj
    [59/174] Linking C static library zephyr\lib\posix\liblib__posix.a
    [60/174] Building C object CMakeFiles/app.dir/src/main.c.obj
    [61/174] Building C object CMakeFiles/app.dir/src/bsec_integration.c.obj
    ../src/bsec_integration.c: In function 'bsec_iot_init':
    c:\Users\mohit\nrf\v1.9.1\Nordic_Acadmey\bsec\src\bsec_integration.c:163:27: warning: unused variable 'bsec_status' [-Wunused-variable]
      163 |     bsec_library_return_t bsec_status = BSEC_OK;
          |                           ^~~~~~~~~~~
    [62/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc32c_sw.c.obj
    [63/174] Building C object CMakeFiles/app.dir/src/bme680.c.obj
    [64/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf.c.obj
    [65/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc8_sw.c.obj
    [66/174] Linking C static library zephyr\boards\boards\arm\thingy91_nrf9160\lib..__nrf__boards__arm__thingy91_nrf9160.a
    [67/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc16_sw.c.obj
    [68/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf_packaged.c.obj
    [69/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc32_sw.c.obj
    [70/174] Linking C static library app\libapp.a
    [71/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/crc7_sw.c.obj
    [72/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/dec.c.obj
    [73/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/hex.c.obj
    [74/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/fdtable.c.obj
    [75/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/printk.c.obj
    [76/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/rb.c.obj
    [77/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/notify.c.obj
    [78/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/sem.c.obj
    [79/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/timeutil.c.obj
    [80/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/onoff.c.obj
    [81/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/thread_entry.c.obj
    [82/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/multi_heap.c.obj
    [83/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/heap-validate.c.obj
    [84/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/heap.c.obj
    [85/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/bitarray.c.obj
    [86/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/reboot.c.obj
    [87/174] Building ASM object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/common/soc_nrf_common.S.obj
    [88/174] Building C object zephyr/CMakeFiles/zephyr.dir/misc/generated/configs.c.obj
    [89/174] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf_complete.c.obj
    [90/174] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/nrf91/power.c.obj
    [91/174] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/nrf91/soc.c.obj
    [92/174] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/validate_base_addresses.c.obj
    [93/174] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/validate_enabled_instances.c.obj
    [94/174] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/pm/constraint.c.obj
    [95/174] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/debug/thread_info.c.obj
    [96/174] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/pm/policy/residency.c.obj
    [97/174] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/pm/pm.c.obj
    [98/174] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/tracing/tracing_none.c.obj
    [99/174] Building C object zephyr/CMakeFiles/zephyr.dir/C_/Users/mohit/nrf/v1.9.1/nrfxlib/crypto/nrf_cc310_platform/src/nrf_cc3xx_platform_abort_zephyr.c.obj
    [100/174] Building C object zephyr/CMakeFiles/zephyr_pre0.dir/misc/empty_file.c.obj
    [101/174] Building C object zephyr/CMakeFiles/zephyr.dir/C_/Users/mohit/nrf/v1.9.1/nrf/lib/adp536x/adp536x.c.obj
    [102/174] Building C object zephyr/CMakeFiles/zephyr.dir/C_/Users/mohit/nrf/v1.9.1/nrfxlib/crypto/nrf_cc310_platform/src/nrf_cc3xx_platform_mutex_zephyr.c.obj
    [103/174] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/isr_wrapper.S.obj
    [104/174] Generating linker_zephyr_pre1.cmd
    [105/174] Building C object modules/nrf/lib/fatal_error/CMakeFiles/..__nrf__lib__fatal_error.dir/fatal_error.c.obj
    [106/174] Linking C static library zephyr\libzephyr.a
    [107/174] Linking C static library modules\nrf\lib\fatal_error\lib..__nrf__lib__fatal_error.a
    [108/174] Building C object zephyr/drivers/console/CMakeFiles/drivers__console.dir/uart_console.c.obj
    [109/174] Linking C static library zephyr\drivers\console\libdrivers__console.a
    [110/174] Building C object zephyr/drivers/i2c/CMakeFiles/drivers__i2c.dir/i2c_common.c.obj
    [111/174] Building C object zephyr/drivers/timer/CMakeFiles/drivers__timer.dir/sys_clock_init.c.obj
    [112/174] Building C object zephyr/drivers/i2c/CMakeFiles/drivers__i2c.dir/i2c_nrfx_twim.c.obj
    [113/174] Building C object zephyr/drivers/gpio/CMakeFiles/drivers__gpio.dir/gpio_nrfx.c.obj
    [114/174] Building C object zephyr/drivers/clock_control/CMakeFiles/drivers__clock_control.dir/clock_control_nrf.c.obj
    [115/174] Building C object zephyr/drivers/serial/CMakeFiles/drivers__serial.dir/uart_nrfx_uarte.c.obj
    [116/174] Linking C static library zephyr\arch\arch\arm\core\aarch32\libarch__arm__core__aarch32.a
    [117/174] Linking C static library zephyr\drivers\clock_control\libdrivers__clock_control.a
    [118/174] Linking C static library zephyr\drivers\i2c\libdrivers__i2c.a
    [119/174] Linking C static library zephyr\drivers\serial\libdrivers__serial.a
    [120/174] Linking C static library zephyr\drivers\gpio\libdrivers__gpio.a
    [121/174] Building C object zephyr/drivers/timer/CMakeFiles/drivers__timer.dir/nrf_rtc_timer.c.obj
    [122/174] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/Users/mohit/nrf/v1.9.1/modules/hal/nordic/nrfx/mdk/system_nrf9160.c.obj
    [123/174] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/nrfx_glue.c.obj
    [124/174] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/Users/mohit/nrf/v1.9.1/modules/hal/nordic/nrfx/helpers/nrfx_flag32_allocator.c.obj
    [125/174] Building C object modules/nrf/drivers/hw_cc310/CMakeFiles/..__nrf__drivers__hw_cc310.dir/hw_cc310.c.obj
    [126/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mem_slab.c.obj
    [127/174] Linking C static library zephyr\drivers\timer\libdrivers__timer.a
    [128/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/kheap.c.obj
    [129/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/version.c.obj
    [130/174] Linking C static library modules\nrf\drivers\hw_cc310\lib..__nrf__drivers__hw_cc310.a
    [131/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/thread.c.obj
    [132/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/init.c.obj
    [133/174] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/Users/mohit/nrf/v1.9.1/modules/hal/nordic/nrfx/drivers/src/nrfx_dppi.c.obj
    [134/174] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/Users/mohit/nrf/v1.9.1/modules/hal/nordic/nrfx/drivers/src/nrfx_clock.c.obj
    [135/174] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/Users/mohit/nrf/v1.9.1/modules/hal/nordic/nrfx/drivers/src/nrfx_twi_twim.c.obj
    [136/174] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/Users/mohit/nrf/v1.9.1/modules/hal/nordic/nrfx/drivers/src/nrfx_gpiote.c.obj
    [137/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/errno.c.obj
    [138/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/banner.c.obj
    [139/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/device.c.obj
    [140/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/main_weak.c.obj
    [141/174] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/Users/mohit/nrf/v1.9.1/modules/hal/nordic/nrfx/drivers/src/nrfx_twim.c.obj
    [142/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/msg_q.c.obj
    [143/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/fatal.c.obj
    [144/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/pipes.c.obj
    [145/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/idle.c.obj
    [146/174] Linking C static library modules\hal_nordic\nrfx\libmodules__hal_nordic__nrfx.a
    [147/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mutex.c.obj
    [148/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mailbox.c.obj
    [149/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/stack.c.obj
    [150/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sem.c.obj
    [151/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/queue.c.obj
    [152/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sched.c.obj
    [153/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/system_work_q.c.obj
    [154/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timer.c.obj
    [155/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mempool.c.obj
    [156/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/xip.c.obj
    [157/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/work.c.obj
    [158/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/condvar.c.obj
    [159/174] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timeout.c.obj
    [160/174] Linking C static library zephyr\kernel\libkernel.a
    [161/174] Linking C executable zephyr\zephyr_pre0.elf
    FAILED: zephyr/zephyr_pre0.elf zephyr/zephyr_pre0.map 
    cmd.exe /C "cd . && C:\Users\mohit\nrf\v1.9.1\toolchain\opt\bin\arm-none-eabi-gcc.exe   zephyr/CMakeFiles/zephyr_pre0.dir/misc/empty_file.c.obj -o zephyr\zephyr_pre0.elf  -Wl,-T  zephyr/linker_zephyr_pre0.cmd  -Wl,-Map=C:/Users/mohit/nrf/v1.9.1/Nordic_Acadmey/bsec/build/zephyr/zephyr_pre0.map  -Wl,--whole-archive  app/libapp.a  zephyr/libzephyr.a  zephyr/arch/common/libarch__common.a  zephyr/arch/arch/arm/core/aarch32/libarch__arm__core__aarch32.a  zephyr/arch/arch/arm/core/aarch32/cortex_m/libarch__arm__core__aarch32__cortex_m.a  zephyr/arch/arch/arm/core/aarch32/cortex_m/cmse/libarch__arm__core__aarch32__cortex_m__cmse.a  zephyr/arch/arch/arm/core/aarch32/mpu/libarch__arm__core__aarch32__mpu.a  zephyr/lib/libc/minimal/liblib__libc__minimal.a  zephyr/lib/posix/liblib__posix.a  zephyr/soc/arm/common/cortex_m/libsoc__arm__common__cortex_m.a  zephyr/boards/boards/arm/thingy91_nrf9160/lib..__nrf__boards__arm__thingy91_nrf9160.a  zephyr/drivers/clock_control/libdrivers__clock_control.a  zephyr/drivers/console/libdrivers__console.a  zephyr/drivers/gpio/libdrivers__gpio.a  zephyr/drivers/i2c/libdrivers__i2c.a  zephyr/drivers/serial/libdrivers__serial.a  zephyr/drivers/timer/libdrivers__timer.a  modules/nrf/lib/fatal_error/lib..__nrf__lib__fatal_error.a  modules/nrf/drivers/hw_cc310/lib..__nrf__drivers__hw_cc310.a  modules/hal_nordic/nrfx/libmodules__hal_nordic__nrfx.a  -Wl,--no-whole-archive  zephyr/kernel/libkernel.a  zephyr/CMakeFiles/offsets.dir/./arch/arm/core/offsets/offsets.c.obj  -L"c:/users/mohit/nrf/v1.9.1/toolchain/opt/bin/../lib/gcc/arm-none-eabi/9.2.1/thumb/v8-m.main/nofp"  -LC:/Users/mohit/nrf/v1.9.1/Nordic_Acadmey/bsec/build/zephyr  -lgcc  zephyr/arch/common/libisr_tables.a  C:/Users/mohit/nrf/v1.9.1/nrfxlib/crypto/nrf_cc310_platform/lib/cortex-m33/soft-float/no-interrupts/libnrf_cc310_platform_0.9.13.a  -no-pie  -mcpu=cortex-m33  -mthumb  -mabi=aapcs  -mfp16-format=ieee  -Wl,--gc-sections  -Wl,--build-id=none  -Wl,--sort-common=descending  -Wl,--sort-section=alignment  -Wl,-u,_OffsetAbsSyms  -Wl,-u,_ConfigAbsSyms  -nostdlib  -static  -Wl,-X  -Wl,-N  -Wl,--orphan-handling=warn && cmd.exe /C "cd /D C:\Users\mohit\nrf\v1.9.1\Nordic_Acadmey\bsec\build\zephyr && C:\Users\mohit\nrf\v1.9.1\toolchain\opt\bin\cmake.exe -E echo ""
    c:/users/mohit/nrf/v1.9.1/toolchain/opt/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: app/libapp.a(bsec_integration.c.obj): in function `bme680_bsec_update_subscription':
    C:\Users\mohit\nrf\v1.9.1\Nordic_Acadmey\bsec\src\bsec_integration.c:140: undefined reference to `bsec_update_subscription'
    c:/users/mohit/nrf/v1.9.1/toolchain/opt/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: app/libapp.a(bsec_integration.c.obj): in function `bme680_bsec_process_data':
    C:\Users\mohit\nrf\v1.9.1\Nordic_Acadmey\bsec\src\bsec_integration.c:417: undefined reference to `bsec_do_steps'
    c:/users/mohit/nrf/v1.9.1/toolchain/opt/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: app/libapp.a(bsec_integration.c.obj): in function `bsec_iot_init':
    C:\Users\mohit\nrf\v1.9.1\Nordic_Acadmey\bsec\src\bsec_integration.c:186: undefined reference to `bsec_init'
    c:/users/mohit/nrf/v1.9.1/toolchain/opt/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: C:\Users\mohit\nrf\v1.9.1\Nordic_Acadmey\bsec\src\bsec_integration.c:207: undefined reference to `bsec_set_state'
    c:/users/mohit/nrf/v1.9.1/toolchain/opt/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: C:\Users\mohit\nrf\v1.9.1\Nordic_Acadmey\bsec\src\bsec_integration.c:196: undefined reference to `bsec_set_configuration'
    c:/users/mohit/nrf/v1.9.1/toolchain/opt/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: app/libapp.a(bsec_integration.c.obj): in function `bsec_iot_loop':
    C:\Users\mohit\nrf\v1.9.1\Nordic_Acadmey\bsec\src\bsec_integration.c:539: undefined reference to `bsec_get_state'
    c:/users/mohit/nrf/v1.9.1/toolchain/opt/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: C:\Users\mohit\nrf\v1.9.1\Nordic_Acadmey\bsec\src\bsec_integration.c:521: undefined reference to `bsec_sensor_control'
    collect2.exe: error: ld returned 1 exit status
    ninja: build stopped: subcommand failed.
    FATAL ERROR: command exited with status 1: 'c:\Users\mohit\nrf\v1.9.1\toolchain\opt\bin\cmake.EXE' --build 'c:\Users\mohit\nrf\v1.9.1\Nordic_Acadmey\bsec\build'
    The terminal process terminated with exit code: 1.
    
    Terminal will be reused by tasks, press any key to close it.

  • My main.c code

    #include <zephyr.h>
    #include <sys/printk.h>
    
    #include "bsec_integration.h"
    
    /**********************************************************************************************************************/
    /* functions */
    /**********************************************************************************************************************/
    
    /*!
     * @brief           Write operation in either I2C or SPI
     *
     * param[in]        dev_addr        I2C or SPI device address
     * param[in]        reg_addr        register address
     * param[in]        reg_data_ptr    pointer to the data to be written
     * param[in]        data_len        number of bytes to be written
     *
     * @return          result of the bus communication function
     */
    int8_t bus_write(uint8_t dev_addr, uint8_t reg_addr, uint8_t *reg_data_ptr, uint16_t data_len)
    {
        // ...
        // Please insert system specific function to write to the bus where BME680 is connected
        // ...
        return 0;
    }
    
    /*!
     * @brief           Read operation in either I2C or SPI
     *
     * param[in]        dev_addr        I2C or SPI device address
     * param[in]        reg_addr        register address
     * param[out]       reg_data_ptr    pointer to the memory to be used to store the read data
     * param[in]        data_len        number of bytes to be read
     *
     * @return          result of the bus communication function
     */
    int8_t bus_read(uint8_t dev_addr, uint8_t reg_addr, uint8_t *reg_data_ptr, uint16_t data_len)
    {
        // ...
        // Please insert system specific function to read from bus where BME680 is connected
        // ...
        return 0;
    }
    
    /*!
     * @brief           System specific implementation of sleep function
     *
     * @param[in]       t_ms    time in milliseconds
     *
     * @return          none
     */
    void sleep(uint32_t t_ms)
    {
        // ...
        // Please insert system specific function sleep or delay for t_ms milliseconds
        // ...
    }
    
    /*!
     * @brief           Capture the system time in microseconds
     *
     * @return          system_current_time    current system timestamp in microseconds
     */
    int64_t get_timestamp_us()
    {
        int64_t system_current_time = 0;
        // ...
        // Please insert system specific function to retrieve a timestamp (in microseconds)
        // ...
        return system_current_time;
    }
    
    /*!
     * @brief           Handling of the ready outputs
     *
     * @param[in]       timestamp       time in nanoseconds
     * @param[in]       iaq             IAQ signal
     * @param[in]       iaq_accuracy    accuracy of IAQ signal
     * @param[in]       temperature     temperature signal
     * @param[in]       humidity        humidity signal
     * @param[in]       pressure        pressure signal
     * @param[in]       raw_temperature raw temperature signal
     * @param[in]       raw_humidity    raw humidity signal
     * @param[in]       gas             raw gas sensor signal
     * @param[in]       bsec_status     value returned by the bsec_do_steps() call
     *
     * @return          none
     */
    void output_ready(int64_t timestamp, float iaq, uint8_t iaq_accuracy, float temperature, float humidity,
         float pressure, float raw_temperature, float raw_humidity, float gas, bsec_library_return_t bsec_status,
         float static_iaq, float co2_equivalent, float breath_voc_equivalent)
    {
        // ...
        // Please insert system specific code to further process or display the BSEC outputs
        // ...
    }
    
    /*!
     * @brief           Load previous library state from non-volatile memory
     *
     * @param[in,out]   state_buffer    buffer to hold the loaded state string
     * @param[in]       n_buffer        size of the allocated state buffer
     *
     * @return          number of bytes copied to state_buffer
     */
    uint32_t state_load(uint8_t *state_buffer, uint32_t n_buffer)
    {
        // ...
        // Load a previous library state from non-volatile memory, if available.
        //
        // Return zero if loading was unsuccessful or no state was available, 
        // otherwise return length of loaded state string.
        // ...
        return 0;
    }
    
    /*!
     * @brief           Save library state to non-volatile memory
     *
     * @param[in]       state_buffer    buffer holding the state to be stored
     * @param[in]       length          length of the state string to be stored
     *
     * @return          none
     */
    void state_save(const uint8_t *state_buffer, uint32_t length)
    {
        // ...
        // Save the string some form of non-volatile memory, if possible.
        // ...
    }
     
    /*!
     * @brief           Load library config from non-volatile memory
     *
     * @param[in,out]   config_buffer    buffer to hold the loaded state string
     * @param[in]       n_buffer        size of the allocated state buffer
     *
     * @return          number of bytes copied to config_buffer
     */
    uint32_t config_load(uint8_t *config_buffer, uint32_t n_buffer)
    {
        // ...
        // Load a library config from non-volatile memory, if available.
        //
        // Return zero if loading was unsuccessful or no config was available, 
        // otherwise return length of loaded config string.
        // ...
        return 0;
    }
    
    /*!
     * @brief       Main function which configures BSEC library and then reads and processes the data from sensor based
     *              on timer ticks
     *
     * @return      result of the processing
     */
    int main()
    {
        k_msleep(1000);
        printk("programm statr \n\r");
        return_values_init ret;
         printk("initializes the BSEC library \n\r");
        /* Call to the function which initializes the BSEC library 
         * Switch on low-power mode and provide no temperature offset */
        ret = bsec_iot_init(BSEC_SAMPLE_RATE_LP, 0.0f, bus_write, bus_read, sleep, state_load, config_load);
        if (ret.bme680_status)
        {
            /* Could not intialize BME680 */
            printk("Could not intialize BME680 \n\r");
            return (int)ret.bme680_status;
      
        }
        else if (ret.bsec_status)
        {
            /* Could not intialize BSEC library */
           printk("Could not intialize BSEC library");
            return (int)ret.bsec_status;
        }
        
        /* Call to endless loop function which reads and processes data based on sensor settings */
        /* State is saved every 10.000 samples, which means every 10.000 * 3 secs = 500 minutes  */
        bsec_iot_loop(sleep, get_timestamp_us, output_ready, state_save, 10000);
        
        return 0;
    }

  • These are the lines from the compiler that is telling you what you need to look into:

    c:/users/mohit/nrf/v1.9.1/toolchain/opt/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: app/libapp.a(bsec_integration.c.obj): in function `bme680_bsec_update_subscription':
    C:\Users\mohit\nrf\v1.9.1\Nordic_Acadmey\bsec\src\bsec_integration.c:140: undefined reference to `bsec_update_subscription'
    c:/users/mohit/nrf/v1.9.1/toolchain/opt/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: app/libapp.a(bsec_integration.c.obj): in function `bme680_bsec_process_data':
    C:\Users\mohit\nrf\v1.9.1\Nordic_Acadmey\bsec\src\bsec_integration.c:417: undefined reference to `bsec_do_steps'
    c:/users/mohit/nrf/v1.9.1/toolchain/opt/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: app/libapp.a(bsec_integration.c.obj): in function `bsec_iot_init':
    C:\Users\mohit\nrf\v1.9.1\Nordic_Acadmey\bsec\src\bsec_integration.c:186: undefined reference to `bsec_init'
    c:/users/mohit/nrf/v1.9.1/toolchain/opt/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: C:\Users\mohit\nrf\v1.9.1\Nordic_Acadmey\bsec\src\bsec_integration.c:207: undefined reference to `bsec_set_state'
    c:/users/mohit/nrf/v1.9.1/toolchain/opt/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: C:\Users\mohit\nrf\v1.9.1\Nordic_Acadmey\bsec\src\bsec_integration.c:196: undefined reference to `bsec_set_configuration'
    c:/users/mohit/nrf/v1.9.1/toolchain/opt/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: app/libapp.a(bsec_integration.c.obj): in function `bsec_iot_loop':
    C:\Users\mohit\nrf\v1.9.1\Nordic_Acadmey\bsec\src\bsec_integration.c:539: undefined reference to `bsec_get_state'
    c:/users/mohit/nrf/v1.9.1/toolchain/opt/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: C:\Users\mohit\nrf\v1.9.1\Nordic_Acadmey\bsec\src\bsec_integration.c:521: undefined reference to `bsec_sensor_control'

    I am not familiar with the bosch sensor libraries, so I don't know these files in and out, but you should be able to figure this one out.

    In line 140 in bsec_integration.c you call bsec_update_subscription, but the compiler can't see where this is declared.

    The same applies to:

    bsec_integration.c line 417 with bsec_do_steps

    bsec_integration.c line 186 with bsec_init

    bsec_integration.c line 207 with bsec_set_state

    bsec_integration.c line 196 with bsec_set_configuration

    bsec_integration.c line 539 with bsec_get_state

    bsec_integration.c line 521 with bsec_sensor_control

    These all look quite similar, so solving one will either solve all, or at least show how to solve all, so let us look at the first one, on line 140 in bsec_integration.c.

    You are using a parameter/function called bsec_update_subscription. What is this? Is it a function or a parameter? And where is it defined? I see that you include bsec_integration.h from main.c. Do you include bsec_integration.h from bsec_integration.c as well?

    It may also be that the compiler is not looking in the src folder for header files (not sure if this is set by default). Try adding this last line to your CMakeLists.txt file:

    cmake_minimum_required(VERSION 3.20.0)
    find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
    project(hello_world)
    target_sources(app PRIVATE src/main.c)
    target_sources(app PRIVATE src/bsec_integration.c)
    target_sources(app PRIVATE src/bme680.c)
    zephyr_library_include_directories(src)

    Also, I noticed that you have some spaces (whitespace) after the lines "target_sources(app PRIVATE src/main.c)       "

    Try removing these. These files are a bit sensitive. The same applies to your prj.conf file if you are going to do changes there in the future.

    If I am going to be able to tell more exactly why it is failing, then I would need to see more from your project. At least bsec_integration.h and bsec_integration.c.

Related