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.