Date   

Re: lsm6dsl full registers access #sensor #sst26

Lawrence King
 

At a high level, between the sensor driver you found in drivers/sensor/lsm6dsl and your program, Zephyr provides an interface layer that makes the calls to sensor_attr_set() reasonably independent of the sensor you are using. Here is a fragment of code (not complete) example of setting things up for a lsm9ds1, this is not the sensor you are using, but all of the general concepts are the same.

 

/*

*      imu.c - routines to run the imu (Inertial Measurement Unit)

*

* imu_init()                   - forks a process to deal with the imu

* imu_main()                   - the main-loop for the imu process

* imu_trigger_handler()        - interrupt handler for the imu and magnetometer

*

*/

 

/* Zephyr specific includes */

#include <zephyr.h>

#include <zephyr/types.h>

#include <logging/log.h>

#include <device.h>

#include <drivers/sensor.h>

 

/* Generic 'C' includes */

#include <stdio.h>

#include <stddef.h>

#include <string.h>

#include <ctype.h>

 

#ifndef TEST_ROUTINE

/* project specific includes */

#include "imu.h"

#include "crash.h"

#endif

 

LOG_MODULE_REGISTER(imu);

 

/* forward declaration */

static void imu_trigger_handler(struct device *dev, struct sensor_trigger *trig);

 

/* the thread for processing imu data */

static K_THREAD_STACK_DEFINE(imu_stack, 1024);

static struct k_thread imu_thread_data;

static struct device *lsm9ds1;

enum sample_t {

        MAGNETOMETER_SAMPLE, ACCELEROMETER_SAMPLE, GRYO_SAMPLE, TEMPERATURE_SAMPLE

};

 

static int imu_mag_trig_cnt;

static int imu_accel_trig_cnt;

static int imu_gyro_trig_cnt;

static struct sensor_value accel[3];

static struct sensor_value gyro[3];

static struct sensor_value magn[3];

#if defined(CONFIG_LSM9DS1_ENABLE_TEMP)

static struct sensor_value temp[1];

static int imu_temp_trig_cnt;

#endif

 

/* a fifo to pass sensor readings from the ISR to the main imu loop */

K_FIFO_DEFINE(sample_fifo);

 

/* a memory pool and support routines to throw sensor readings into */

struct imu_sample_t {

        sys_snode_t node;               /* for the FIFO roputines */

        struct k_mem_block block;       /* for the alloc and free */

        enum sample_t type;             /* what the sensor_values are */

        struct sensor_value value[3];   /* x,y,x , or just T */

};

 

#define FIFO_ELEM_MIN_SZ        sizeof(struct imu_sample_t)

#define FIFO_ELEM_MAX_SZ        sizeof(struct imu_sample_t)

#define FIFO_ELEM_COUNT         255

#define FIFO_ELEM_ALIGN         sizeof(unsigned int)

 

K_MEM_POOL_DEFINE(sample_pool, FIFO_ELEM_MIN_SZ, FIFO_ELEM_MAX_SZ,

                  FIFO_ELEM_COUNT, FIFO_ELEM_ALIGN);

 

static inline void imu_sample_free(struct imu_sample_t *smp)

{

        k_mem_pool_free(&smp->block);

}

 

static inline void imu_sample_put(struct imu_sample_t *smp)

{

        k_fifo_put(&sample_fifo, smp);

}

 

static inline struct imu_sample_t *imu_sample_get(void)

{

        return k_fifo_get(&sample_fifo, K_FOREVER);

}

 

static inline void imu_sample_flush(void)

{

        struct imu_sample_t *smp;

 

        do {

                smp = imu_sample_get();

                if (smp) {

                        imu_sample_free(smp);

                }

        } while (smp != NULL);

}

 

static inline struct imu_sample_t *imu_sample_alloc(void)

{

        int ret;

        struct imu_sample_t *smp;

        struct k_mem_block block;

 

        ret = k_mem_pool_alloc(&sample_pool, &block,

                               sizeof(struct imu_sample_t),

                               K_NO_WAIT);

        if (ret < 0) {

                LOG_ERR("APP sample allocation failed!");

                imu_sample_flush();

 

                ret = k_mem_pool_alloc(&sample_pool, &block,

                                       sizeof(struct imu_sample_t),

                                       K_NO_WAIT);

                if (ret < 0) {

                        LOG_ERR("APP sample memory corrupted.");

                        __ASSERT_NO_MSG(0);

                        return NULL;

                }

                return NULL;

        }

 

        smp = (struct imu_sample_t *)block.data;

        smp->block = block;

 

        return smp;

}

 

static inline float out_ev(struct sensor_value *val)

{

        return (val->val1 + (float)val->val2 / 1000000.0f);

}

 

void imu_test(void)

{

        int64_t sample[3], t;

 

        if (lsm9ds1 != NULL) {

                t = k_uptime_get();     /* number of ms uptime */

                sample[0] = accel[0].val1 * 1000000 + accel[0].val2;

                sample[1] = accel[1].val1 * 1000000 + accel[1].val2;

                sample[2] = accel[2].val1 * 1000000 + accel[2].val2;

 

                printf("LSM9DS1 sensor samples:\n");

                k_sleep(K_MSEC(10));

                printf("mag_trig_cnt=%d, accel_trig_cnt=%d, gyro_trig_cnt=%d\n",

                       imu_mag_trig_cnt,

                       imu_accel_trig_cnt,

                       imu_gyro_trig_cnt);

                printf("\t accelerometer interrupt rate %.3f interrupts/second\n", ((float)imu_accel_trig_cnt / (float)t) * 1000.0f);

 

                k_sleep(K_MSEC(10));

                /* lsm9ds1 accel */

                printf("accel (%f %f %f) m/s2\n", out_ev(&accel[0]),

                       out_ev(&accel[1]),

                       out_ev(&accel[2]));

 

                k_sleep(K_MSEC(10));

                /* lsm9ds1 gyro */

                printf("gyro (%f %f %f) dps\n", out_ev(&gyro[0]),

                       out_ev(&gyro[1]),

                       out_ev(&gyro[2]));

 

                k_sleep(K_MSEC(10));

                /* lsm9ds1 external magn */

                printf("magn (%f %f %f) gauss\n", out_ev(&magn[0]),

                       out_ev(&magn[1]),

                       out_ev(&magn[2]));

#if defined(CONFIG_LSM9DS1_ENABLE_TEMP)

                k_sleep(K_MSEC(10));

                /* lsm9ds1  temperature */

                printf("temperature (%f) degrees C\n", out_ev(&temp[0]));

#endif

#ifndef TEST_ROUTINE

                crash_test(sample);

#endif

        } else {

                printf("LSM9DS1 not available\n");

        }

}

 

void imu_init(void)

{

        struct sensor_value odr_attr;

 

        /* get a handle to the sensor */

        lsm9ds1 = device_get_binding(DT_LABEL(DT_INST(0, st_lsm9ds1)));

        if (lsm9ds1 == NULL) {

                printf("Could not get a handle to the %s device\n", DT_LABEL(DT_INST(0, st_lsm9ds1)));

                return;

        } else {

                printf("imu_dev %p name %s\n", lsm9ds1, DT_LABEL(DT_INST(0, st_lsm9ds1)));

 

                printf("setting up sensor channels.\n");

                /* set magnetometer sampling frequency to 2.5 Hz */

                odr_attr.val1 = 2;

                odr_attr.val2 = 500000;

                if (sensor_attr_set(lsm9ds1, SENSOR_CHAN_MAGN_XYZ,

                                    SENSOR_ATTR_SAMPLING_FREQUENCY, &odr_attr) < 0) {

                        printf("Cannot set sampling frequency for magnetometer.\n");

                }

                printf("mag sample rate set to 2.5Hz.\n");

 

                /* set accel sampling frequency to 59.5 Hz */

                odr_attr.val1 = 59;

                odr_attr.val2 = 500000;

                if (sensor_attr_set(lsm9ds1, SENSOR_CHAN_ACCEL_XYZ,

                                    SENSOR_ATTR_SAMPLING_FREQUENCY, &odr_attr) < 0) {

                      printf("Cannot set sampling frequency for accelerometer (as expected).\n");

                }

                /* set gyro sampling frequency to 59.5 Hz */

                if (sensor_attr_set(lsm9ds1, SENSOR_CHAN_GYRO_XYZ,

                                    SENSOR_ATTR_SAMPLING_FREQUENCY, &odr_attr) < 0) {

                        printf("Cannot set sampling frequency for gyro.\n");

                }

                printf("imu sample rate set to 59.5Hz.\n");

 

#ifdef CONFIG_LSM9DS1_TRIGGER

                struct sensor_trigger trig;

#if defined(CONFIG_LSM9DS1_MAG_DRDY_TRIGGER)

                trig.type = SENSOR_TRIG_DATA_READY;

                trig.chan = SENSOR_CHAN_MAGN_XYZ;

 

                if (sensor_trigger_set(lsm9ds1, &trig, imu_trigger_handler) != 0) {

                        printf("Could not set sensor type and channel for mag trigger\n");

               }

                printf("mag trigger handler attached\n");

#endif

#if defined(CONFIG_LSM9DS1_IMU_DRDY_TRIGGER)

                trig.type = SENSOR_TRIG_DATA_READY;

                trig.chan = SENSOR_CHAN_ACCEL_XYZ;

                if (sensor_trigger_set(lsm9ds1, &trig, imu_trigger_handler) != 0) {

                        printf("Could not set sensor type and channel for imu trigger\n");

                }

 

                trig.type = SENSOR_TRIG_DATA_READY;

                trig.chan = SENSOR_CHAN_GYRO_XYZ;

                if (sensor_trigger_set(lsm9ds1, &trig, imu_trigger_handler) != 0) {

                        printf("Could not set sensor type and channel for imu trigger\n");

                }

                printf("imu data ready handlers attached\n");

#endif

#if defined(CONFIG_LSM9DS1_ENABLE_TEMP)

                trig.type = SENSOR_TRIG_DATA_READY;

                trig.chan = SENSOR_CHAN_DIE_TEMP;

 

                if (sensor_trigger_set(lsm9ds1, &trig, imu_trigger_handler) != 0) {

                        printf("Could not set sensor type and channel for temp trigger\n");

                }

                printf("imu temperature handler attached\n");

#endif

 

#endif

                /* start the imu main task */

                k_thread_create(&imu_thread_data, imu_stack,

                                K_THREAD_STACK_SIZEOF(imu_stack),

                                (k_thread_entry_t)imu_main,

                                NULL, NULL, NULL, K_PRIO_COOP(9), 0, K_NO_WAIT);

                printf("done setting up sensor channels.\n");

        }

}

 

