Failure of the BMA4xx driver to compile

This is NOT a runtime error it's a compile time error (application). Failing at stage [154/159] Linking C executable zephyr\zephyr_pre0.elf

Having started by following the "nRF Connect SDK hands-on, series" with Ali Aljaaani.  I got his examples working OK but when I try to replace one of the sensors with the BMA400, via the bma4xx driver I get a compilation error.

Ther only call to the driver is:

	if (!device_is_ready(dev)) {
		printk("\nError: Device \"%s\" is not ready; "
		       "check the driver initialization logs for errors.\n",
		       dev->name);
		return NULL;
	}

Overlay file:

bma400: bma400@14 {
//        compatible = "bosch,bma4xx";   // BMA4xx Driver fails 
        compatible = "bosch,bma280";	// BMA280 Driver compiles OK
        status = "okay";
        reg = < 0x14 >;
    };
};

If I point to the BMA280 driver it compiles correctly and produces the expected result:

*** Booting nRF Connect SDK v2.7.0-5cb85570ca43 ***
*** Using Zephyr OS v3.6.99-100befc70c74 ***

Error: Device "bme688@76" is not ready; check the driver initialization logs for errors.

Error: Device "bmi270@68" is not ready; check the driver initialization logs for errors.

Error: Device "bma400@14" is not ready; check the driver initialization logs for errors.

I can only assume there is a bug in one of the files in: "C:\ncs\v2.7.0\zephyr\drivers\sensor\bosch\bma4xx"

I am using toolchain/SDK 2.7.0 and my target is a 52832-dk board, no hardware sensors.

chris

test_case_bma4xx.zip

*** Booting nRF Connect SDK v2.7.0-5cb85570ca43 ***
*** Using Zephyr OS v3.6.99-100befc70c74 ***

Error: Device "bme688@76" is not ready; check the driver initialization logs for errors.

Error: Device "bmi270@68" is not ready; check the driver initialization logs for errors.

Error: Device "bma400@14" is not ready; check the driver initialization logs for errors.



Building test_case_bma4xx
C:\WINDOWS\system32\cmd.exe /d /s /c "west build --build-dir m:/nrf-projects/test_case_bma4xx/build m:/nrf-projects/test_case_bma4xx --pristine --board nrf52dk/nrf52832 -- -DNCS_TOOLCHAIN_VERSION=NONE -DBOARD_ROOT=m:/nrf-projects/test_pcb;m:/nrf-projects/eeprom;m:/nrf-projects/eeprom_samp;m:/nrf-projects/peripheral_lbs;m:/nrf-projects/test_case_bma4xx"

-- west build: generating a build system
Loading Zephyr default modules (Zephyr base).
-- Application: M:/nrf-projects/test_case_bma4xx
-- CMake version: 3.21.0
-- Found Python3: C:/ncs/toolchains/ce3b5ff664/opt/bin/python.exe (found suitable version "3.9.13", minimum required is "3.8") found components: Interpreter 
-- Cache files will be written to: C:/ncs/v2.7.0/zephyr/.cache
-- Zephyr version: 3.6.99 (C:/ncs/v2.7.0/zephyr)
-- Found west (found suitable version "1.2.0", minimum required is "0.14.0")
-- Board: nrf52dk, qualifiers: nrf52832
-- Found host-tools: zephyr 0.16.5 (C:/ncs/toolchains/ce3b5ff664/opt/zephyr-sdk)
-- Found toolchain: zephyr 0.16.5 (C:/ncs/toolchains/ce3b5ff664/opt/zephyr-sdk)
-- Found Dtc: C:/ncs/toolchains/ce3b5ff664/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6") 
-- Found BOARD.dts: C:/ncs/v2.7.0/zephyr/boards/nordic/nrf52dk/nrf52dk_nrf52832.dts
-- Found devicetree overlay: M:/nrf-projects/test_case_bma4xx/boards/nrf52dk_nrf52832.overlay
-- Generated zephyr.dts: M:/nrf-projects/test_case_bma4xx/build/zephyr/zephyr.dts
-- Generated devicetree_generated.h: M:/nrf-projects/test_case_bma4xx/build/zephyr/include/generated/devicetree_generated.h
-- Including generated dts.cmake file: M:/nrf-projects/test_case_bma4xx/build/zephyr/dts.cmake
Parsing M:/nrf-projects/test_case_bma4xx/Kconfig
Loaded configuration 'C:/ncs/v2.7.0/zephyr/boards/nordic/nrf52dk/nrf52dk_nrf52832_defconfig'
Merged configuration 'M:/nrf-projects/test_case_bma4xx/prj.conf'
Configuration saved to 'M:/nrf-projects/test_case_bma4xx/build/zephyr/.config'
Kconfig header saved to 'M:/nrf-projects/test_case_bma4xx/build/zephyr/include/generated/autoconf.h'
-- Found GnuLd: c:/ncs/toolchains/ce3b5ff664/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi/bin/ld.bfd.exe (found version "2.38") 
-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.0
-- The ASM compiler identification is GNU
-- Found assembler: C:/ncs/toolchains/ce3b5ff664/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc.exe
CMake Warning at C:/ncs/v2.7.0/zephyr/CMakeLists.txt:2027 (message):
  __ASSERT() statements are globally ENABLED


