Hello everyone,
for my project I had to develop a new driver for the Kinetic 2026 LED driver.
I have attached the driver to my project like this in the Device Tree like this:
&i2c0 { clock-frequency = <I2C_BITRATE_FAST>; compatible = "nordic,nrf-twi"; status = "okay"; pinctrl-0 = <&i2c0_default>; pinctrl-1 = <&i2c0_sleep>; pinctrl-names = "default", "sleep"; /* other devices */ ... ktd2026:ktd2026@30 { compatible = "kinetic,ktd2026"; reg = < 0x30 >; }; }; aliases { led-ktd2026 = &ktd2026; };
I then tried to use the driver like this in the application:
#include <zephyr/device.h> #include <zephyr/kernel.h> #include <zephyr/drivers/i2c.h> #include <zephyr/drivers/led.h> #include "rgb_led.hpp" ... static const device *led_driver = DEVICE_DT_GET(DT_ALIAS(led_ktd2026)); bool init() { /* Check for device ready status */ return (bool)device_is_ready(led_driver); } bool setColor(const color_t color, const uint8_t brightness) { /* Return value */ bool result = true; uint8_t colorArray[MAX_LEDS] = {color.r, color.g, color.b}; /* Limit brightness to the maximum value */ __ASSERT(brightness <= MAX_BRIGHTNESS, "Max LED brightness is 100"); led_set_brightness(led_driver, 0, brightness); led_set_color(led_driver, 0, MAX_LEDS, colorArray); led_on(led_driver, 0); /* Return result */ return result; } bool turnOff() { return led_off(led_driver, 0); }
For every call to the API I get the following error:
:/Users/.../ncs/zephyr/include/zephyr/device.h:737: undefined reference to `__device_dts_ord_92'
I have already checked the following:
- The appropriate KConfig is activated (CONFIG_I2C, CONFIG_LED and CONFIG_KTD2026), as seen in the compiled KConfig (in .config) and in the autoconf.h
- In Zephyr.dts the I2C device is listed with status "okay"
- In devicetree_generated.h the device is listed with the appropriate number
- No errors while compiling the KConfig
- The naming (dashes to underscores) I have also checked
I have checked it against the suggestions on this Zephyr site: https://docs.zephyrproject.org/latest/build/dts/troubleshooting.html
The only thing I didn't check yet is the preprocessor output (-DCONFIG_COMPILER_SAVE_TEMPS=y) because I'm unsure how I can force this in the Nordic SDK in VS Code.
I'd appreciate any help I can get. I have built the driver to be similar to other drivers in the project and I have no idea why only this brings so much trouble.
I have attached the driver as well as relevant files from the build process.