#if defined(CONFIG_LSM9DS1_MAG_DRDY_TRIGGER) || defined(CONFIG_LSM9DS1_IMU_DRDY_TRIGGER)

static void imu_trigger_handler(struct device *dev,

                                struct sensor_trigger *trig)

{

        struct imu_sample_t *sample;

        int rc;

 

        /* look at the trigger type to decide if this is accel,

         * gyro, or temp data, then get it, convert to eng units

         * and store it locally

         */

        if (trig->type == SENSOR_TRIG_DATA_READY) {

                switch (trig->chan) {

#if defined(CONFIG_LSM9DS1_MAG_DRDY_TRIGGER)

                case SENSOR_CHAN_MAGN_XYZ:

                        imu_mag_trig_cnt++;

                        sample = imu_sample_alloc();

                        if (sample == NULL) {

                                printf("imu_sample_alloc() failed\n");

                                break;

                        }

                        rc = sensor_sample_fetch_chan(dev, SENSOR_CHAN_MAGN_XYZ);

                        if (rc != 0) {

                                printf("sensor_sample_fetch_chan() failed\n");

                        }

                        rc = sensor_channel_get(dev, SENSOR_CHAN_MAGN_XYZ, sample->value);

                        /* rc = sensor_channel_get(dev, SENSOR_CHAN_MAGN_XYZ, magn); */

                        if (rc != 0) {

                                printf("sensor_channel_get() failed\n");

                        }

                        sample->type = MAGNETOMETER_SAMPLE;

                        imu_sample_put(sample);

                        /* printf("magnetometer sample pushed into fifo\n"); */

                        break;

#endif

#if defined(CONFIG_LSM9DS1_IMU_DRDY_TRIGGER)

                case SENSOR_CHAN_ACCEL_XYZ:

                        imu_accel_trig_cnt++;

                        sample = imu_sample_alloc();

                        if (sample == NULL) {

                                printf("imu_sample_alloc() failed\n");

                                break;

                        }

                        rc = sensor_sample_fetch_chan(dev, SENSOR_CHAN_ACCEL_XYZ);

                        if (rc != 0) {

                                printf("sensor_sample_fetch_chan() failed\n");

                        }

                        rc = sensor_channel_get(dev, SENSOR_CHAN_ACCEL_XYZ, sample->value);

                        /* rc = sensor_channel_get(dev, SENSOR_CHAN_ACCEL_XYZ, accel); */

                        if (rc != 0) {

                                printf("sensor_channel_get() failed\n");

                        }

                        sample->type = ACCELEROMETER_SAMPLE;

                        imu_sample_put(sample);

                        /* printf("accel sample pushed into fifo\n"); */

                        break;

                case SENSOR_CHAN_GYRO_XYZ:

                        imu_gyro_trig_cnt++;

                        sample = imu_sample_alloc();

                        if (sample == NULL) {

                                printf("imu_sample_alloc() failed\n");

                                break;

                        }

                        rc = sensor_sample_fetch_chan(dev, SENSOR_CHAN_GYRO_XYZ);

                        if (rc != 0) {

                                printf("sensor_sample_fetch_chan() failed\n");

                        }

                        rc = sensor_channel_get(dev, SENSOR_CHAN_GYRO_XYZ, sample->value);

                        /* rc = sensor_channel_get(dev, SENSOR_CHAN_GYRO_XYZ, gyro); */

                        if (rc != 0) {

                                printf("sensor_channel_get() failed\n");

                        }

                        sample->type = GRYO_SAMPLE;

                        imu_sample_put(sample);

                        /* printf("gyro sample pushed into fifo\n"); */

                        break;

#endif

#if defined(CONFIG_LSM9DS1_ENABLE_TEMP)

                case SENSOR_CHAN_DIE_TEMP:

                        imu_temp_trig_cnt++;

                        sample = imu_sample_alloc();

                        if (sample == NULL) {

                                printf("imu_sample_alloc() failed\n");

                                break;

                        }

                        rc = sensor_sample_fetch_chan(dev, SENSOR_CHAN_DIE_TEMP);

                        if (rc != 0) {

                                printf("sensor_sample_fetch_chan() failed\n");

                        }

                        rc = sensor_channel_get(dev, SENSOR_CHAN_DIE_TEMP, sample->value);

                        /* rc = sensor_channel_get(dev, SENSOR_CHAN_DIE_TEMP, temp); */

                        if (rc != 0) {

                                printf("sensor_channel_get() failed\n");

                        }

                        sample->type = TEMPERATURE_SAMPLE;

                        imu_sample_put(sample);

                        /* printf("temp sample pushed into fifo\n"); */

                        break;

#endif

                default:

                        break;

                }

                /* once we put a sample into the fifo, the kernel will wake up

                 * the main loop to process the sample */

        }

}

#endif

 

/**

*

* imu_main() - main loop for processing samples

*

**/

void imu_main(void)

{

        struct imu_sample_t *smp;

        int magn_cnt = 0, accel_cnt = 0, gyro_cnt = 0, temp_cnt = 0;

 

        if (lsm9ds1 != NULL) {

                printf("imu_main(): started\n");

                k_sleep(K_MSEC(1000));  /* wait for samples to arrive */

        /*      sensor_sample_fetch(lsm9ds1); */

                sensor_sample_fetch_chan(lsm9ds1, SENSOR_CHAN_DIE_TEMP);

                sensor_sample_fetch_chan(lsm9ds1, SENSOR_CHAN_GYRO_XYZ);

                sensor_sample_fetch_chan(lsm9ds1, SENSOR_CHAN_MAGN_XYZ);

                sensor_sample_fetch_chan(lsm9ds1, SENSOR_CHAN_ACCEL_XYZ);

        }

 

        while (1) {

                /* eat up all of the samples out of the fifo */

                if ( ((smp = imu_sample_get()) != NULL) && (lsm9ds1 != NULL) ) {

                        /* store latest sample in a place where the test routine can print it */

                        switch (smp->type) {

                        case MAGNETOMETER_SAMPLE:

                                magn_cnt++;

                                magn[0] = smp->value[0];

                                magn[1] = smp->value[1];

                                magn[2] = smp->value[2];

                                break;

                        case ACCELEROMETER_SAMPLE:

                                accel_cnt++;

                                accel[0] = smp->value[0];

                                accel[1] = smp->value[1];

                                accel[2] = smp->value[2];

#ifndef TEST_ROUTINE

                                crash_detect(&(smp->value[0]), &(smp->value[1]), &(smp->value[2]));

#endif

                                break;

                        case GRYO_SAMPLE:

                                gyro_cnt++;

                                gyro[0] = smp->value[0];

                                gyro[1] = smp->value[1];

                                gyro[2] = smp->value[2];

                                break;

#if defined(CONFIG_LSM9DS1_ENABLE_TEMP)

                        case TEMPERATURE_SAMPLE:

                                temp_cnt++;

                                temp[0] = smp->value[0];

                                break;

#endif

                        }

                        imu_sample_free(smp);

                } else {

                        /* no samples available, nap for a while.

                         * above we set the sample rate at 59.9Hz so waiting a

                         * 60th of a second is reasonable, of course since the

                         * imu_sample_get() routine waits until there is

                         * something in the fifo, this should never happen */

                        k_sleep(K_MSEC(1000 / 60));

                }

        }

}

 

 

 

 

 

 

Lawrence King

Principal Developer

+1(416)627-7302

 

From: users@... <users@...> On Behalf Of DKaplan@...
Sent: Wednesday, June 9, 2021 5:22 AM
To: users@...
Subject: [Zephyr-users] lsm6dsl full registers access #sensor #sst26

 

