This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Undefined Reference Build Error

Getting the following build error when trying to build a test program after adding my HDC2022 driver to Zephyr: 

user@MSOE-PF2CWB0L MINGW64 ~/Tecovan/dev_projects/ti_hdc_20x0_test
$ west build -b nrf5340dk_nrf5340_cpuappns && west flash
[0/1] Re-running CMake...
Including boilerplate (Zephyr base (cached)): C:/Users/user/ncs/v1.5.1/zephyr/cmake/app/boilerplate.cmake
-- Application: C:/Users/user/Tecovan/dev_projects/ti_hdc_20x0_test
-- Using NCS Toolchain 1.5.1 for building. (C:/Users/user/ncs/v1.5.1/toolchain/cmake)
-- Zephyr version: 2.4.99 (C:/Users/user/ncs/v1.5.1/zephyr)
-- Found west (found suitable version "0.9.0", minimum required is "0.7.1")
-- Board: nrf5340dk_nrf5340_cpuappns
-- Cache files will be written to: C:/Users/user/ncs/v1.5.1/zephyr/.cache
-- Found dtc: C:/Users/user/ncs/v1.5.1/toolchain/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6")
-- Found toolchain: gnuarmemb (C:/Users/user/ncs/v1.5.1/toolchain/opt)
-- Found BOARD.dts: C:/Users/user/ncs/v1.5.1/zephyr/boards/arm/nrf5340dk_nrf5340/nrf5340dk_nrf5340_cpuappns.dts
-- Found devicetree overlay: C:/Users/user/Tecovan/dev_projects/ti_hdc_20x0_test/nrf5340dk_nrf5340_cpuappns.overlay
-- Generated zephyr.dts: C:/Users/user/Tecovan/dev_projects/ti_hdc_20x0_test/build/zephyr/zephyr.dts
-- Generated devicetree_unfixed.h: C:/Users/user/Tecovan/dev_projects/ti_hdc_20x0_test/build/zephyr/include/generated/devicetree_unfixed.h
-- Generated device_extern.h: C:/Users/user/Tecovan/dev_projects/ti_hdc_20x0_test/build/zephyr/include/generated/device_extern.h
Parsing C:/Users/user/ncs/v1.5.1/zephyr/Kconfig
Loaded configuration 'C:/Users/user/ncs/v1.5.1/zephyr/boards/arm/nrf5340dk_nrf5340/nrf5340dk_nrf5340_cpuappns_defconfig'
Merged configuration 'C:/Users/user/Tecovan/dev_projects/ti_hdc_20x0_test/prj.conf'
No change to configuration in 'C:/Users/user/Tecovan/dev_projects/ti_hdc_20x0_test/build/zephyr/.config'
No change to Kconfig header in 'C:/Users/user/Tecovan/dev_projects/ti_hdc_20x0_test/build/zephyr/include/generated/autoconf.h'
Changed board to secure nrf5340dk_nrf5340_cpuapp (NOT NS)

=== child image spm -  begin ===
Including boilerplate (Zephyr base (cached)): C:/Users/user/ncs/v1.5.1/zephyr/cmake/app/boilerplate.cmake
-- Application: C:/Users/user/ncs/v1.5.1/nrf/samples/spm
-- Using NCS Toolchain 1.5.1 for building. (C:/Users/user/ncs/v1.5.1/toolchain/cmake)
-- Zephyr version: 2.4.99 (C:/Users/user/ncs/v1.5.1/zephyr)
-- Found west (found suitable version "0.9.0", minimum required is "0.7.1")
-- Board: nrf5340dk_nrf5340_cpuapp
-- Cache files will be written to: C:/Users/user/ncs/v1.5.1/zephyr/.cache
-- Found dtc: C:/Users/user/ncs/v1.5.1/toolchain/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6")
-- Found toolchain: gnuarmemb (C:/Users/user/ncs/v1.5.1/toolchain/opt)
-- Found BOARD.dts: C:/Users/user/ncs/v1.5.1/zephyr/boards/arm/nrf5340dk_nrf5340/nrf5340dk_nrf5340_cpuapp.dts
-- Generated zephyr.dts: C:/Users/user/Tecovan/dev_projects/ti_hdc_20x0_test/build/spm/zephyr/zephyr.dts
-- Generated devicetree_unfixed.h: C:/Users/user/Tecovan/dev_projects/ti_hdc_20x0_test/build/spm/zephyr/include/generated/devicetree_unfixed.h
-- Generated device_extern.h: C:/Users/user/Tecovan/dev_projects/ti_hdc_20x0_test/build/spm/zephyr/include/generated/device_extern.h
Parsing C:/Users/user/ncs/v1.5.1/zephyr/Kconfig
Loaded configuration 'C:/Users/user/Tecovan/dev_projects/ti_hdc_20x0_test/build/spm/zephyr/.config'
No change to configuration in 'C:/Users/user/Tecovan/dev_projects/ti_hdc_20x0_test/build/spm/zephyr/.config'
No change to Kconfig header in 'C:/Users/user/Tecovan/dev_projects/ti_hdc_20x0_test/build/spm/zephyr/include/generated/autoconf.h'
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/user/Tecovan/dev_projects/ti_hdc_20x0_test/build/spm
=== child image spm -  end ===

CMake Warning at C:/Users/user/ncs/v1.5.1/zephyr/CMakeLists.txt:1357 (message):
  __ASSERT() statements are globally ENABLED