-- Configuring done
-- Generating done
-- Build files have been written to: M:/nrf-projects/test_case_bma4xx/build
-- west build: building application
[4/159] Generating include/generated/version.h
-- Zephyr version: 3.6.99 (C:/ncs/v2.7.0/zephyr), build: v3.6.99-ncs2
[154/159] Linking C executable zephyr\zephyr_pre0.elf
FAILED: zephyr/zephyr_pre0.elf zephyr/zephyr_pre0.map M:/nrf-projects/test_case_bma4xx/build/zephyr/zephyr_pre0.map 
cmd.exe /C "cd . && C:\ncs\toolchains\ce3b5ff664\opt\zephyr-sdk\arm-zephyr-eabi\bin\arm-zephyr-eabi-gcc.exe  -gdwarf-4 zephyr/CMakeFiles/zephyr_pre0.dir/misc/empty_file.c.obj -o zephyr\zephyr_pre0.elf  zephyr/CMakeFiles/offsets.dir/./arch/arm/core/offsets/offsets.c.obj  -fuse-ld=bfd  -T  zephyr/linker_zephyr_pre0.cmd  -Wl,-Map=M:/nrf-projects/test_case_bma4xx/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/libarch__arm__core.a  zephyr/arch/arch/arm/core/cortex_m/libarch__arm__core__cortex_m.a  zephyr/arch/arch/arm/core/mpu/libarch__arm__core__mpu.a  zephyr/lib/libc/picolibc/liblib__libc__picolibc.a  zephyr/lib/libc/common/liblib__libc__common.a  zephyr/soc/soc/nrf52832/libsoc__nordic.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/pinctrl/libdrivers__pinctrl.a  zephyr/drivers/sensor/bosch/bme680/libdrivers__sensor__bosch__bme680.a  zephyr/drivers/sensor/bosch/bmi270/libdrivers__sensor__bosch__bmi270.a  zephyr/drivers/sensor/nordic/temp/libdrivers__sensor__nordic__temp.a  zephyr/drivers/serial/libdrivers__serial.a  zephyr/drivers/timer/libdrivers__timer.a  modules/nrf/lib/dk_buttons_and_leds/lib..__nrf__lib__dk_buttons_and_leds.a  modules/nrf/lib/fatal_error/lib..__nrf__lib__fatal_error.a  modules/hal_nordic/nrfx/libmodules__hal_nordic__nrfx.a  modules/segger/libmodules__segger.a  -Wl,--no-whole-archive  zephyr/kernel/libkernel.a  -L"c:/ncs/toolchains/ce3b5ff664/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/thumb/v7e-m/nofp"  -LM:/nrf-projects/test_case_bma4xx/build/zephyr  -lgcc  zephyr/arch/common/libisr_tables.a  -mcpu=cortex-m4  -mthumb  -mabi=aapcs  -mfp16-format=ieee  -mtp=soft  -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  -Wl,-no-pie  -DPICOLIBC_LONG_LONG_PRINTF_SCANF  --specs=picolibc.specs  -lc  -lgcc && cmd.exe /C "cd /D M:\nrf-projects\test_case_bma4xx\build\zephyr && C:\ncs\toolchains\ce3b5ff664\opt\bin\cmake.exe -E true""
c:/ncs/toolchains/ce3b5ff664/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd.exe: app/libapp.a(sensor_data_collector.c.obj): in function `sensor_data_collector':
M:/nrf-projects/test_case_bma4xx/src/sensor_data_collector.c:90: undefined reference to `__device_dts_ord_105'
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
FATAL ERROR: command exited with status 1: 'C:\ncs\toolchains\ce3b5ff664\opt\bin\cmake.EXE' --build 'm:\nrf-projects\test_case_bma4xx\build'

 *  The terminal process terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it.

Related