Shalom!
 We are building a custom prototype Nordic nRF9160 board with the lsm6dsl spi chip in parallel on the same spi channel as the MX25R6435F flash memory chip.
I am new to Zephyr and mostly have programmed without any RTOS directly, bare metal, accessing the devices.
I need to program (and read) most all of the lsm6dsl's registers including reading the lsm6dsl's fifo before it overflows.
I understand that in the lsm6dsl sample that the sensor wrapper is used along with interrupts for motion detection.
We do not need any motion detection but just to take acceleration readings for a period of a several seconds.
Since the acceleration readings are at a know frequency ad the fifo size is constant, we do not have to use an interrupt by using a FIFO threshold, but by constantly emptying the FIFO.
I have code that works well using a Silabs mico-controller.
I looked at the sensors/lsm6dsl files including lsm6dsl_spi.c which seems to have basic read and write register static functionality but I do not know how this is reflected (or mapped) to the high level sensor functions like sensor_attr_set() sensor_attr_get() sensor_sample_fetch_chan() & sensor_channel_get().
Also I do not see how to specify each chip select for devices on the same SPI bus.
I am new to the prj.conf, Kconfig, CMakeLists.txt & .overlay files.
I created an overlay file and based on what I saw added the following:

&spi3 {

    status = "okay";

    sck-pin = <13>;

    mosi-pin = <11>;

    miso-pin = <12>;

    cs-gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;

    /* ST Microelectronics LSM6DSL accel/gyro sensor */

    lsm6dsl@1 {

        compatible = "st,lsm6dsl";

        reg = <1>;

        spi-max-frequency = <1000000>;

        irq-gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>;

        label = "LSM6DSL_SPI";

    };

    mx25r64: mx25r6435f@0 {

        compatible = "jedec,spi-nor";

        reg = <0>;

        spi-max-frequency = <8000000>;

        label = "MX25R64";

        jedec-id = [c2 28 17];

        sfdp-bfp = [

            e5 20 f1 ff  ff ff ff 03  44 eb 08 6b  08 3b 04 bb

            ee ff ff ff  ff ff 00 ff  ff ff 00 ff  0c 20 0f 52

            10 d8 00 ff  23 72 f5 00  82 ed 04 cc  44 83 68 44

            30 b0 30 b0  f7 c4 d5 5c  00 be 29 ff  f0 d0 ff ff

        ];

        size = <67108864>;

        has-dpd;

        t-enter-dpd = <10000>;

        t-exit-dpd = <35000>;

    };

};


We also have a 24LC512 EEPROM and a SI7050 temperature chip on the same I2C line, so the answer on how to specify their individual cs may be the same.
So basically I am asking:
 1) How do I map the high end sensor functions to the lower end spi functions?
 2) How do I differentiate between their cs lines?
 
If anyone can help or has a Zephyr example with the lsm6dsl , 24LC512 or the SI7050 let me know.
Thanks
 David


lsm6dsl full registers access #sensor #sst26

DKaplan@...
 

Shalom!
 We are building a custom prototype Nordic nRF9160 board with the lsm6dsl spi chip in parallel on the same spi channel as the MX25R6435F flash memory chip.
I am new to Zephyr and mostly have programmed without any RTOS directly, bare metal, accessing the devices.
I need to program (and read) most all of the lsm6dsl's registers including reading the lsm6dsl's fifo before it overflows.
I understand that in the lsm6dsl sample that the sensor wrapper is used along with interrupts for motion detection.
We do not need any motion detection but just to take acceleration readings for a period of a several seconds.
Since the acceleration readings are at a know frequency ad the fifo size is constant, we do not have to use an interrupt by using a FIFO threshold, but by constantly emptying the FIFO.
I have code that works well using a Silabs mico-controller.
I looked at the sensors/lsm6dsl files including lsm6dsl_spi.c which seems to have basic read and write register static functionality but I do not know how this is reflected (or mapped) to the high level sensor functions like sensor_attr_set() sensor_attr_get() sensor_sample_fetch_chan() & sensor_channel_get().
Also I do not see how to specify each chip select for devices on the same SPI bus.
I am new to the prj.conf, Kconfig, CMakeLists.txt & .overlay files.
I created an overlay file and based on what I saw added the following:
&spi3 {
    status = "okay";
    sck-pin = <13>;
    mosi-pin = <11>;
    miso-pin = <12>;
    cs-gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
    /* ST Microelectronics LSM6DSL accel/gyro sensor */
    lsm6dsl@1 {
        compatible = "st,lsm6dsl";
        reg = <1>;
        spi-max-frequency = <1000000>;
        irq-gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>;
        label = "LSM6DSL_SPI";
    };
    mx25r64: mx25r6435f@0 {
        compatible = "jedec,spi-nor";
        reg = <0>;
        spi-max-frequency = <8000000>;
        label = "MX25R64";
        jedec-id = [c2 28 17];
        sfdp-bfp = [
            e5 20 f1 ff  ff ff ff 03  44 eb 08 6b  08 3b 04 bb
            ee ff ff ff  ff ff 00 ff  ff ff 00 ff  0c 20 0f 52
            10 d8 00 ff  23 72 f5 00  82 ed 04 cc  44 83 68 44
            30 b0 30 b0  f7 c4 d5 5c  00 be 29 ff  f0 d0 ff ff
        ];
        size = <67108864>;
        has-dpd;
        t-enter-dpd = <10000>;
        t-exit-dpd = <35000>;
    };
};

We also have a 24LC512 EEPROM and a SI7050 temperature chip on the same I2C line, so the answer on how to specify their individual cs may be the same.
So basically I am asking:
 1) How do I map the high end sensor functions to the lower end spi functions?
 2) How do I differentiate between their cs lines?
 
If anyone can help or has a Zephyr example with the lsm6dsl , 24LC512 or the SI7050 let me know.
Thanks
 David


Zephyr 2.6.0 released, merge window is now open.

Kumar Gala
 

Hi,

We are pleased to announce the release of Zephyr RTOS version 2.6.0!

Major enhancements with this release include:

Major enhancements with this release include:
* Logging subsystem overhauled
* Added support for 64-bit ARCv3
* Split ARM32 and ARM64, ARM64 is now a top-level architecture
* Added initial support for Arm v8.1-m and Cortex-M55
* Removed legacy TCP stack support which was deprecated in 2.4
* Tracing subsystem overhaul including expansion for tracing points and added support
for Percepio Tracealyzer
* Device runtime power management (PM), former IDLE runtime, was completely overhauled.
* Added an example standalone Zephyr application in its own Git repository:
https://github.com/zephyrproject-rtos/example-application

The detailed release notes can be found here:
https://github.com/zephyrproject-rtos/zephyr/releases/tag/zephyr-v2.6.0

The next release, v2.7.0, is scheduled for October 15th, 2021. We’ll select a release manager in the next few days. The merge window is now open!

Please remember for older PRs a rebase might be good to double check any new CI issues!!!

Thank you to everyone that contributed features, documentation, testing, infrastructure, and bug fixes!

- Kumar


Zephyr 2.6.0-rc3 tagged

Kumar Gala
 

Hi,
The third release candidate for Zephyr v2.6.0 has been tagged (v2.6.0-rc3).

The merge window for features and enhancements remains closed until v2.6.0 is released. The next release milestone is code freeze. The final release remains scheduled for 4 Jun.

The focus now should be shifted to testing and documentation of the release. If you are a maintainer, please provide release notes for the areas you are responsible for and any other contributions you might have submitted since the last release. Everyone is encouraged to contribute to the release notes. The draft release notes file can be found here:

https://github.com/zephyrproject-rtos/zephyr/blob/main/doc/releases/release-notes-2.6.rst

Additional features or enhancements for the v2.6.0 release require approval by the TSC.

Current bug counts are:

High: 0 (Target: 0)
Medium: 11 (Target: 20)
Low: 78 (Target: 50)

More information about bugs counts and real-time tracking of bug counts can be found here: https://testing.zephyrproject.org/issues/zephyrproject-rtos/zephyr/index.html

Testing Zephyr main branch during the stabilization period is also requested; please test the code base and file bug reports so they can be addressed before the release deadline.

All changes since 2.6.0-rc2 can be found here:
https://github.com/zephyrproject-rtos/zephyr/releases/tag/v2.6.0-rc3

More details about Zephyr releases can found on the pages below:
https://docs.zephyrproject.org/latest/development_process/release_process.html

You may continue to send Pull Requests for new features in order to gather feedback early or collaborate with others, but the release team would like to encourage everyone to focus on bugfixes and documentation improvements to the largest extent possible, so that we can release v2.6.0 on time and in the best shape possible. If you have a feature or enhancement you would like to submit to the TSC, please tag the Pull Request with the "TSC" label, make sure it is approved and passing CI, and attend the next TSC meeting.

Thanks,
Kumar


Zephyr OSDP

Bojan JOVANOVIC <bojanjov@...>
 

Hello, guys.

