CMake warning: No SOURCES given to Zephyr library: drivers__eeprom

I've written a sample eeprom application based on the eeprom included in the nRF52 SDK to test the EEPROM we use in a project. The application worked properly about 10 days ago. Now I tried to rebuild the exact same application and debug it on the nRF52 DK. When building, the following CMake warning is displayed:

CMake Warning at C:/Users/Lukas/ncs/v1.9.1/zephyr/CMakeLists.txt:764 (message):
  No SOURCES given to Zephyr library: drivers__eeprom

  Excluding target from build.

Code in main.c:

/*
 * Copyright (c) 2021 Thomas Stranger
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr.h>
#include <sys/printk.h>
#include <drivers/eeprom.h>
#include <device.h>

#define WRITE_BUFFER 8
#define READ_BUFFER 256

#define EEPROM DT_NODELABEL(eeprom_0)

/*
 * Get a device structure from a devicetree node with alias eeprom
 */
static const struct device *get_eeprom_device(void)
{
	const struct device *dev = device_get_binding(DT_LABEL(EEPROM));

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

	printk("Found EEPROM device \"%s\"\n", dev->name);
	return dev;
}

void main(void){
	const struct device *eeprom = get_eeprom_device();
	if(eeprom == NULL){
		return;
	}

	uint8_t write_buffer[WRITE_BUFFER];
	for (int i = 0; i < WRITE_BUFFER; i++){
		write_buffer[i] = 120;
	}

	eeprom_write(eeprom, 0x10, write_buffer, sizeof(write_buffer));

	uint8_t read_buffer[READ_BUFFER];
	for (int i = 0; i < READ_BUFFER; i++){
		read_buffer[i] = 0;
	}

	int ok = eeprom_read(eeprom, 0x00, &read_buffer, sizeof(read_buffer));
	if(ok < 0){
		printk("Error reading from EEPROM; err: %d\n", ok);
		return;
	}
}

For the EEPROM used in our project I created an overlay device tree with the following code:

&i2c0 {
    eeprom_0: br24c02@50 {
        compatible = "atmel,at24";
        size = <256>;
        pagesize = <8>;
        address-width = <8>;
        timeout = <0>;
        label = "BR24C02";
        reg = <0x50>;
    };
};

CMakeLists.txt

# SPDX-License-Identifier: Apache-2.0

cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(eeprom)

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

prj.conf

CONFIG_PRINTK=y
CONFIG_EEPROM=y

I can debug the application. However, when I step over the function "device_get_binding(DT_LABEL(EEPROM))" I can see that a NULL pointer is returned.

static const struct device *get_eeprom_device(void)
{
	const struct device *dev = device_get_binding(DT_LABEL(EEPROM));

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

	printk("Found EEPROM device \"%s\"\n", dev->name);
	return dev;
}

Do you have any ideas why this problem occurs and how to fix it?

Related