-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/user/Tecovan/dev_projects/ti_hdc_20x0_test/build
[0/126] Performing build step for 'spm_subimage'
[1/111] Generating misc/generated/syscalls.json, misc/generated/struct_tags.json
[2/111] Building C object zephyr/CMakeFiles/offsets.dir/arch/arm/core/offsets/offsets.c.obj
[3/111] Generating include/generated/offsets.h
[4/111] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/isr_wrapper.S.obj
[5/111] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/swap_helper.S.obj
[6/111] Building C object zephyr/arch/common/CMakeFiles/isr_tables.dir/isr_tables.c.obj
[7/111] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/nmi.c.obj
[8/111] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/prep_c.c.obj
[9/111] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/fatal.c.obj
[10/111] Building C object zephyr/arch/common/CMakeFiles/arch__common.dir/sw_isr_common.c.obj
[11/111] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/swap.c.obj
[12/111] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/thread.c.obj
[13/111] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/irq_manage.c.obj
[14/111] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/exc_exit.S.obj
[15/111] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/reset.S.obj
[16/111] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/irq_init.c.obj
[17/111] Linking C static library zephyr\arch\common\libisr_tables.a
[18/111] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/scb.c.obj
[19/111] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/thread_abort.c.obj
[20/111] 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
[21/111] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/mpu/CMakeFiles/arch__arm__core__aarch32__cortex_m__mpu.dir/arm_core_mpu.c.obj
[22/111] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/tz/CMakeFiles/arch__arm__core__aarch32__cortex_m__tz.dir/arm_core_tz.c.obj
[23/111] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/abort.c.obj
[24/111] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/mpu/CMakeFiles/arch__arm__core__aarch32__cortex_m__mpu.dir/arm_mpu.c.obj
[25/111] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/fault.c.obj
[26/111] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/malloc.c.obj
[27/111] Linking C static library zephyr\arch\common\libarch__common.a
[28/111] Building C object zephyr/soc/arm/common/cortex_m/CMakeFiles/soc__arm__common__cortex_m.dir/arm_mpu_regions.c.obj
[29/111] Linking C static library zephyr\arch\arch\arm\core\aarch32\cortex_m\tz\libarch__arm__core__aarch32__cortex_m__tz.a
[30/111] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/exit.c.obj
[31/111] Linking C static library zephyr\arch\arch\arm\core\aarch32\cortex_m\cmse\libarch__arm__core__aarch32__cortex_m__cmse.a
[32/111] Building C object zephyr/lib/posix/CMakeFiles/lib__posix.dir/pthread_common.c.obj
[33/111] Building C object zephyr/lib/posix/CMakeFiles/lib__posix.dir/nanosleep.c.obj
[34/111] Linking C static library zephyr\arch\arch\arm\core\aarch32\cortex_m\mpu\libarch__arm__core__aarch32__cortex_m__mpu.a
[35/111] Linking C static library zephyr\arch\arch\arm\core\aarch32\cortex_m\libarch__arm__core__aarch32__cortex_m.a
[36/111] Linking C static library zephyr\soc\arm\common\cortex_m\libsoc__arm__common__cortex_m.a
[37/111] Linking C static library zephyr\lib\libc\minimal\liblib__libc__minimal.a
[38/111] Building C object modules/nrf/lib/fatal_error/CMakeFiles/..__nrf__lib__fatal_error.dir/fatal_error.c.obj
[39/111] Building C object modules/nrf/drivers/hw_cc310/CMakeFiles/..__nrf__drivers__hw_cc310.dir/hw_cc310.c.obj
[40/111] Linking C static library zephyr\lib\posix\liblib__posix.a
[41/111] Building C object modules/nrf/subsys/fw_info/CMakeFiles/..__nrf__subsys__fw_info.dir/fw_info.c.obj
[42/111] Building C object modules/hal_nordic/CMakeFiles/modules__hal_nordic.dir/C_/Users/user/ncs/v1.5.1/modules/hal/nordic/nrfx/drivers/src/nrfx_nvmc.c.obj
[43/111] Building C object zephyr/drivers/serial/CMakeFiles/drivers__serial.dir/uart_nrfx_uarte.c.obj
[44/111] Building C object modules/hal_nordic/CMakeFiles/modules__hal_nordic.dir/nrfx/nrfx_glue.c.obj
[45/111] Building C object modules/hal_nordic/CMakeFiles/modules__hal_nordic.dir/C_/Users/user/ncs/v1.5.1/modules/hal/nordic/nrfx/drivers/src/nrfx_dppi.c.obj
[46/111] Linking C static library modules\nrf\lib\fatal_error\lib..__nrf__lib__fatal_error.a
[47/111] Building C object modules/hal_nordic/CMakeFiles/modules__hal_nordic.dir/C_/Users/user/ncs/v1.5.1/modules/hal/nordic/nrfx/drivers/src/nrfx_clock.c.obj
[48/111] Linking C static library modules\nrf\drivers\hw_cc310\lib..__nrf__drivers__hw_cc310.a
[49/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/errno.c.obj
[50/111] Linking C static library modules\nrf\subsys\fw_info\lib..__nrf__subsys__fw_info.a
[51/111] Linking C static library zephyr\drivers\serial\libdrivers__serial.a
[52/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/idle.c.obj
[53/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/fatal.c.obj
[54/111] Linking C static library modules\hal_nordic\libmodules__hal_nordic.a
[55/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/init.c.obj
[56/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/device.c.obj
[57/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mutex.c.obj
[58/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/kheap.c.obj
[59/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mem_slab.c.obj
[60/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/msg_q.c.obj
[61/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/stack.c.obj
[62/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/pipes.c.obj
[63/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mailbox.c.obj
[64/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/system_work_q.c.obj
[65/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/thread.c.obj
[66/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sem.c.obj
[67/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/xip.c.obj
[68/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/thread_abort.c.obj
[69/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/queue.c.obj
[70/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/condvar.c.obj
[71/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/banner.c.obj
[72/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mempool.c.obj
[73/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sched.c.obj
[74/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/work_q.c.obj
[75/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/smp.c.obj
[76/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timer.c.obj
[77/111] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/notify.c.obj
[78/111] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timeout.c.obj
[79/111] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/printk.c.obj
[80/111] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/fdtable.c.obj
[81/111] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/sem.c.obj
[82/111] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/thread_entry.c.obj
[83/111] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/work_q.c.obj
[84/111] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/rb.c.obj
[85/111] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/onoff.c.obj
[86/111] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/validate_base_addresses.c.obj
[87/111] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/heap-validate.c.obj
[88/111] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/nrf53/power.c.obj
[89/111] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/heap.c.obj
[90/111] Linking C static library zephyr\kernel\libkernel.a
[91/111] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/nrf53/soc.c.obj
[92/111] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/power/policy/policy_residency.c.obj
[93/111] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/validate_enabled_instances.c.obj
[94/111] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/power/power.c.obj
[95/111] Building C object zephyr/CMakeFiles/zephyr.dir/drivers/console/uart_console.c.obj
[96/111] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/power/reboot.c.obj
[97/111] Building C object zephyr/CMakeFiles/zephyr.dir/C_/Users/user/ncs/v1.5.1/nrfxlib/crypto/nrf_cc312_platform/src/nrf_cc3xx_platform_mutex_zephyr.c.obj
[98/111] Building C object zephyr/CMakeFiles/zephyr.dir/drivers/timer/nrf_rtc_timer.c.obj
[99/111] Building C object zephyr/CMakeFiles/zephyr.dir/C_/Users/user/ncs/v1.5.1/nrfxlib/crypto/nrf_cc312_platform/src/nrf_cc3xx_platform_abort_zephyr.c.obj
[100/111] Generating linker.cmd
[101/111] Linking C static library zephyr\arch\arch\arm\core\aarch32\libarch__arm__core__aarch32.a
[102/111] Building C object zephyr/CMakeFiles/zephyr.dir/C_/Users/user/ncs/v1.5.1/nrf/subsys/spm/secure_services.c.obj
[103/111] Building C object zephyr/CMakeFiles/zephyr.dir/drivers/timer/sys_clock_init.c.obj
[104/111] Building C object zephyr/CMakeFiles/zephyr.dir/C_/Users/user/ncs/v1.5.1/nrf/subsys/spm/spm.c.obj
[105/111] Building C object zephyr/CMakeFiles/zephyr.dir/drivers/clock_control/clock_control_nrf.c.obj
[106/111] Linking C static library zephyr\libzephyr.a
[107/111] Linking C executable zephyr\zephyr_prebuilt.elf
Memory region         Used Size  Region Size  %age Used
           FLASH:         32 KB        32 KB    100.00%
            SRAM:        8688 B        32 KB     26.51%
        IDT_LIST:          56 B         2 KB      2.73%
[108/111] Generating linker_pass_final.cmd
[109/111] Generating isr_tables.c
[110/111] Building C object zephyr/CMakeFiles/zephyr_final.dir/isr_tables.c.obj
[111/111] Linking C executable zephyr\zephyr.elf
[1/126] Generating misc/generated/syscalls.json, misc/generated/struct_tags.json
[3/124] Building C object zephyr/CMakeFiles/offsets.dir/arch/arm/core/offsets/offsets.c.obj
[4/124] Generating include/generated/offsets.h
[5/124] Building C object zephyr/CMakeFiles/zephyr.dir/misc/generated/configs.c.obj
[6/124] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/timeutil.c.obj
[7/124] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/thread_entry.c.obj
[8/124] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/printk.c.obj
[9/124] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/work_q.c.obj
[10/124] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/sem.c.obj
[11/124] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/assert.c.obj
[12/124] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf_complete.c.obj
[13/124] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/heap.c.obj
[14/124] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/heap-validate.c.obj
[15/124] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/fdtable.c.obj
[16/124] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/notify.c.obj
[17/124] Building C object modules/nrf/lib/fatal_error/CMakeFiles/..__nrf__lib__fatal_error.dir/fatal_error.c.obj
[18/124] Building C object modules/nrf/subsys/fw_info/CMakeFiles/..__nrf__subsys__fw_info.dir/fw_info.c.obj
[19/124] Building C object modules/hal_nordic/CMakeFiles/modules__hal_nordic.dir/C_/Users/user/ncs/v1.5.1/modules/hal/nordic/nrfx/drivers/src/nrfx_dppi.c.obj
[20/124] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/rb.c.obj
[21/124] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/onoff.c.obj
[22/124] Building C object modules/hal_nordic/CMakeFiles/modules__hal_nordic.dir/C_/Users/user/ncs/v1.5.1/modules/hal/nordic/nrfx/drivers/src/nrfx_clock.c.obj
[23/124] Building C object modules/hal_nordic/CMakeFiles/modules__hal_nordic.dir/C_/Users/user/ncs/v1.5.1/modules/hal/nordic/nrfx/drivers/src/nrfx_nvmc.c.obj
[24/124] Building C object modules/hal_nordic/CMakeFiles/modules__hal_nordic.dir/nrfx/nrfx_glue.c.obj
[25/124] Linking C static library modules\nrf\lib\fatal_error\lib..__nrf__lib__fatal_error.a
[26/124] Linking C static library modules\nrf\subsys\fw_info\lib..__nrf__subsys__fw_info.a
[27/124] Building C object modules/hal_nordic/CMakeFiles/modules__hal_nordic.dir/C_/Users/user/ncs/v1.5.1/modules/hal/nordic/nrfx/drivers/src/nrfx_twi_twim.c.obj
[28/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/idle.c.obj
[29/124] Building C object modules/hal_nordic/CMakeFiles/modules__hal_nordic.dir/C_/Users/user/ncs/v1.5.1/modules/hal/nordic/nrfx/drivers/src/nrfx_gpiote.c.obj
[30/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/device.c.obj
[31/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/init.c.obj
[32/124] Building C object modules/hal_nordic/CMakeFiles/modules__hal_nordic.dir/C_/Users/user/ncs/v1.5.1/modules/hal/nordic/nrfx/drivers/src/nrfx_twim.c.obj
[33/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/errno.c.obj
[34/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/kheap.c.obj
[35/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/fatal.c.obj
[36/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mailbox.c.obj
[37/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mutex.c.obj
[38/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/msg_q.c.obj
[39/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/queue.c.obj
[40/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mem_slab.c.obj
[41/124] Linking C static library modules\hal_nordic\libmodules__hal_nordic.a
[42/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/thread_abort.c.obj
[43/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sem.c.obj
[44/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/pipes.c.obj
[45/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/system_work_q.c.obj
[46/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/thread.c.obj
[47/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/banner.c.obj
[48/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/smp.c.obj
[49/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/stack.c.obj
[50/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/condvar.c.obj
[51/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/xip.c.obj
[52/124] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/reset.S.obj
[53/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/work_q.c.obj
[54/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sched.c.obj
[55/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mempool.c.obj
[56/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timeout.c.obj
[57/124] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timer.c.obj
[58/124] Building C object CMakeFiles/app.dir/src/main.c.obj
../src/main.c: In function 'main':
../src/main.c:29:3: warning: implicit declaration of function 'hdc20x0_sample_fetch' [-Wimplicit-function-declaration]
   29 |   hdc20x0_sample_fetch(dev, SENSOR_CHAN_ALL);
      |   ^~~~~~~~~~~~~~~~~~~~
../src/main.c:30:3: warning: implicit declaration of function 'hdc20x0_channel_get' [-Wimplicit-function-declaration]
   30 |   hdc20x0_channel_get(dev, SENSOR_CHAN_AMBIENT_TEMP, &temp);
      |   ^~~~~~~~~~~~~~~~~~~
[59/124] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/nrf53/soc.c.obj
[60/124] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/power/reboot.c.obj
[61/124] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/fault.c.obj
[62/124] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/validate_base_addresses.c.obj
[63/124] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/validate_enabled_instances.c.obj
[64/124] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/nrf53/power.c.obj
[65/124] Linking C static library app\libapp.a
[66/124] Building C object zephyr/CMakeFiles/zephyr.dir/C_/Users/user/ncs/v1.5.1/nrf/subsys/nonsecure/secure_services_ns.c.obj
[67/124] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/power/power.c.obj
[68/124] Linking C static library zephyr\kernel\libkernel.a
[69/124] Generating linker.cmd
[70/124] Building C object zephyr/CMakeFiles/zephyr.dir/drivers/console/uart_console.c.obj
[71/124] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/power/policy/policy_residency.c.obj
[72/124] Building C object zephyr/CMakeFiles/zephyr.dir/drivers/timer/sys_clock_init.c.obj
[73/124] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/irq_manage.c.obj
[74/124] Building C object zephyr/arch/common/CMakeFiles/isr_tables.dir/isr_tables.c.obj
[75/124] Building C object zephyr/CMakeFiles/zephyr.dir/drivers/clock_control/clock_control_nrf.c.obj
[76/124] Building C object zephyr/arch/common/CMakeFiles/arch__common.dir/sw_isr_common.c.obj
[77/124] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/swap_helper.S.obj
[78/124] Building C object zephyr/CMakeFiles/zephyr_prebuilt.dir/misc/empty_file.c.obj
[79/124] Building C object zephyr/CMakeFiles/zephyr.dir/drivers/timer/nrf_rtc_timer.c.obj
[80/124] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/isr_wrapper.S.obj
[81/124] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/thread.c.obj
[82/124] Linking C static library zephyr\arch\common\libisr_tables.a
[83/124] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/swap.c.obj
[84/124] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/prep_c.c.obj
[85/124] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/nmi.c.obj
[86/124] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/exc_exit.S.obj
[87/124] Linking C static library zephyr\libzephyr.a
[88/124] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/fatal.c.obj
[89/124] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/thread_abort.c.obj
[90/124] Linking C static library zephyr\arch\common\libarch__common.a
[91/124] Building C object zephyr/drivers/sensor/hdc20x0/CMakeFiles/drivers__sensor__hdc20x0.dir/hdc20x0.c.obj
C:/Users/user/ncs/v1.5.1/zephyr/drivers/sensor/hdc20x0/hdc20x0.c:243:13: warning: Macro is deprecated
  243 |       &hdc20x0_api_funcs);
      |             ^~~~~~~~~~~~~~
[92/124] Building C object zephyr/drivers/serial/CMakeFiles/drivers__serial.dir/uart_nrfx_uarte.c.obj
[93/124] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/scb.c.obj
[94/124] Linking C static library zephyr\arch\arch\arm\core\aarch32\libarch__arm__core__aarch32.a
[95/124] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/irq_init.c.obj
[96/124] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/mpu/CMakeFiles/arch__arm__core__aarch32__cortex_m__mpu.dir/arm_core_mpu.c.obj
[97/124] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/abort.c.obj
[98/124] Linking C static library zephyr\drivers\sensor\hdc20x0\libdrivers__sensor__hdc20x0.a
[99/124] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/exit.c.obj
[100/124] 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
[101/124] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/mpu/CMakeFiles/arch__arm__core__aarch32__cortex_m__mpu.dir/arm_mpu.c.obj
[102/124] Linking C static library zephyr\drivers\serial\libdrivers__serial.a
[103/124] Building C object zephyr/lib/libc/minimal/CMakeFiles/lib__libc__minimal.dir/source/stdlib/malloc.c.obj
[104/124] Building C object zephyr/lib/posix/CMakeFiles/lib__posix.dir/pthread_common.c.obj
[105/124] Linking C static library zephyr\arch\arch\arm\core\aarch32\cortex_m\libarch__arm__core__aarch32__cortex_m.a
[106/124] Building C object zephyr/soc/arm/common/cortex_m/CMakeFiles/soc__arm__common__cortex_m.dir/arm_mpu_regions.c.obj
[107/124] Building C object zephyr/lib/posix/CMakeFiles/lib__posix.dir/nanosleep.c.obj
[108/124] Linking C static library zephyr\arch\arch\arm\core\aarch32\cortex_m\cmse\libarch__arm__core__aarch32__cortex_m__cmse.a
[109/124] Linking C static library zephyr\arch\arch\arm\core\aarch32\cortex_m\mpu\libarch__arm__core__aarch32__cortex_m__mpu.a
[110/124] Building C object zephyr/drivers/i2c/CMakeFiles/drivers__i2c.dir/i2c_common.c.obj
[111/124] Linking C static library zephyr\lib\libc\minimal\liblib__libc__minimal.a
[112/124] Linking C static library zephyr\lib\posix\liblib__posix.a
[113/124] Linking C static library zephyr\soc\arm\common\cortex_m\libsoc__arm__common__cortex_m.a
[114/124] Building C object zephyr/drivers/i2c/CMakeFiles/drivers__i2c.dir/i2c_nrfx_twim.c.obj
[115/124] Building C object zephyr/drivers/gpio/CMakeFiles/drivers__gpio.dir/gpio_nrfx.c.obj
[116/124] Linking C static library zephyr\drivers\i2c\libdrivers__i2c.a
[117/124] Linking C static library zephyr\drivers\gpio\libdrivers__gpio.a
[118/124] Linking C executable zephyr\zephyr_prebuilt.elf
FAILED: zephyr/zephyr_prebuilt.elf
cmd.exe /C "cd . && C:\Users\user\ncs\v1.5.1\toolchain\opt\bin\arm-none-eabi-gcc.exe    zephyr/CMakeFiles/zephyr_prebuilt.dir/misc/empty_file.c.obj  -o zephyr\zephyr_prebuilt.elf  -Wl,-T  zephyr/linker.cmd  -Wl,-Map=C:/Users/user/Tecovan/dev_projects/ti_hdc_20x0_test/build/zephyr/zephyr_prebuilt.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/mpu/libarch__arm__core__aarch32__cortex_m__mpu.a  zephyr/arch/arch/arm/core/aarch32/cortex_m/cmse/libarch__arm__core__aarch32__cortex_m__cmse.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/drivers/gpio/libdrivers__gpio.a  zephyr/drivers/i2c/libdrivers__i2c.a  zephyr/drivers/sensor/hdc20x0/libdrivers__sensor__hdc20x0.a  zephyr/drivers/serial/libdrivers__serial.a  modules/nrf/lib/fatal_error/lib..__nrf__lib__fatal_error.a  modules/nrf/subsys/fw_info/lib..__nrf__subsys__fw_info.a  modules/hal_nordic/libmodules__hal_nordic.a  -Wl,--no-whole-archive  zephyr/kernel/libkernel.a  zephyr/CMakeFiles/offsets.dir/./arch/arm/core/offsets/offsets.c.obj  -L"c:/users/user/ncs/v1.5.1/toolchain/opt/bin/../lib/gcc/arm-none-eabi/9.2.1/thumb/v8-m.main/nofp"  -LC:/Users/user/Tecovan/dev_projects/ti_hdc_20x0_test/build/zephyr  -lgcc  -Wl,--print-memory-usage  zephyr/arch/common/libisr_tables.a  -mcpu=cortex-m33  -mthumb  -mabi=aapcs  -Wl,--gc-sections  -Wl,--build-id=none  -Wl,--sort-common=descending  -Wl,--sort-section=alignment  -Wl,-u,_OffsetAbsSyms  -Wl,-u,_ConfigAbsSyms  -nostdlib  -static  -no-pie  -Wl,-X  -Wl,-N  -Wl,--orphan-handling=warn  spm/libspmsecureentries.a && cd ."
Memory region         Used Size  Region Size  %age Used
           FLASH:       35536 B       992 KB      3.50%
            SRAM:        4448 B       480 KB      0.90%
        IDT_LIST:          88 B         2 KB      4.30c:/users/user/ncs/v1.5.1/toolchain/opt/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: app/libapp.a(main.c.obj): in function `main':
C:\Users\user\Tecovan\dev_projects\ti_hdc_20x0_test\build/../src/main.c:29: undefined reference to `hdc20x0_sample_fetch'
c:/users/user/ncs/v1.5.1/toolchain/opt/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: C:\Users\user\Tecovan\dev_projects\ti_hdc_20x0_test\build/../src/main.c:30: undefined reference to `hdc20x0_channel_get'
c:/users/user/ncs/v1.5.1/toolchain/opt/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: C:\Users\user\Tecovan\dev_projects\ti_hdc_20x0_test\build/../src/main.c:31: undefined reference to `hdc20x0_channel_get'
collect2.exe: error: ld returned 1 exit status
%
ninja: build stopped: subcommand failed.
FATAL ERROR: command exited with status 1: 'C:\Users\user\ncs\v1.5.1\toolchain\opt\bin\cmake.EXE' --build 'C:\Users\user\Tecovan\dev_projects\ti_hdc_20x0_test\build'



I think this simply has to do with a linker issue I'm missing or not understanding. I'll post all my project files in hopes someone can see something I'm not.

Here is the driver I am working with and the associated files:
sensor//hdc20x0/hdc20x0.c (driver): 
/* Driver for TI hdc20x0
 * hdc20x0 ±2% digital humidity sensor with temperature sensor */

/*
 * Copyright (c) 2020 seeed.cc
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#define DT_DRV_COMPAT ti_hdc20x0

#include <kernel.h>
#include <drivers/sensor.h>
#include <init.h>
#include <sys/byteorder.h>
#include <sys/util.h>

#include <drivers/i2c.h>
#include <logging/log.h>

LOG_MODULE_REGISTER(hdc20x0, CONFIG_SENSOR_LOG_LEVEL);

/* Register addresses as in the datasheet */
#define hdc20x0_REG_TEMP_LOW 0x00
#define hdc20x0_REG_TEMP_HIGH 0x01
#define hdc20x0_REG_HUMIDITY_LOW 0x02
#define hdc20x0_REG_HUMIDITY_HIGH 0x03
#define hdc20x0_REG_INTERRUPT_DRDY 0x04
#define hdc20x0_REG_TEMP_MAX 0x05
#define hdc20x0_REG_HUMIDITY_MAX 0x06
#define hdc20x0_REG_INTERRUPT_EN 0x07
#define hdc20x0_REG_TEMP_OFFSET_ADJ 0x08
#define hdc20x0_REG_HUMIDITY_OFFSET_ADJ 0x09
#define hdc20x0_REG_TEMP_THR_L 0x0a
#define hdc20x0_REG_TEMP_THR_H 0x0b
#define hdc20x0_REG_RH_THR_L 0x0c
#define hdc20x0_REG_RH_THR_H 0x0d
#define hdc20x0_REG_RESET_DRDY_INT_CONF 0x0e
#define hdc20x0_REG_CONF 0x0f

#define hdc20x0_MEAS_CONF GENMASK(2, 1)
#define hdc20x0_MEAS_TRIG BIT(0)
#define hdc20x0_HEATER_EN BIT(3)
#define hdc20x0_AMM GENMASK(6, 4)

struct hdc20x0_data {
	const struct device *i2c_master;

	/* Temperature Values */
	int32_t temp_val1;
	int32_t temp_val2;
	/* Humidity Values*/
	int32_t humidity_val1;
	int32_t humidity_val2;
};

struct hdc20x0_cfg {
	char *i2c_bus_name;
	uint16_t i2c_addr;
};

static int hdc20x0_read_temperature(struct hdc20x0_data *data,
				    const struct hdc20x0_cfg *config)
{
	uint8_t val;
	float celsius;

	if (i2c_reg_read_byte(data->i2c_master, config->i2c_addr,
			      hdc20x0_REG_TEMP_LOW, &val)) {
		LOG_ERR("Failed to get temperature LSB ");
		return -EIO;
	}
	data->temp_val1 = val;
	if (i2c_reg_read_byte(data->i2c_master, config->i2c_addr,
			      hdc20x0_REG_TEMP_HIGH, &val)) {
		LOG_ERR("Failed to get temperature MSB ");
		return -EIO;
	}
	data->temp_val2 = val;
	LOG_DBG("temperature,  val1:0x%x, val2:0x%x", data->temp_val1,
		data->temp_val2);

	/*https://www.ti.com/lit/ds/symlink/hdc20x0.pdf*/
	/*7.6.2 Address 0x01 Temperature MSB*/
	celsius = ((data->temp_val2 * 256 + data->temp_val1) / 65536.0) * 165 -
		  40;
	data->temp_val1 = (int)celsius;
	data->temp_val2 = (celsius - data->temp_val1) * 1000000LL;
	return 0;
}

static int hdc20x0_read_humidity(struct hdc20x0_data *data,
				 const struct hdc20x0_cfg *config)
{
	uint8_t val;
	float rh;

	if (i2c_reg_read_byte(data->i2c_master, config->i2c_addr,
			      hdc20x0_REG_HUMIDITY_LOW, &val)) {
		LOG_ERR("Failed to get humidity LSB ");
		return -EIO;
	}
	data->humidity_val1 = val;
	if (i2c_reg_read_byte(data->i2c_master, config->i2c_addr,
			      hdc20x0_REG_HUMIDITY_HIGH, &val)) {
		LOG_ERR("Failed to get humidity MSB ");
		return -EIO;
	}
	data->humidity_val2 = val;
	LOG_DBG("humidity , val1:0x%x, val2:0x%x", data->humidity_val1,
		data->humidity_val2);
	/*https://www.ti.com/lit/ds/symlink/hdc20x0.pdf*/
	/*7.6.4 Address 0x03 Humidity MSB*/
	rh = ((data->humidity_val2 * 256 + data->humidity_val1) / 65536.0) *
	     100;

	data->humidity_val1 = (int)rh;
	data->humidity_val2 = (rh - data->humidity_val1) * 1000000LL;
	return 0;
}

static int hdc20x0_read_all(struct hdc20x0_data *data,
			    const struct hdc20x0_cfg *config)
{
	if (hdc20x0_read_temperature(data, config)) {
		return -EIO;
	}
	if (hdc20x0_read_humidity(data, config)) {
		return -EIO;
	}
	return 0;
}

static int hdc20x0_init(const struct device *dev)
{
	struct hdc20x0_data *data = dev->data;
	const struct hdc20x0_cfg *config = dev->config;
	int ret;

	data->i2c_master = device_get_binding(config->i2c_bus_name);
	if (data->i2c_master == NULL) {
		LOG_ERR("Failed to get I2C device");
		return -EINVAL;
	}

	LOG_DBG("Init hdc20x0");

	/* Enable Automatic Measurement Mode at 5Hz */
	if (i2c_reg_write_byte(data->i2c_master, config->i2c_addr,
			       hdc20x0_REG_RESET_DRDY_INT_CONF, hdc20x0_AMM)) {
		return -EIO;
	}
	/*
	 * We enable both temp and humidity measurement.
	 * However the measurement won't start even in AMM until triggered.
	 */
	ret = i2c_reg_write_byte(data->i2c_master, config->i2c_addr,
				 hdc20x0_REG_CONF, hdc20x0_MEAS_TRIG);
	if (ret) {
		LOG_ERR("Unable to set up measurement\n");
		return ret;
	}

	LOG_DBG("Init OK");
	return 0;
}

static int hdc20x0_sample_fetch(const struct device *dev,
				enum sensor_channel chan)
{
	struct hdc20x0_data *data = dev->data;
	const struct hdc20x0_cfg *config = dev->config;

	LOG_DBG("Fetching sample from hdc20x0");

	switch (chan) {
	case SENSOR_CHAN_AMBIENT_TEMP:
		if (hdc20x0_read_temperature(data, config)) {
			LOG_ERR("Failed to measure temperature");
			return -EIO;
		}
		break;
	case SENSOR_CHAN_HUMIDITY:
		if (hdc20x0_read_humidity(data, config)) {
			LOG_ERR("Failed to measure humidity");
			return -EIO;
		}
		break;
	case SENSOR_CHAN_ALL:
		if (hdc20x0_read_all(data, config)) {
			LOG_ERR("Failed to measure temperature and humidity");
			return -EIO;
		}
		break;
	default:
		return -EINVAL;
	}

	return 0;
}

static int hdc20x0_channel_get(const struct device *dev,
			       enum sensor_channel chan,
			       struct sensor_value *val)
{
	struct hdc20x0_data *data = dev->data;

	switch (chan) {
	case SENSOR_CHAN_AMBIENT_TEMP:
		val->val1 = data->temp_val1;
		val->val2 = data->temp_val2;
		break;
	case SENSOR_CHAN_HUMIDITY:
		val->val1 = data->humidity_val1;
		val->val2 = data->humidity_val2;
		break;
	case SENSOR_CHAN_ALL:
		val->val1 = data->temp_val1;
		val->val2 = data->temp_val2;
		(val + 1)->val1 = data->humidity_val1;
		(val + 1)->val2 = data->humidity_val2;
		break;
	default:
		return -EINVAL;
	}

	return 0;
}

static const struct sensor_driver_api hdc20x0_api_funcs = {
	.sample_fetch = hdc20x0_sample_fetch,
	.channel_get = hdc20x0_channel_get,
};

static struct hdc20x0_data hdc20x0_data_0;
static const struct hdc20x0_cfg hdc20x0_cfg_0 = { .i2c_bus_name =
							  DT_INST_BUS_LABEL(0),
						  .i2c_addr =
							  DT_INST_REG_ADDR(0) };

DEVICE_AND_API_INIT(hdc20x0, DT_INST_LABEL(0), hdc20x0_init, &hdc20x0_data_0,
		    &hdc20x0_cfg_0, POST_KERNEL, CONFIG_SENSOR_INIT_PRIORITY,
		    &hdc20x0_api_funcs);

sensor/hdc20x0 Kconfig: 

# HDC20x0 ±2% ultra-low-power, digital humidity sensor with
# temperature sensor in WCSP

# Copyright (c) 2020 seeed.cc
# SPDX-License-Identifier: Apache-2.0

config HDC20X0
	bool "HDC20X0 sensor"
	depends on I2C
	help
	  Enable driver for HDC2010/HDC2080 I2C-based digital humidity sensor
	  with temperature sensor.

sensor/hdc20x0 CMakeLists.txt: 

# SPDX-License-Identifier: Apache-2.0

zephyr_library()

zephyr_library_sources_ifdef(CONFIG_HDC20X0 hdc20x0.c)

zephyr/drivers/sensor Kconfig: 

# Sensor configuration options

# Copyright (c) 2016 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

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

if SENSOR

module = SENSOR
module-str = sensor
source "subsys/logging/Kconfig.template.log_config"

config SENSOR_INIT_PRIORITY
	int "Sensor init priority"
	default 90
	help
	  Sensor initialization priority.

config SENSOR_SHELL
	bool "Enable sensor shell"
	depends on SHELL
	select CBPRINTF_FP_SUPPORT
	default y
	help
	  This shell provides access to basic sensor data.

config SENSOR_SHELL_BATTERY
	bool "Enable sensor shell 'battery' command"
	depends on SHELL
	help
	  This enables the 'battery' command which reports charging information
	  in a convenient format. It makes use of a fuel gauge to read its
	  information.

comment "Device Drivers"

source "drivers/sensor/adt7420/Kconfig"

source "drivers/sensor/adxl345/Kconfig"

source "drivers/sensor/adxl362/Kconfig"

source "drivers/sensor/adxl372/Kconfig"

source "drivers/sensor/ak8975/Kconfig"

source "drivers/sensor/amg88xx/Kconfig"

source "drivers/sensor/ams_iAQcore/Kconfig"

source "drivers/sensor/apds9960/Kconfig"

source "drivers/sensor/bma280/Kconfig"

source "drivers/sensor/bmc150_magn/Kconfig"

source "drivers/sensor/bme280/Kconfig"

source "drivers/sensor/bme680/Kconfig"

source "drivers/sensor/bmg160/Kconfig"

source "drivers/sensor/bmi160/Kconfig"

source "drivers/sensor/bmm150/Kconfig"

source "drivers/sensor/bq274xx/Kconfig"

source "drivers/sensor/ccs811/Kconfig"

source "drivers/sensor/dht/Kconfig"

source "drivers/sensor/dps310/Kconfig"

source "drivers/sensor/ens210/Kconfig"

source "drivers/sensor/fxas21002/Kconfig"

source "drivers/sensor/fxos8700/Kconfig"

source "drivers/sensor/grove/Kconfig"

source "drivers/sensor/ti_hdc/Kconfig"

source "drivers/sensor/hdc20x0/Kconfig"

source "drivers/sensor/hmc5883l/Kconfig"

source "drivers/sensor/hp206c/Kconfig"

source "drivers/sensor/hts221/Kconfig"

source "drivers/sensor/icm42605/Kconfig"

source "drivers/sensor/iis2dh/Kconfig"

source "drivers/sensor/iis2dlpc/Kconfig"

source "drivers/sensor/iis2iclx/Kconfig"

source "drivers/sensor/iis2mdc/Kconfig"

source "drivers/sensor/iis3dhhc/Kconfig"

source "drivers/sensor/isl29035/Kconfig"

source "drivers/sensor/ism330dhcx/Kconfig"

source "drivers/sensor/lis2dh/Kconfig"

source "drivers/sensor/lis2ds12/Kconfig"

source "drivers/sensor/lis2dw12/Kconfig"

source "drivers/sensor/lis2mdl/Kconfig"

source "drivers/sensor/lis3mdl/Kconfig"

source "drivers/sensor/lps22hb/Kconfig"

source "drivers/sensor/lps22hh/Kconfig"

source "drivers/sensor/lps25hb/Kconfig"

source "drivers/sensor/lsm303dlhc_magn/Kconfig"

source "drivers/sensor/lsm6ds0/Kconfig"

source "drivers/sensor/lsm6dsl/Kconfig"

source "drivers/sensor/lsm6dso/Kconfig"

source "drivers/sensor/lsm9ds0_gyro/Kconfig"

source "drivers/sensor/lsm9ds0_mfd/Kconfig"

source "drivers/sensor/max17055/Kconfig"

source "drivers/sensor/max30101/Kconfig"

source "drivers/sensor/max44009/Kconfig"

source "drivers/sensor/mchp_tach_xec/Kconfig"

source "drivers/sensor/mcp9808/Kconfig"

source "drivers/sensor/mpr/Kconfig"

source "drivers/sensor/mpu6050/Kconfig"

source "drivers/sensor/ms5837/Kconfig"

source "drivers/sensor/ms5607/Kconfig"

source "drivers/sensor/nrf5/Kconfig"

source "drivers/sensor/opt3001/Kconfig"

source "drivers/sensor/pms7003/Kconfig"

source "drivers/sensor/qdec_nrfx/Kconfig"

source "drivers/sensor/sht3xd/Kconfig"

source "drivers/sensor/si7006/Kconfig"

source "drivers/sensor/si7055/Kconfig"

source "drivers/sensor/si7060/Kconfig"

source "drivers/sensor/sm351lt/Kconfig"

source "drivers/sensor/stts751/Kconfig"

source "drivers/sensor/sx9500/Kconfig"

source "drivers/sensor/th02/Kconfig"

source "drivers/sensor/tmp007/Kconfig"

source "drivers/sensor/tmp112/Kconfig"

source "drivers/sensor/tmp116/Kconfig"

source "drivers/sensor/vcnl4040/Kconfig"

source "drivers/sensor/vl53l0x/Kconfig"

source "drivers/sensor/nxp_kinetis_temp/Kconfig"

source "drivers/sensor/wsen_itds/Kconfig"

source "drivers/sensor/mcux_acmp/Kconfig"

endif # SENSOR

zephyr/drivers/sensor CMakeLists.txt: 

# SPDX-License-Identifier: Apache-2.0

add_subdirectory_ifdef(CONFIG_ADT7420		adt7420)
add_subdirectory_ifdef(CONFIG_ADXL345		adxl345)
add_subdirectory_ifdef(CONFIG_ADXL362		adxl362)
add_subdirectory_ifdef(CONFIG_ADXL372		adxl372)
add_subdirectory_ifdef(CONFIG_AK8975		ak8975)
add_subdirectory_ifdef(CONFIG_AMG88XX		amg88xx)
add_subdirectory_ifdef(CONFIG_AMS_IAQ_CORE	ams_iAQcore)
add_subdirectory_ifdef(CONFIG_APDS9960		apds9960)
add_subdirectory_ifdef(CONFIG_BMA280		bma280)
add_subdirectory_ifdef(CONFIG_BMC150_MAGN	bmc150_magn)
add_subdirectory_ifdef(CONFIG_BME280		bme280)
add_subdirectory_ifdef(CONFIG_BME680		bme680)
add_subdirectory_ifdef(CONFIG_BMG160		bmg160)
add_subdirectory_ifdef(CONFIG_BMI160		bmi160)
add_subdirectory_ifdef(CONFIG_BMM150		bmm150)
add_subdirectory_ifdef(CONFIG_BQ274XX		bq274xx)
add_subdirectory_ifdef(CONFIG_CCS811		ccs811)
add_subdirectory_ifdef(CONFIG_DHT			dht)
add_subdirectory_ifdef(CONFIG_DPS310		dps310)
add_subdirectory_ifdef(CONFIG_ENS210		ens210)
add_subdirectory_ifdef(CONFIG_FXAS21002		fxas21002)
add_subdirectory_ifdef(CONFIG_FXOS8700		fxos8700)
add_subdirectory(grove)
add_subdirectory_ifdef(CONFIG_TI_HDC		ti_hdc)
add_subdirectory_ifdef(CONFIG_HMC5883L		hmc5883l)
add_subdirectory_ifdef(CONFIG_HP206C		hp206c)
add_subdirectory_ifdef(CONFIG_HTS221		hts221)
add_subdirectory_ifdef(CONFIG_IIS2DH		iis2dh)
add_subdirectory_ifdef(CONFIG_IIS2DLPC		iis2dlpc)
add_subdirectory_ifdef(CONFIG_IIS2ICLX		iis2iclx)
add_subdirectory_ifdef(CONFIG_IIS2MDC		iis2mdc)
add_subdirectory_ifdef(CONFIG_IIS3DHHC		iis3dhhc)
add_subdirectory_ifdef(CONFIG_ISL29035		isl29035)
add_subdirectory_ifdef(CONFIG_ISM330DHCX	ism330dhcx)
add_subdirectory_ifdef(CONFIG_LIS2DH		lis2dh)
add_subdirectory_ifdef(CONFIG_LIS2DS12		lis2ds12)
add_subdirectory_ifdef(CONFIG_LIS2DW12          lis2dw12)
add_subdirectory_ifdef(CONFIG_LIS2MDL		lis2mdl)
add_subdirectory_ifdef(CONFIG_LIS3MDL		lis3mdl)
add_subdirectory_ifdef(CONFIG_LPS22HB		lps22hb)
add_subdirectory_ifdef(CONFIG_LPS22HH		lps22hh)
add_subdirectory_ifdef(CONFIG_LPS25HB		lps25hb)
add_subdirectory_ifdef(CONFIG_LSM303DLHC_MAGN	lsm303dlhc_magn)
add_subdirectory_ifdef(CONFIG_LSM6DS0		lsm6ds0)
add_subdirectory_ifdef(CONFIG_LSM6DSL		lsm6dsl)
add_subdirectory_ifdef(CONFIG_LSM6DSO		lsm6dso)
add_subdirectory_ifdef(CONFIG_LSM9DS0_GYRO	lsm9ds0_gyro)
add_subdirectory_ifdef(CONFIG_LSM9DS0_MFD	lsm9ds0_mfd)
add_subdirectory_ifdef(CONFIG_MAX17055		max17055)
add_subdirectory_ifdef(CONFIG_MAX30101		max30101)
add_subdirectory_ifdef(CONFIG_MAX44009		max44009)
add_subdirectory_ifdef(CONFIG_MCP9808		mcp9808)
add_subdirectory_ifdef(CONFIG_MPR			mpr)
add_subdirectory_ifdef(CONFIG_MPU6050		mpu6050)
add_subdirectory_ifdef(CONFIG_MS5607		ms5607)
add_subdirectory_ifdef(CONFIG_MS5837		ms5837)
add_subdirectory_ifdef(CONFIG_OPT3001		opt3001)
add_subdirectory_ifdef(CONFIG_HDC20X0		hdc20x0)
add_subdirectory_ifdef(CONFIG_PMS7003		pms7003)
add_subdirectory_ifdef(CONFIG_QDEC_NRFX		qdec_nrfx)
add_subdirectory_ifdef(CONFIG_TEMP_NRF5		nrf5)
add_subdirectory_ifdef(CONFIG_SHT3XD		sht3xd)
add_subdirectory_ifdef(CONFIG_SI7006		si7006)
add_subdirectory_ifdef(CONFIG_SI7055		si7055)
add_subdirectory_ifdef(CONFIG_SI7060		si7060)
add_subdirectory_ifdef(CONFIG_SM351LT		sm351lt)
add_subdirectory_ifdef(CONFIG_STTS751		stts751)
add_subdirectory_ifdef(CONFIG_SX9500		sx9500)
add_subdirectory_ifdef(CONFIG_TH02		    th02)
add_subdirectory_ifdef(CONFIG_TMP007		tmp007)
add_subdirectory_ifdef(CONFIG_TMP112		tmp112)
add_subdirectory_ifdef(CONFIG_TMP116		tmp116)
add_subdirectory_ifdef(CONFIG_VCNL4040		vcnl4040)
add_subdirectory_ifdef(CONFIG_VL53L0X		vl53l0x)
add_subdirectory_ifdef(CONFIG_TEMP_KINETIS	nxp_kinetis_temp)
add_subdirectory_ifdef(CONFIG_TACH_XEC		mchp_tach_xec)
add_subdirectory_ifdef(CONFIG_ITDS		wsen_itds)
add_subdirectory_ifdef(CONFIG_MCUX_ACMP		mcux_acmp)

zephyr_sources_ifdef(CONFIG_USERSPACE sensor_handlers.c)
zephyr_sources_ifdef(CONFIG_SENSOR_SHELL sensor_shell.c)
zephyr_sources_ifdef(CONFIG_SENSOR_SHELL_BATTERY shell_battery.c)

zephyr/dts/bindings/sensors ti,hdc20x0.yaml: 

# Copyright (c) 2020, seeed.cc
# SPDX-License-Identifier: Apache-2.0

description: TI HDC20x0  ±2% ultra-low-power, digital humidity sensor with temperature sensor

compatible: "ti,hdc20x0"

include: i2c-device.yaml

 

Project Files:

main.c: 

/*
 * Copyright (c) 2019 Centaur Analytics
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr.h>
#include <device.h>
#include <drivers/sensor.h>
#include <sys/printk.h>
#include <sys/__assert.h>
#include <logging/log.h>
#include <drivers/gpio.h>

void main(void)
{
	printk("Running on %s!\n", CONFIG_ARCH);
	const struct device *dev = device_get_binding(DT_LABEL(DT_INST(0, ti_hdc20x0)));

	__ASSERT(dev != NULL, "Failed to get device binding");

	printk("Dev %p name %s is ready!\n", dev, dev->name);

	struct sensor_value temp, humidity;

	while (1) {
		/* take a sample */
		printk("Fetching...\n");
		hdc20x0_sample_fetch(dev, SENSOR_CHAN_ALL);
		hdc20x0_channel_get(dev, SENSOR_CHAN_AMBIENT_TEMP, &temp);
		hdc20x0_channel_get(dev, SENSOR_CHAN_HUMIDITY, &humidity);

		/* print the result */
		printk("Temp = %d.%06d C, RH = %d.%06d %%\n",
		       temp.val1, temp.val2, humidity.val1, humidity.val2);

		/* wait for the next sample */
		k_sleep(K_SECONDS(1));
	}
}

nrf5340dk_nrf5340_cpuappns.overlay: 

&i2c1 {
    compatible = "nordic,nrf-twim";
	status = "okay";
	sda-pin = < 30 >;
	scl-pin = < 31 >;
    clock-frequency = <I2C_BITRATE_STANDARD>;  
	
	ti_hdc20x0: hdc20x0@41 {
		compatible = "ti,hdc20x0";
		reg = <0x41>;
		label = "HDC2022";
	};
};

prj.conf: 

CONFIG_ASSERT=y 	# validation
CONFIG_I2C=y		# this is really I2C_0
# CONFIG_I2C_1=y 	# this is really I2C_1
CONFIG_I2C_NRFX=y
CONFIG_GPIO=y
CONFIG_SENSOR=y
# CONFIG_TI_HDC=y	# this is the old TI HDC driver
CONFIG_HDC20X0=y	# new TI HDC driver

CMakeLists.txt: 

# SPDX-License-Identifier: Apache-2.0

cmake_minimum_required(VERSION 3.13.1)

set(TEST_DTC_OVERLAY_FILE
  ${CMAKE_CURRENT_SOURCE_DIR}/nrf5340dk_nrf5340_cpuappns.overlay
)

set(PRJ_CONF_FILE
  prj.conf
  ${CMAKE_CURRENT_LIST_DIR}/prj.conf
)

find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(ti_hdc_20x0_test)

FILE(GLOB app_sources src/*.c)
target_sources(app PRIVATE ${app_sources})

Related