I recently discovered that you included example codes for OSDP Control Panel (CP) and Peripheral Devices (PDs). In NCS v1.5.1 that I am using (link), they can be fund under zephyr/samples/subsys/mgmt/osdp. The examples are imported and adapted for Zephyr environment from here

I would like to try OSDP Control Panel example and communicate with my OSDP keycard reader PD device (e.g. this one).

However, I am not sure how should I interconnect keycard reader with nRF52840 development kit. Would you be so kind helping me with the following:

  1. Do I need to have some RS-485 transceiver development kit (e.g. this) that will serve as a bridge between OSDP keycard and UART port of the nRF52840 development board? 
  2. Within the main() function of OSDP CP example, I can't find how did you set the device in CP mode with osdp_cp_setup() function (link). Can you point me to the place where it is done in example code?

Thank you very much for your time and efforts. Looking forward to reading from you. 

Cheers Beers

Bojan.


Re: Network forum agenda

Jukka Rissanen
 

Hi,

Sorry for late reply, but I am cancelling this telco today as there is
nothing in agenda.


Cheers,
Jukka

On Mon, 2021-05-31 at 13:25 +0300, Jukka Rissanen wrote:
Hi all,

There is a network forum meeting tomorrow Tue 1 June at 8AM PST /
17.00
CEST.

Currently the agenda is empty, so if there is anything network
related
topics you want to discuss, please let me know, otherwise I will
cancel
the meeting.

Live Agenda/Minutes:
https://docs.google.com/document/d/1qFsOpvbyLzhflJbbv4Vl__497pKHDoUCy9hjAveyCX0/edit?usp=sharing

Shared Folder:
https://drive.google.com/drive/folders/1j6d0FLeOjiMil1Ellb59AsfHdzuWdAAc?usp=sharing

___________________________________________________________
Join Microsoft Teams Meeting (
https://teams.microsoft.com/l/meetup-join/19%3ameeting_NDU5ODRkNzktZDBmNC00MDg5LWI2OWEtNzM0MGZjMDU0Yjgw%40thread.v2/0?context=%7b%22Tid%22%3a%22af0096d9-700c-411a-b795-b3dd7122bad2%22%2c%22Oid%22%3a%22841a7c92-7816-4faf-9887-5e334e88f6d8%22%7d
)
+1 321-558-6518 ( tel:+1 321-558-6518,,458216365# ) United States,
Orlando (Toll)
Conference ID: 458 216 365#
Local numbers (
https://dialin.teams.microsoft.com/325d775d-c910-441e-90d0-353ebaa56cdd?id=458216365
) | Reset PIN ( https://mysettings.lync.com/pstnconferencing ) |
Learn
more about Teams ( https://aka.ms/JoinTeamsMeeting ) | Meeting
options
(
https://teams.microsoft.com/meetingOptions/?organizerId=841a7c92-7816-4faf-9887-5e334e88f6d8&tenantId=af0096d9-700c-411a-b795-b3dd7122bad2&threadId=19_meeting_NDU5ODRkNzktZDBmNC00MDg5LWI2OWEtNzM0MGZjMDU0Yjgw@thread.v2&messageId=0&language=en-US
)


Cheers,
Jukka









Re: Arduino Nano 33 IOT 'west flash' failure

William Fish
 

Hi,
I have been seeing the same thing with the nano-33 Sense using windows. I had assumed it must be my set-up but this would indicate that there is an issue with serial output on the Nano boards.

Not sure where to start.

Billy..


Network forum agenda

Jukka Rissanen
 

Hi all,

There is a network forum meeting tomorrow Tue 1 June at 8AM PST / 17.00
CEST.

Currently the agenda is empty, so if there is anything network related
topics you want to discuss, please let me know, otherwise I will cancel
the meeting.

Live Agenda/Minutes:
https://docs.google.com/document/d/1qFsOpvbyLzhflJbbv4Vl__497pKHDoUCy9hjAveyCX0/edit?usp=sharing

Shared Folder:
https://drive.google.com/drive/folders/1j6d0FLeOjiMil1Ellb59AsfHdzuWdAAc?usp=sharing

___________________________________________________________
Join Microsoft Teams Meeting (
https://teams.microsoft.com/l/meetup-join/19%3ameeting_NDU5ODRkNzktZDBmNC00MDg5LWI2OWEtNzM0MGZjMDU0Yjgw%40thread.v2/0?context=%7b%22Tid%22%3a%22af0096d9-700c-411a-b795-b3dd7122bad2%22%2c%22Oid%22%3a%22841a7c92-7816-4faf-9887-5e334e88f6d8%22%7d
)
+1 321-558-6518 ( tel:+1 321-558-6518,,458216365# ) United States,
Orlando (Toll)
Conference ID: 458 216 365#
Local numbers (
https://dialin.teams.microsoft.com/325d775d-c910-441e-90d0-353ebaa56cdd?id=458216365
) | Reset PIN ( https://mysettings.lync.com/pstnconferencing ) | Learn
more about Teams ( https://aka.ms/JoinTeamsMeeting ) | Meeting options
(
https://teams.microsoft.com/meetingOptions/?organizerId=841a7c92-7816-4faf-9887-5e334e88f6d8&tenantId=af0096d9-700c-411a-b795-b3dd7122bad2&threadId=19_meeting_NDU5ODRkNzktZDBmNC00MDg5LWI2OWEtNzM0MGZjMDU0Yjgw@thread.v2&messageId=0&language=en-US
)


Cheers,
Jukka


Arduino Nano 33 IOT 'west flash' failure

Sunanda Roy <sroy9@...>
 

Hello,

While trying to execute a simple test program (samples/hello_world) on Arduino Nano 33 IOT (target) using Zephyr RTOS. I followed all installation steps and when I run the 'west flash' command in bootloader mode, I got this error: No device found on /dev/ttyACM0 (serial port).

After some online study, I find that I need to change permissions of serial port to 666 before every flash. Now when I follow the steps at (https://docs.zephyrproject.org/latest/boards/arm/arduino_nano_33_iot/doc/index.html), I get the below error:
-- west flash: using runner bossac

SAM-BA operation failed

On the contrary, when I do NOT open the minicom terminal (in a separate window), I am able to flash successfully.

This allows me to successfully flash and verify sample programs which do not require any serial output (ex. samples/basic/blinky). But I am not able to see any output for sample programs like (samples/drivers/crypto) after a successful flash.

Please provide your suggestions to see the output of these sample programs on my desktop machine running Ubuntu 20.04.2 LTS.


Thanks,
Sunanda



Re: STM32F723E-Disco: how to use USB in high-speed mode

Dirk-Jan C. Binnema
 

On Friday May 21 2021, Dirk-Jan C. Binnema via lists.zephyrproject.org wrote:

Dear List,

I'm trying to use the USB-OTG HS port on an STM32F723E Discovery Board
to mount a ramdisk on a Linux 5.11 host; this works fine in FS-mode;
however, I want to use high-speed mode instead.

In an overlay file I have:
------------------------------------------------------------
&usbotg_fs {
status = "disabled";
};

&usbotg_hs {
pinctrl-0 = <&usb_otg_hs_dm_pb14 &usb_otg_hs_dp_pb15>;
maximum-speed = "high-speed";
status = "okay";
};
------------------------------------------------------------
(based on the data sheet / some older posts)

This *almost* works, but Linux fails to mount (dmesg output):
[...]

To reply to myself: it actually _does_ work when I tried some other
machine running Debian Testing / kernel 4.9 (using ehci_hdc rather than
xhci_hcd); even there it can take up to a minute or so for the mounting
to succeed.

Since this is only for testing, it's good enough for me, but still would
be nice to have the mounting to work smoothly will all kernels.

Also note the

,----
| > usb 1-3: config 1 interface 0 altsetting 0 bulk endpoint 0x81 has
| > invalid maxpacket 64
`----

I think for mass-storage maxpacket the value should be 512 instead
(hence the warning)... is this a bug?

Kind regards,
Dirk.

--
Dirk-Jan C. Binnema Helsinki, Finland
e:djcb@djcbsoftware.nl w:www.djcbsoftware.nl
gpg: 6987 9CED 1745 9375 0F14 DA98 11DD FEA9 DCC4 A036


Re: Set proj.conf config parameter from CMakelists

Nikos Karamolegkos
 

I found a solution. I pass it as argument to west build.

On 28/5/21 11:49 π.μ., Nikos Karamolegkos wrote:
Hello,

I would like to set the CONFIG_FLASH_LOAD_OFFSET variable before compilation without setting in to proj.conf file. Can I use CMakelist.txt or something else to define a default value in case is not set in proj.conf. Identically,  I would like to hide from the programmer that the CONFIG_FLASH_LOAD_OFFSET is set to another value so I would prefer to avoid add it to proj.conf and just update (somehow) before compilation of the code.

Thank you
--
Nikos Karamolegkos
R & D engineer at ICS-FORTH
Telecommunications and Networks Lab (TNL)


Set proj.conf config parameter from CMakelists

Nikos Karamolegkos
 

Hello,

I would like to set the CONFIG_FLASH_LOAD_OFFSET variable before compilation without setting in to proj.conf file. Can I use CMakelist.txt or something else to define a default value in case is not set in proj.conf. Identically,  I would like to hide from the programmer that the CONFIG_FLASH_LOAD_OFFSET is set to another value so I would prefer to avoid add it to proj.conf and just update (somehow) before compilation of the code.

Thank you

--
Nikos Karamolegkos
R & D engineer at ICS-FORTH
Telecommunications and Networks Lab (TNL)


Re: question on devicetree (nrf52840dongle)

Bolivar, Marti
 

Hi again Kristoff,

"Kristoff Bonne via lists.zephyrproject.org"
<kristoff=skypro.be@lists.zephyrproject.org> writes:

Hi all,


First, thanks to who reply off-list. :-)



I found the solution, so I will Just a reply for sake of the the
mail-achive:
In contrast to the device-tree module on linux/*BSD, the devicetree
source-files (i.e. the .dts file) are recompiled every time, so there is
no need to first convert the .dts source-files in binary blobs.
Just to be clear although I mentioned this in my response to your other
thread, they are not recompiled 'every time'. DTS files are processed
only when the configuration phase runs.

Since you mention blobs here, I will say that Zephyr converts DTS to the
generated header directly, and blobs never enter the picture.

The details are in the 'Input and output files' section of the
'Introduction to devicetree' page in the Zephyr docs:

https://docs.zephyrproject.org/latest/guides/dts/intro.html#input-and-output-files

In my case, as I just a hobbyist, I just modified the
"nrf52840dongle_nrf52840.dts" file and that solved my issue. (Alhough I
guess I would have needed to use an device-tree overlay file to do this
the "proper" way).



But I am still a bit puzzled by this.
The way I have done it now, I have made a modification that will impact
all my projects.
The device-tree files are in the 'boards' directory which is common to
all projects.

So, say you have two different projects with different pinmux settings,
how do you do this?
Create two different 'boards' , and compile the two projects with a
different '-b' setting?
As you yourself guessed, the right way is to use devicetree overlays in
the project directories.

Please see the relevant items in the 'Devicetree HOWTOs' page in the
documentation's devicetree guide for more details on overlays in Zephyr.

https://docs.zephyrproject.org/latest/guides/dts/howtos.html

Hope this helps,
Martí




Kristoff


On 24.05.21 15:40, Kristoff Bonne wrote:
Hi all,


I have been experimenting with running zephyr on some nrf52840dongle
device that I bought some time ago.


According the document on this device, zephyr should support both i2c
and spi on these devices, and as the nrf52840 a pinmux it should be
possible to use any pin for this.
Looking at the devicetree file (*) it says that i2c uses pins 26 and
27 for i2c0, and 30 and 31 for i2c1, which is a bit strange as of
these 4 pins, the dongle only exposes ports 26 and 30. (No idea why
the person who created this dts-file chose those pins).



Question:

- How exactly does the devicetree on zephyr work?
Can I assume that if I would modify the dts file compile it and 'link'
that dto-file in the compilation address, I would be able to use other
pins?

- Am I correct to assume that the device-tree file actually instructs
some part of the boot-process to configure the pinmux in a certain
way? (so it's not just a reflection of the configuration of the pinmux
'as it', but it a configuration that is pushed to the pinmux)

- Where can I find information on how to actually do this?




(*) boards/arm/nrf52840dongle_nrf52840/nrf52840dongle_nrf52840.dts


Thanks in advance for any help!


Kr.







Re: question on devicetree (nrf52840dongle)

Kristoff Bonne
 

Hi all,


First, thanks to who reply off-list. :-)



I found the solution, so I will Just a reply for sake of the the mail-achive:
In contrast to the device-tree module on linux/*BSD, the devicetree source-files (i.e. the .dts file) are recompiled every time, so there is no need to first convert the .dts source-files in binary blobs.
In my case, as I just a hobbyist, I just modified the "nrf52840dongle_nrf52840.dts" file and that solved my issue. (Alhough I guess I would have needed to use an device-tree overlay file to do this the "proper" way).



But I am still a bit puzzled by this.
The way I have done it now, I have made a modification that will impact all my projects.
The device-tree files are in the 'boards' directory which is common to all projects.

So, say you have two different projects with different pinmux settings, how do you do this?
Create two different 'boards' , and compile the two projects with a different '-b' setting?



Kristoff

On 24.05.21 15:40, Kristoff Bonne wrote:
Hi all,


I have been experimenting with running zephyr on some nrf52840dongle device that I bought some time ago.


According the document on this device, zephyr should support both i2c and spi on these devices, and as the nrf52840 a pinmux it should be possible to use any pin for this.
Looking at the devicetree file (*) it says that i2c uses pins 26 and 27 for i2c0, and 30 and 31 for i2c1, which is a bit strange as of these 4 pins, the dongle only exposes ports 26 and 30. (No idea why the person who created this dts-file chose those pins).



Question:

- How exactly does the devicetree on zephyr work?
Can I assume that if I would modify the dts file compile it and 'link' that dto-file in the compilation address, I would be able to use other pins?

- Am I correct to assume that the device-tree file actually instructs some part of the boot-process to configure the pinmux in a certain way? (so it's not just a reflection of the configuration of the pinmux 'as it', but it a configuration that is pushed to the pinmux)

- Where can I find information on how to actually do this?




(*) boards/arm/nrf52840dongle_nrf52840/nrf52840dongle_nrf52840.dts


Thanks in advance for any help!


Kr.





question on devicetree (nrf52840dongle)

Kristoff Bonne
 

Hi all,


I have been experimenting with running zephyr on some nrf52840dongle device that I bought some time ago.


According the document on this device, zephyr should support both i2c and spi on these devices, and as the nrf52840 a pinmux it should be possible to use any pin for this.
Looking at the devicetree file (*) it says that i2c uses pins 26 and 27 for i2c0, and 30 and 31 for i2c1, which is a bit strange as of these 4 pins, the dongle only exposes ports 26 and 30. (No idea why the person who created this dts-file chose those pins).



Question:

- How exactly does the devicetree on zephyr work?
Can I assume that if I would modify the dts file compile it and 'link' that dto-file in the compilation address, I would be able to use other pins?

- Am I correct to assume that the device-tree file actually instructs some part of the boot-process to configure the pinmux in a certain way? (so it's not just a reflection of the configuration of the pinmux 'as it', but it a configuration that is pushed to the pinmux)

- Where can I find information on how to actually do this?




(*) boards/arm/nrf52840dongle_nrf52840/nrf52840dongle_nrf52840.dts


Thanks in advance for any help!


Kr.


STM32F723E-Disco: how to use USB in high-speed mode

Dirk-Jan C. Binnema
 

Dear List,

I'm trying to use the USB-OTG HS port on an STM32F723E Discovery Board
to mount a ramdisk on a Linux 5.11 host; this works fine in FS-mode;
however, I want to use high-speed mode instead.

In an overlay file I have:
------------------------------------------------------------
&usbotg_fs {
status = "disabled";
};

&usbotg_hs {
pinctrl-0 = <&usb_otg_hs_dm_pb14 &usb_otg_hs_dp_pb15>;
maximum-speed = "high-speed";
status = "okay";
};
------------------------------------------------------------
(based on the data sheet / some older posts)

This *almost* works, but Linux fails to mount (dmesg output):
------------------------------------------------------------
usb 1-3: new high-speed USB device number 6 using xhci_hcd
usb 1-3: device descriptor read/64, error -71
usb 1-3: config 1 interface 0 altsetting 0 bulk endpoint 0x81 has invalid maxpacket 64
usb 1-3: config 1 interface 0 altsetting 0 bulk endpoint 0x1 has invalid maxpacket 64
usb 1-3: New USB device found, idVendor=2fe3, idProduct=0100, bcdDevice= 2.06
usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-3: Product: USB-DEV
usb 1-3: Manufacturer: ZEPHYR
usb 1-3: SerialNumber: 363238313136510A
usb-storage 1-4.2:1.1: USB Mass Storage device detected
scsi host10: usb-storage 1-4.2:1.1
usb-storage 1-3:1.0: USB Mass Storage device detected
scsi host11: usb-storage 1-3:1.0
usbcore: registered new interface driver usb-storage
usbcore: registered new interface driver uas
scsi 11:0:0:0: Direct-Access ZEPHYR ZEPHYR USB DISK 0.01 PQ: 0 ANSI: 0 CCS
sd 11:0:0:0: Attached scsi generic sg2 type 0
sd 11:0:0:0: [sdc] 192 512-byte logical blocks: (98.3 kB/96.0 KiB)
sd 11:0:0:0: [sdc] Write Protect is off
sd 11:0:0:0: [sdc] Mode Sense: 03 00 00 00
sd 11:0:0:0: [sdc] No Caching mode page found
sd 11:0:0:0: [sdc] Assuming drive cache: write through
usb 1-3: reset high-speed USB device number 6 using xhci_hcd
usb 1-3: reset high-speed USB device number 6 using xhci_hcd
usb 1-3: reset high-speed USB device number 6 using xhci_hcd
usb 1-3: reset high-speed USB device number 6 using xhci_hcd
usb 1-3: reset high-speed USB device number 6 using xhci_hcd
usb 1-3: reset high-speed USB device number 6 using xhci_hcd
sd 11:0:0:0: [sdc] tag#0 FAILED Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK cmd_age=2s
sd 11:0:0:0: [sdc] tag#0 CDB: Read(10) 28 00 00 00 00 00 00 00 08 00
blk_update_request: I/O error, dev sdc, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
Buffer I/O error on dev sdc, logical block 0, async page read
sb 1-3: reset high-speed USB device number 6 using xhci_hcd
(repeating)
------------------------------------------------------------


Just for testing, When I set "maximum-speed" to "full-speed" in the
overlay (i.e, using the HS in FS mode), I get:


------------------------------------------------------------
usb 1-4: new full-speed USB device number 88 using xhci_hcd
usb 1-4: New USB device found, idVendor=2fe3, idProduct=0100, bcdDevice= 2.06
usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-4: Product: USB-DEV
usb 1-4: Manufacturer: ZEPHYR
usb 1-4: SerialNumber: 363238313136510A
usb-storage 1-4:1.0: USB Mass Storage device detected
scsi host11: usb-storage 1-4:1.0
scsi 11:0:0:0: Direct-Access ZEPHYR ZEPHYR USB DISK 0.01 PQ: 0 ANSI: 0 CCS
sd 11:0:0:0: Attached scsi generic sg3 type 0
sd 11:0:0:0: [sdd] 192 512-byte logical blocks: (98.3 kB/96.0 KiB)
sd 11:0:0:0: [sdd] Write Protect is off
sd 11:0:0:0: [sdd] Mode Sense: 03 00 00 00
sd 11:0:0:0: [sdd] No Caching mode page found
sd 11:0:0:0: [sdd] Assuming drive cache: write through
sdd:
sd 11:0:0:0: [sdd] Attached SCSI removable disk
------------------------------------------------------------

that gets me a little further, and I it even shows up in the linux file
browser as a mount-point browser ("98 KB Volume"); however, trying to
mount does not work (times out).

So to summarize, with the same code, using the FS-connection works; the
HS connection does not, even though it seems we're close.

Any idea of what I'm missing, or what I should check? Any insights very
much appreciated!

Kind regards,
Dirk.

--
Dirk-Jan C. Binnema Helsinki, Finland
e:djcb@djcbsoftware.nl w:www.djcbsoftware.nl
gpg: 6987 9CED 1745 9375 0F14 DA98 11DD FEA9 DCC4 A036


building espressif c++ project

iborco@...
 

Hi,

I have made a simple C++ project using Zephyr, to check if I can use various C++ features from Zephyr - for this particular one, I'm just trying to include the <algorithms> header.

The builds work with the gnuarmemb toolchain (for a nRF52833 board), but fails when I try to build it with the espressif toolchain.

The build output is bellow. The project files are attached.

Any idea how to fix this?

Thank you.

west build -b esp32
-- west build: generating a build system
Including boilerplate (Zephyr base): /Users/borco/zephyrproject/zephyr/cmake/app/boilerplate.cmake
-- Application: /Users/borco/01-basic-app
-- Zephyr version: 2.6.0-rc1 (/Users/borco/zephyrproject/zephyr), build: v2.6.0-rc1-120-g41e885947e4f
-- Found Python3: /Users/borco/.pyenv/versions/3.9.1/Python.framework/Versions/3.9/bin/python3.9 (found suitable exact version "3.9.1") found components: Interpreter
-- Found west (found suitable version "0.11.0", minimum required is "0.7.1")
-- Board: esp32
-- Cache files will be written to: /Users/borco/Library/Caches/zephyr
-- Found dtc: /usr/local/bin/dtc (found suitable version "1.6.0", minimum required is "1.4.6")
-- Found toolchain: espressif (/Users/borco/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf)
-- Found BOARD.dts: /Users/borco/zephyrproject/zephyr/boards/xtensa/esp32/esp32.dts
-- Generated zephyr.dts: /Users/borco/01-basic-app/build/zephyr/zephyr.dts
-- Generated devicetree_unfixed.h: /Users/borco/01-basic-app/build/zephyr/include/generated/devicetree_unfixed.h
-- Generated device_extern.h: /Users/borco/01-basic-app/build/zephyr/include/generated/device_extern.h
Parsing /Users/borco/zephyrproject/zephyr/Kconfig
Loaded configuration '/Users/borco/zephyrproject/zephyr/boards/xtensa/esp32/esp32_defconfig'
Merged configuration '/Users/borco/01-basic-app/prj.conf'
Configuration saved to '/Users/borco/01-basic-app/build/zephyr/.config'
Kconfig header saved to '/Users/borco/01-basic-app/build/zephyr/include/generated/autoconf.h'
-- The C compiler identification is GNU 8.4.0
-- The CXX compiler identification is GNU 8.4.0
-- The ASM compiler identification is GNU
-- Found assembler: /Users/borco/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
CMake Deprecation Warning at /Users/borco/zephyrproject/modules/lib/civetweb/CMakeLists.txt:2 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Configuring done
CMake Warning (dev) at /Users/borco/zephyrproject/zephyr/cmake/linker/ld/target.cmake:33 (add_custom_command):
  Policy CMP0116 is not set: Ninja generators transform DEPFILEs from
  add_custom_command().  Run "cmake --help-policy CMP0116" for policy
  details.  Use the cmake_policy command to set the policy and suppress this
  warning.
Call Stack (most recent call first):
  /Users/borco/zephyrproject/zephyr/CMakeLists.txt:1198 (configure_linker_script)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at /Users/borco/zephyrproject/zephyr/cmake/linker/ld/target.cmake:33 (add_custom_command):
  Policy CMP0116 is not set: Ninja generators transform DEPFILEs from
  add_custom_command().  Run "cmake --help-policy CMP0116" for policy
  details.  Use the cmake_policy command to set the policy and suppress this
  warning.
Call Stack (most recent call first):
  /Users/borco/zephyrproject/zephyr/CMakeLists.txt:1253 (configure_linker_script)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Generating done
-- Build files have been written to: /Users/borco/01-basic-app/build
-- west build: building application
[1/130] Preparing syscall dependency handling

[55/130] Performing configure step for 'EspIdfBootloader'
CMake Warning at /Users/borco/zephyrproject/modules/hal/espressif/tools/cmake/idf.cmake:24 (message):
  IDF_PATH environment variable not found.  Setting IDF_PATH to
  '/Users/borco/zephyrproject/modules/hal/espressif'.
Call Stack (most recent call first):
  /Users/borco/zephyrproject/modules/hal/espressif/tools/cmake/project.cmake:7 (include)
  CMakeLists.txt:20 (include)


-- Found Git: /usr/local/bin/git (found version "2.31.1")
-- The C compiler identification is GNU 8.4.0
-- The CXX compiler identification is GNU 8.4.0
-- The ASM compiler identification is GNU
-- Found assembler: /Users/borco/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Users/borco/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Users/borco/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Building ESP-IDF components for target esp32
-- Adding linker script /Users/borco/zephyrproject/modules/hal/espressif/components/esp32/ld/esp32.peripherals.ld
-- Adding linker script /Users/borco/zephyrproject/modules/hal/espressif/components/esp_rom/esp32/ld/esp32.rom.ld
-- Adding linker script /Users/borco/zephyrproject/modules/hal/espressif/components/esp_rom/esp32/ld/esp32.rom.newlib-funcs.ld
-- Adding linker script /Users/borco/zephyrproject/modules/hal/espressif/components/esp_rom/esp32/ld/esp32.rom.libgcc.ld
-- Adding linker script /Users/borco/zephyrproject/modules/hal/espressif/components/bootloader/subproject/main/ld/esp32/bootloader.ld
-- Adding linker script /Users/borco/zephyrproject/modules/hal/espressif/components/bootloader/subproject/main/ld/esp32/bootloader.rom.ld
-- Components: bootloader bootloader_support efuse esp32 esp_common esp_rom esptool_py log main micro-ecc partition_table soc spi_flash xtensa
-- Component paths: /Users/borco/zephyrproject/modules/hal/espressif/components/bootloader /Users/borco/zephyrproject/modules/hal/espressif/components/bootloader_support /Users/borco/zephyrproject/modules/hal/espressif/components/efuse /Users/borco/zephyrproject/modules/hal/espressif/components/esp32 /Users/borco/zephyrproject/modules/hal/espressif/components/esp_common /Users/borco/zephyrproject/modules/hal/espressif/components/esp_rom /Users/borco/zephyrproject/modules/hal/espressif/components/esptool_py /Users/borco/zephyrproject/modules/hal/espressif/components/log /Users/borco/zephyrproject/modules/hal/espressif/components/bootloader/subproject/main /Users/borco/zephyrproject/modules/hal/espressif/components/bootloader/subproject/components/micro-ecc /Users/borco/zephyrproject/modules/hal/espressif/components/partition_table /Users/borco/zephyrproject/modules/hal/espressif/components/soc /Users/borco/zephyrproject/modules/hal/espressif/components/spi_flash /Users/borco/zephyrproject/modules/hal/espressif/components/xtensa
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/borco/01-basic-app/build/esp-idf/build/bootloader
[78/130] Building C object zephyr/lib/posix/CMakeFiles/lib__posix.dir/pthread_common.c.obj
FAILED: zephyr/lib/posix/CMakeFiles/lib__posix.dir/pthread_common.c.obj
ccache /Users/borco/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc -DBUILD_VERSION=v2.6.0-rc1-120-g41e885947e4f -DKERNEL -D_FORTIFY_SOURCE=2 -D__LINUX_ERRNO_EXTENSIONS__ -D__ZEPHYR__=1 -I/Users/borco/zephyrproject/zephyr/kernel/include -I/Users/borco/zephyrproject/zephyr/arch/xtensa/include -I/Users/borco/zephyrproject/zephyr/include -Izephyr/include/generated -I/Users/borco/zephyrproject/zephyr/soc/xtensa/esp32 -I/Users/borco/zephyrproject/zephyr/soc/xtensa/esp32/include -I/Users/borco/zephyrproject/zephyr/lib/libc/newlib/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/adapter/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/adapter/include/bt -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/adapter/include/crypto -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/adapter/include/wifi -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp_common/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp_rom/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp32/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/soc/esp32/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/xtensa/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/xtensa/esp32/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/soc/soc/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/soc/soc/esp32/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/soc/soc/esp32/private_include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/soc/include/soc -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/soc/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/soc/src/esp32/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/driver/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/soc/soc/esp32 -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp_wifi/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/efuse/esp32/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/efuse/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp_system/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp_wifi/esp32/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp_timer/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp_timer/private_include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp_netif/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp_event/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/log/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/wpa_supplicant/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/wpa_supplicant/port/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/wpa_supplicant/src -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/wpa_supplicant/include/esp_supplicant -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/wpa_supplicant/src/crypto -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/spi_flash/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/spi_flash/private_include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/bootloader_support/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/bootloader_support/include_bootloader -Os -imacros /Users/borco/01-basic-app/build/zephyr/include/generated/autoconf.h -ffreestanding -fno-common -g -fdiagnostics-color=always -imacros /Users/borco/zephyrproject/zephyr/include/toolchain/zephyr_stdint.h -Wall -Wformat -Wformat-security -Wno-format-zero-length -Wno-main -Wno-pointer-sign -Wpointer-arith -Wexpansion-to-defined -Wno-unused-but-set-variable -Werror=implicit-int -fno-asynchronous-unwind-tables -fno-pie -fno-pic -fno-strict-overflow -fno-reorder-functions -fno-defer-pop -fmacro-prefix-map=/Users/borco/01-basic-app=CMAKE_SOURCE_DIR -fmacro-prefix-map=/Users/borco/zephyrproject/zephyr=ZEPHYR_BASE -fmacro-prefix-map=/Users/borco/zephyrproject=WEST_TOPDIR -ffunction-sections -fdata-sections -mlongcalls -std=c99 -MD -MT zephyr/lib/posix/CMakeFiles/lib__posix.dir/pthread_common.c.obj -MF zephyr/lib/posix/CMakeFiles/lib__posix.dir/pthread_common.c.obj.d -o zephyr/lib/posix/CMakeFiles/lib__posix.dir/pthread_common.c.obj -c /Users/borco/zephyrproject/zephyr/lib/posix/pthread_common.c
In file included from /Users/borco/zephyrproject/zephyr/lib/posix/pthread_common.c:10:
/Users/borco/zephyrproject/zephyr/include/posix/time.h:90:15: error: static declaration of 'clock_gettime' follows non-static declaration
 __syscall int clock_gettime(clockid_t clock_id, struct timespec *ts);
               ^~~~~~~~~~~~~
In file included from /Users/borco/zephyrproject/zephyr/include/posix/time.h:12,
                 from /Users/borco/zephyrproject/zephyr/lib/posix/pthread_common.c:10:
/Users/borco/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/xtensa-esp32-elf/sys-include/time.h:187:5: note: previous declaration of 'clock_gettime' was here
 int clock_gettime (clockid_t clock_id, struct timespec *tp);
     ^~~~~~~~~~~~~
In file included from /Users/borco/zephyrproject/zephyr/lib/posix/pthread_common.c:10:
/Users/borco/zephyrproject/zephyr/include/posix/time.h:94:5: error: conflicting types for 'timer_create'
 int timer_create(clockid_t clockId, struct sigevent *evp, timer_t *timerid);
     ^~~~~~~~~~~~
In file included from /Users/borco/zephyrproject/zephyr/include/posix/time.h:12,
                 from /Users/borco/zephyrproject/zephyr/lib/posix/pthread_common.c:10:
/Users/borco/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/xtensa-esp32-elf/sys-include/time.h:192:5: note: previous declaration of 'timer_create' was here
 int timer_create (clockid_t clock_id,
     ^~~~~~~~~~~~
[79/130] Building C object zephyr/lib/posix/CMakeFiles/lib__posix.dir/nanosleep.c.obj
FAILED: zephyr/lib/posix/CMakeFiles/lib__posix.dir/nanosleep.c.obj
ccache /Users/borco/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc -DBUILD_VERSION=v2.6.0-rc1-120-g41e885947e4f -DKERNEL -D_FORTIFY_SOURCE=2 -D__LINUX_ERRNO_EXTENSIONS__ -D__ZEPHYR__=1 -I/Users/borco/zephyrproject/zephyr/kernel/include -I/Users/borco/zephyrproject/zephyr/arch/xtensa/include -I/Users/borco/zephyrproject/zephyr/include -Izephyr/include/generated -I/Users/borco/zephyrproject/zephyr/soc/xtensa/esp32 -I/Users/borco/zephyrproject/zephyr/soc/xtensa/esp32/include -I/Users/borco/zephyrproject/zephyr/lib/libc/newlib/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/adapter/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/adapter/include/bt -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/adapter/include/crypto -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/adapter/include/wifi -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp_common/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp_rom/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp32/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/soc/esp32/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/xtensa/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/xtensa/esp32/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/soc/soc/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/soc/soc/esp32/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/soc/soc/esp32/private_include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/soc/include/soc -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/soc/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/soc/src/esp32/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/driver/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/soc/soc/esp32 -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp_wifi/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/efuse/esp32/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/efuse/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp_system/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp_wifi/esp32/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp_timer/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp_timer/private_include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp_netif/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/esp_event/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/log/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/wpa_supplicant/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/wpa_supplicant/port/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/wpa_supplicant/src -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/wpa_supplicant/include/esp_supplicant -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/wpa_supplicant/src/crypto -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/spi_flash/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/spi_flash/private_include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/bootloader_support/include -I/Users/borco/zephyrproject/modules/hal/espressif/zephyr/../components/bootloader_support/include_bootloader -Os -imacros /Users/borco/01-basic-app/build/zephyr/include/generated/autoconf.h -ffreestanding -fno-common -g -fdiagnostics-color=always -imacros /Users/borco/zephyrproject/zephyr/include/toolchain/zephyr_stdint.h -Wall -Wformat -Wformat-security -Wno-format-zero-length -Wno-main -Wno-pointer-sign -Wpointer-arith -Wexpansion-to-defined -Wno-unused-but-set-variable -Werror=implicit-int -fno-asynchronous-unwind-tables -fno-pie -fno-pic -fno-strict-overflow -fno-reorder-functions -fno-defer-pop -fmacro-prefix-map=/Users/borco/01-basic-app=CMAKE_SOURCE_DIR -fmacro-prefix-map=/Users/borco/zephyrproject/zephyr=ZEPHYR_BASE -fmacro-prefix-map=/Users/borco/zephyrproject=WEST_TOPDIR -ffunction-sections -fdata-sections -mlongcalls -std=c99 -MD -MT zephyr/lib/posix/CMakeFiles/lib__posix.dir/nanosleep.c.obj -MF zephyr/lib/posix/CMakeFiles/lib__posix.dir/nanosleep.c.obj.d -o zephyr/lib/posix/CMakeFiles/lib__posix.dir/nanosleep.c.obj -c /Users/borco/zephyrproject/zephyr/lib/posix/nanosleep.c
In file included from /Users/borco/zephyrproject/zephyr/lib/posix/nanosleep.c:12:
/Users/borco/zephyrproject/zephyr/include/posix/time.h:90:15: error: static declaration of 'clock_gettime' follows non-static declaration
 __syscall int clock_gettime(clockid_t clock_id, struct timespec *ts);
               ^~~~~~~~~~~~~
In file included from /Users/borco/zephyrproject/zephyr/include/posix/time.h:12,
                 from /Users/borco/zephyrproject/zephyr/lib/posix/nanosleep.c:12:
/Users/borco/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/xtensa-esp32-elf/sys-include/time.h:187:5: note: previous declaration of 'clock_gettime' was here
 int clock_gettime (clockid_t clock_id, struct timespec *tp);
     ^~~~~~~~~~~~~
In file included from /Users/borco/zephyrproject/zephyr/lib/posix/nanosleep.c:12:
/Users/borco/zephyrproject/zephyr/include/posix/time.h:94:5: error: conflicting types for 'timer_create'
 int timer_create(clockid_t clockId, struct sigevent *evp, timer_t *timerid);
     ^~~~~~~~~~~~
In file included from /Users/borco/zephyrproject/zephyr/include/posix/time.h:12,
                 from /Users/borco/zephyrproject/zephyr/lib/posix/nanosleep.c:12:
/Users/borco/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/xtensa-esp32-elf/sys-include/time.h:192:5: note: previous declaration of 'timer_create' was here
 int timer_create (clockid_t clock_id,
     ^~~~~~~~~~~~
[83/130] Performing build step for 'EspIdfBootloader'
[1/101] Generating project_elf_src.c
[2/101] Building C object CMakeFiles/bootloader.elf.dir/project_elf_src.c.obj
[3/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/lldesc.c.obj
[4/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/cpu_hal.c.obj
[5/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/memory_layout_utils.c.obj
[6/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/cpu_util.c.obj
[7/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/rmt_hal.c.obj
[8/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/dac_hal.c.obj
[9/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/adc_hal.c.obj
[10/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/rtc_io_hal.c.obj
[11/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/soc_include_legacy_warn.c.obj
[12/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/spi_slave_hal.c.obj
[13/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/pcnt_hal.c.obj
[14/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/spi_hal.c.obj
[15/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/spi_slave_hal_iram.c.obj
[16/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/touch_sensor_hal.c.obj
[17/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/sigmadelta_hal.c.obj
[18/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/ledc_hal.c.obj
[19/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/timer_hal.c.obj
[20/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/ledc_hal_iram.c.obj
[21/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/gpio_hal.c.obj
[22/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/i2c_hal_iram.c.obj
[23/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/spi_hal_iram.c.obj
[24/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/uart_hal_iram.c.obj
[25/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/spi_flash_hal.c.obj
[26/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/mpu_hal.c.obj
[27/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/i2c_hal.c.obj
[28/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/soc_hal.c.obj
[29/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/i2s_hal.c.obj
[30/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/compare_set.c.obj
[31/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/uart_hal.c.obj
[32/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/twai_hal.c.obj
[33/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/wdt_hal_iram.c.obj
[34/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/spi_flash_hal_iram.c.obj
[35/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/esp32/brownout_hal.c.obj
[36/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/esp32/adc_hal.c.obj
[37/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/esp32/rtc_pm.c.obj
[38/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/esp32/rtc_init.c.obj
[39/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/esp32/rtc_clk_init.c.obj
[40/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/esp32/rtc_time.c.obj
[41/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/esp32/rtc_wdt.c.obj
[42/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/esp32/soc_memory_layout.c.obj
[43/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/mcpwm_hal.c.obj
[44/101] Building C object esp-idf/soc/soc/esp32/CMakeFiles/soc_esp32.dir/adc_periph.c.obj
[45/101] Building C object esp-idf/soc/soc/esp32/CMakeFiles/soc_esp32.dir/dac_periph.c.obj
[46/101] Building C object esp-idf/soc/soc/esp32/CMakeFiles/soc_esp32.dir/gpio_periph.c.obj
[47/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/esp32/touch_sensor_hal.c.obj
[48/101] Building C object esp-idf/soc/soc/esp32/CMakeFiles/soc_esp32.dir/rtc_periph.c.obj
[49/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/esp32/rtc_sleep.c.obj
[50/101] Building C object esp-idf/soc/soc/esp32/CMakeFiles/soc_esp32.dir/rtc_io_periph.c.obj
[51/101] Building C object esp-idf/soc/soc/esp32/CMakeFiles/soc_esp32.dir/sdmmc_periph.c.obj
[52/101] Building C object esp-idf/soc/soc/esp32/CMakeFiles/soc_esp32.dir/interrupts.c.obj
[53/101] Building C object esp-idf/soc/soc/esp32/CMakeFiles/soc_esp32.dir/sdio_slave_periph.c.obj
[54/101] Building C object esp-idf/soc/soc/esp32/CMakeFiles/soc_esp32.dir/ledc_periph.c.obj
[55/101] Building C object esp-idf/soc/soc/esp32/CMakeFiles/soc_esp32.dir/spi_periph.c.obj
[56/101] Building C object esp-idf/soc/soc/esp32/CMakeFiles/soc_esp32.dir/i2s_periph.c.obj
[57/101] Building C object esp-idf/soc/soc/esp32/CMakeFiles/soc_esp32.dir/i2c_periph.c.obj
[58/101] Building C object esp-idf/soc/soc/esp32/CMakeFiles/soc_esp32.dir/uart_periph.c.obj
[59/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/esp32/rtc_clk.c.obj
[60/101] Building C object esp-idf/soc/soc/esp32/CMakeFiles/soc_esp32.dir/touch_sensor_periph.c.obj
[61/101] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/src/hal/sdio_slave_hal.c.obj
[62/101] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/log_noos.c.obj
[63/101] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32/esp_efuse_table.c.obj
[64/101] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp32/esp_efuse_api.c.obj
[65/101] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/log.c.obj
[66/101] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/log_buffers.c.obj
[67/101] Linking C static library esp-idf/log/liblog.a
[68/101] Linking C static library esp-idf/soc/soc/esp32/libsoc_esp32.a
[69/101] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp32/esp_efuse_fields.c.obj
[70/101] Linking C static library esp-idf/soc/libsoc.a
[71/101] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_fields.c.obj
[72/101] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp32/esp_efuse_utility.c.obj
[73/101] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_api.c.obj
[74/101] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_clock.c.obj
[75/101] Building C object esp-idf/spi_flash/CMakeFiles/__idf_spi_flash.dir/esp32/spi_flash_rom_patch.c.obj
[76/101] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_mem.c.obj
[77/101] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_random.c.obj
[78/101] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_flash.c.obj
[79/101] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_utility.c.obj
[80/101] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/flash_encrypt.c.obj
[81/101] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_random_esp32.c.obj
[82/101] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_common.c.obj
[83/101] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/flash_partitions.c.obj
[84/101] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_efuse_esp32.c.obj
[85/101] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_flash_config_esp32.c.obj
[86/101] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/flash_qio_mode.c.obj
[87/101] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_init.c.obj
[88/101] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp32/bootloader_sha.c.obj
[89/101] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/bootloader_start.c.obj
[90/101] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_utility.c.obj
[91/101] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp_image_format.c.obj
[92/101] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp32/flash_encrypt.c.obj
[93/101] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp32/bootloader_esp32.c.obj
[94/101] Building C object esp-idf/micro-ecc/CMakeFiles/__idf_micro-ecc.dir/uECC_verify_antifault.c.obj
[95/101] Linking C static library esp-idf/micro-ecc/libmicro-ecc.a
[96/101] Linking C static library esp-idf/bootloader_support/libbootloader_support.a
[97/101] Linking C static library esp-idf/efuse/libefuse.a
[98/101] Linking C static library esp-idf/spi_flash/libspi_flash.a
[99/101] Linking C static library esp-idf/main/libmain.a
[100/101] Linking C executable bootloader.elf
[101/101] Generating binary image from built executable
esptool.py v3.0
Generated /Users/borco/01-basic-app/build/esp-idf/build/bootloader/bootloader.bin
ninja: build stopped: subcommand failed.
FATAL ERROR: command exited with status 1: /usr/local/bin/cmake --build /Users/borco/01-basic-app/build


How to perform DFU over BLE of the peripheral device using Bluetooth: HCI UART based board connected with linux board? #hci_uart #nrf52840 #ble

bhavya.mathukiya@...
 

Hi

I want to do the OTA of my nrf52840 based peripheral device through nrf52840(Bluetooth: HCI UART) based Linux gateway. Below is the setup of my project. I know I can perform the OTA of the peripheral device using nrfutil tool by nordic but that is required to have special firmware (connectivity firmware) on the nordic module of linux board. In my case nordic module is having Zephyr Bluetooth: HCI UART application. So is there any solution available to do OTA over BLE using Zephyr Bluetooth: HCI UART application? Any starting point will be helpful to me.



Thankyou,
Bhavya


bluetooth init error -90

Smitha Ratnam
 

Hi,

We are trying to use the silicon labs thunderboard sense2 SLTB004A device with bluetooth. 
When we program the device the zephyr beacon sample, we get the following error:



* Booting Zephyr OS build zephyr-v2.5.0-3011-gb61c23943c6f  * Starting Beacon Demo Bluetooth init failed (err -19) [00:00:00.007,000] <err> bt_hci_core: No HCI driver registered
What are we supposed to do to get the bluetooth on the device initialised?
Does Zephyr support the device for bluetooth?

Thanks and regards,
Smitha.


Changing default branch name on GitHub - action required

Kumar Gala
 

We will be changing the default branch on github from 'master' to 'main' on Friday (May 14, 2021).

There is no action required for any open PRs, however you'll need to update your local git clone as follows:

git branch -m master main
git fetch origin
git branch -u origin/main main

You'll need to be utilizing at least west 0.10.1 or later.

Will announce here when this change is made on Friday.

I’ve also opened this GitHub discussion on this topic as well:

https://github.com/zephyrproject-rtos/zephyr/discussions/35230

thanks

- k

61 - 80 of 2654