Date   

Re: logging subsys questions / concerns

Zięcik, Piotr <piotr.ziecik@...>
 

5) What does it mean if CONFIG_LOG_INPLACE_PROCESS=n, but
CONFIG_LOG_PROCESS_THREAD=n? Can we simplify our Kconfigs?
Krch: It is possible to use deferred mode and not use the thread. Most likely that would be the case when multithreading is disabled.
Still not quite following you, but I'll look at the code some more.
Hi.

Since Krzysztof already left the office, I will try to answer that.

When logs are deffered, you need to call LOG_PROCESS() periodically to format log messages and push them to the backends.
If CONFIG_LOG_PROCESS_THREAD=y, you are creating dedicated thread which does that for you and you just don't care about
that in your application. If the CONFIG_LOG_PROCESS_THREAD is set to n, then calling LOG_PROCESS() is the application responsibility.
Also, if multithreading is disabled, "manual" calling of LOG_PROCESS() becomes the only way to use deffered logs.

PIOTR ZIĘCIK | Senior Firmware Engineer
M +48 698 726 973| Kraków, Poland
nordicsemi.com | devzone.nordicsemi.com


-----Original Message-----
From: devel@lists.zephyrproject.org <devel@lists.zephyrproject.org> On Behalf Of Boie, Andrew P
Sent: Thursday, November 29, 2018 6:28 PM
To: Cufi, Carles <Carles.Cufi@nordicsemi.no>; Chruściński, Krzysztof <Krzysztof.Chruscinski@nordicsemi.no>; zephyr-devel <zephyr-devel@lists.zephyrproject.org>; Rzeszutko, Jakub <Jakub.Rzeszutko@nordicsemi.no>
Cc: zephyr-devel <zephyr-devel@lists.zephyrproject.org>
Subject: Re: [Zephyr-devel] logging subsys questions / concerns

Hi Krzystof,

For some reason I did not get your email, Carles had to forward to me.

1) The default priority of the logging thread is -2. This is a very
high non preemptive priority. I don't understand why the logging
background thread doesn't run at the lowest preemptible priority on
the system, like the idle thread. If people are running out of buffer
space then they need to make their buffers bigger or switch to synchronous logging.
Krch:  Intention was to set it to the lowest possible value - K_LOWEST_APPLICATION_THREAD_PRIO. Now I've noticed that it's -2 only when CONFIG_PREEMPT_ENABLED is set. So it can be updated or fixed to K_LOWEST_APPLICATION_THREAD_PRIO in the code.

apboie: OK cool

I think we need to move the
invocation of LOG_PANIC until *much* later, when we decide we need to
hang the system instead of just aborting the faulting thread.
Krch: please suggest the better place. Note that ideally it should be as early as possible when non-recoverable error is hit since by doing that we reduce the risk of losing any logs (as before panic we keep using msg pool so there is a chance of overflow).

apboie: Good point, we don't want to deal with overflow in this situation. I think what we need is an API call to clear the panic mode state if _SysFatalErrorHandler() decides not to hang the system, immediately before the API call to k_thread_abort().

3) It does not appear that there is any support for invoking LOG()
macros from user mode, which severely limits its usability. Until
there is an answer to this, conversations about default mapping
printk() to the log subsystem really scare me. Is LOG intended to be
used by end user applications or just internally to the kernel?
Krch: currenly it is not supported, should be addded

apboie: Cool. I can help with this. I'll open a bug.

I think CONFIG_LOG_PROCESS_SLEEP_MS and
CONFIG_LOG_PROCESS_TRIGGER_THRESHOLD should be completely removed.
Krch: Speed was the purpose of not using semaphores and sticking to simple counter. Currently, it takes ~250 cycles (nrf52 - ~4us @64MHz) to log an average log message (up to 2 arguments). k_sem_give would add 1,5us so logging time would increase 4us->5,5us. Is that acceptable? I don't know. What do we gain? Solution is cleaner. Is it worth ~35% performance degradation?

apboie: I think the k_sleep() call in the log thread is not ideal, the system might be idle and have some bandwidth to dump logs, but instead the log thread can be sitting there in a sleep() call. In addition the log thread will be waking up all the time even when it has nothing to do.

As mentioned in my follow-up email, what I really think we need is instead of a semaphore, drop the custom list implementation and just use a k_queue. They are fast, are callable from IRQ context, and with the variant k_queue_alloc_append() API, also callable from user mode (when we cross that bridge). Producer-consumer problems like this are what k_queues are intended for.

If you can show using a k_queue would add a lot of overhead I could be convinced otherwise, but I really thing we should pursue this route as it will also make the code simpler and let the scheduler do its job. How are you measuring latencies btw?

5) What does it mean if CONFIG_LOG_INPLACE_PROCESS=n, but
CONFIG_LOG_PROCESS_THREAD=n? Can we simplify our Kconfigs?
Krch: It is possible to use deferred mode and not use the thread. Most likely that would be the case when multithreading is disabled.

Still not quite following you, but I'll look at the code some more.

Andrew


Re: logging subsys questions / concerns

Boie, Andrew P
 

Hi Krzystof,

For some reason I did not get your email, Carles had to forward to me.

1) The default priority of the logging thread is -2. This is a very
high non preemptive priority. I don't understand why the logging
background thread doesn't run at the lowest preemptible priority on
the system, like the idle thread. If people are running out of buffer
space then they need to make their buffers bigger or switch to synchronous logging.
Krch:  Intention was to set it to the lowest possible value - K_LOWEST_APPLICATION_THREAD_PRIO. Now I've noticed that it's -2 only when CONFIG_PREEMPT_ENABLED is set. So it can be updated or fixed to K_LOWEST_APPLICATION_THREAD_PRIO in the code.

apboie: OK cool

I think we need to move the
invocation of LOG_PANIC until *much* later, when we decide we need to
hang the system instead of just aborting the faulting thread.
Krch: please suggest the better place. Note that ideally it should be as early as possible when non-recoverable error is hit since by doing that we reduce the risk of losing any logs (as before panic we keep using msg pool so there is a chance of overflow).

apboie: Good point, we don't want to deal with overflow in this situation. I think what we need is an API call to clear the panic mode state if _SysFatalErrorHandler() decides not to hang the system, immediately before the API call to k_thread_abort().

3) It does not appear that there is any support for invoking LOG()
macros from user mode, which severely limits its usability. Until
there is an answer to this, conversations about default mapping
printk() to the log subsystem really scare me. Is LOG intended to be
used by end user applications or just internally to the kernel?
Krch: currenly it is not supported, should be addded

apboie: Cool. I can help with this. I'll open a bug.

I think CONFIG_LOG_PROCESS_SLEEP_MS and
CONFIG_LOG_PROCESS_TRIGGER_THRESHOLD should be completely removed.
Krch: Speed was the purpose of not using semaphores and sticking to simple counter. Currently, it takes ~250 cycles (nrf52 - ~4us @64MHz) to log an average log message (up to 2 arguments). k_sem_give would add 1,5us so logging time would increase 4us->5,5us. Is that acceptable? I don't know. What do we gain? Solution is cleaner. Is it worth ~35% performance degradation?

apboie: I think the k_sleep() call in the log thread is not ideal, the system might be idle and have some bandwidth to dump logs, but instead the log thread can be sitting there in a sleep() call. In addition the log thread will be waking up all the time even when it has nothing to do.

As mentioned in my follow-up email, what I really think we need is instead of a semaphore, drop the custom list implementation and just use a k_queue. They are fast, are callable from IRQ context, and with the variant k_queue_alloc_append() API, also callable from user mode (when we cross that bridge). Producer-consumer problems like this are what k_queues are intended for.

If you can show using a k_queue would add a lot of overhead I could be convinced otherwise, but I really thing we should pursue this route as it will also make the code simpler and let the scheduler do its job. How are you measuring latencies btw?

5) What does it mean if CONFIG_LOG_INPLACE_PROCESS=n, but
CONFIG_LOG_PROCESS_THREAD=n? Can we simplify our Kconfigs?
Krch: It is possible to use deferred mode and not use the thread. Most likely that would be the case when multithreading is disabled.

Still not quite following you, but I'll look at the code some more.

Andrew


Re: logging subsys questions / concerns

Carles Cufi
 

Re-sending since apparently this email never reached its destination.

 

From: Chruściński, Krzysztof <Krzysztof.Chruscinski@...>
Sent: 29 November 2018 07:54
To: Cufi, Carles <Carles.Cufi@...>; Boie, Andrew P <andrew.p.boie@...>; zephyr-devel <zephyr-devel@...>; Rzeszutko, Jakub <Jakub.Rzeszutko@...>
Subject: RE: logging subsys questions / concerns

 

Hi Andrew,

 

Thanks for valid feedback. I’ve put my comments below.

 

Regards,

Krzysztof

 

-----Original Message-----
From: Cufi, Carles
Sent: Wednesday, November 28, 2018 9:40 PM
To: Boie, Andrew P <andrew.p.boie@...>; zephyr-devel <zephyr-devel@...>; Chruściński, Krzysztof <Krzysztof.Chruscinski@...>; Rzeszutko, Jakub <Jakub.Rzeszutko@...>
Subject: RE: logging subsys questions / concerns

 

Hi Andrew,

 

Thanks for all the feedback.

As agreed on Slack I am copying Krzysztof and Jakub here so that they see your comments and then, if applicable, we can create one or more issues alongside the ones that Paul has already opened.

 

Regards,

 

Carles

 

> -----Original Message-----

> From: devel@... <devel@...> On

> Behalf Of Boie, Andrew P

> Sent: 28 November 2018 21:01

> To: zephyr-devel <zephyr-devel@...>

> Subject: [Zephyr-devel] logging subsys questions / concerns

>

> I've been looking at the logging subsystem code and I wanted to bring

> up some topics.

>

> 1) The default priority of the logging thread is -2. This is a very

> high non preemptive priority. I don't understand why the logging

> background thread doesn't run at the lowest preemptible priority on

> the system, like the idle thread. If people are running out of buffer

> space then they need to make their buffers bigger or switch to synchronous logging.

Krch:  Intention was to set it to the lowest possible value - K_LOWEST_APPLICATION_THREAD_PRIO. Now I’ve noticed that it’s -2 only when CONFIG_PREEMPT_ENABLED is set. So it can be updated or fixed to K_LOWEST_APPLICATION_THREAD_PRIO in the code.

 

> 2) The panic mode handling is not correct. It gets called from

> _NanoFatalErrorHandler, which flushes the log and then sets the

> panic_mode global *permanently* to true. This is not a good policy.

> NanoFatalErrorHandler getting called does not necessarily mean that

> the system has completely crashed, it's quite possible that the damage

> is limited to one thread dying, with the rest of the threads (and the

> overall system) still running just fine. I think we need to move the

> invocation of LOG_PANIC until *much* later, when we decide we need to

> hang the system instead of just aborting the faulting thread.

Krch: please suggest the better place. Note that ideally it should be as early as possible when non-recoverable error is hit since by doing that we reduce the risk of losing any logs (as before panic we keep using msg pool so there is a chance of overflow).

>

> 3) It does not appear that there is any support for invoking LOG()

> macros from user mode, which severely limits its usability. Until

> there is an answer to this, conversations about default mapping

> printk() to the log subsystem really scare me. Is LOG intended to be

> used by end user applications or just internally to the kernel?

Krch: currenly it is not supported, should be addded

>

> 4) The synchronization between threads invoking log points, and the

> background logging thread, do not make sense to me, and seem to be a

> way of dealing with making the log thread default to a very high non-

> preemptible priority, which I already complained about.

>

> I think CONFIG_LOG_PROCESS_SLEEP_MS and

> CONFIG_LOG_PROCESS_TRIGGER_THRESHOLD should be completely removed.

> Introduce a k_sem with initial count 0 and max count UINT_MAX. Log

> points have the caller give the semaphore every time something is

> added to the log buffer, and have the background thread simply do a

> blocking k_sem_take(). So much simpler, and we rely on the scheduler

> to do its job instead of this weird setup where the log thread is high

> priority but sleeps for hard-coded intervals.

Krch: Speed was the purpose of not using semaphores and sticking to simple counter. Currently, it takes ~250 cycles (nrf52 - ~4us @64MHz) to log an average log message (up to 2 arguments). k_sem_give would add 1,5us so logging time would increase 4us->5,5us. Is that acceptable? I don’t know. What do we gain? Solution is cleaner. Is it worth ~35% performance degradation?

>

> 5) What does it mean if CONFIG_LOG_INPLACE_PROCESS=n, but

> CONFIG_LOG_PROCESS_THREAD=n? Can we simplify our Kconfigs?

Krch: It is possible to use deferred mode and not use the thread. Most likely that would be the case when multithreading is disabled.

>

>

>

 


Re: Opus codec on nrf52840

Zięcik, Piotr <piotr.ziecik@...>
 

Hello.

 

I can recommend looking into https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRFready-Smart-Remote-3-for-nRF52-Series

Unfortunately it is not based on the Zephyr, however it implements audio streaming using Opus and contains an optimized version of the codec

(with reduced memory requirements as well as using DPS extensions available on the Nordic chips).

 

If you require any further information, feel free to contact me.

Piotr ZIĘCIK | Senior Firmware Engineer
M +48 698 726 973| Kraków, Poland
nordicsemi.com | devzone.nordicsemi.com

Nordic_logo_signature

 

From: Cufi, Carles
Sent: Thursday, November 29, 2018 12:49 PM
To: nicolas lantz <nicolas.lantz@...>; devel@...; Zięcik, Piotr <Piotr.Ziecik@...>
Subject: RE: [Zephyr-devel] Opus codec on nrf52840

 

+ Piotr

 

From: devel@... <devel@...> On Behalf Of nicolas lantz
Sent: 29 November 2018 12:41
To: devel@...
Subject: [Zephyr-devel] Opus codec on nrf52840

 

Hi,

I would like to use the Opus codec with zephyr on a nrf52840 to encode or decode an audio stream.
Has anyone have a suggestion on this project?

Regards,
 
Nicolas
 


Re: Opus codec on nrf52840

Carles Cufi
 

+ Piotr

 

From: devel@... <devel@...> On Behalf Of nicolas lantz
Sent: 29 November 2018 12:41
To: devel@...
Subject: [Zephyr-devel] Opus codec on nrf52840

 

Hi,

I would like to use the Opus codec with zephyr on a nrf52840 to encode or decode an audio stream.
Has anyone have a suggestion on this project?


Regards,
 
Nicolas
 


Opus codec on nrf52840

nicolas lantz
 

Hi,

I would like to use the Opus codec with zephyr on a nrf52840 to encode or decode an audio stream.
Has anyone have a suggestion on this project?


Regards,

Nicolas
 


Re: logging subsys questions / concerns

Boie, Andrew P
 

Thanks for all the feedback.
As agreed on Slack I am copying Krzysztof and Jakub here so that they see your
comments and then, if applicable, we can create one or more issues alongside
the ones that Paul has already opened.
Just to follow up after some further inspection:

Introduce a k_sem with initial count 0 and max count UINT_MAX. Log
points have the caller give the semaphore every time something is
added to the log buffer, and have the background thread simply do a
blocking k_sem_take().
On further inspection, we don't even need a semaphore. It appears some wheels were re-invented, we can simply delete all the code subsys/logging/log_list.c and use either a k_queue or k_pipe instead, which the log thread can then sleep on until there's data to write.

Andrew


Re: logging subsys questions / concerns

Carles Cufi
 

Hi Andrew,

Thanks for all the feedback.
As agreed on Slack I am copying Krzysztof and Jakub here so that they see your comments and then, if applicable, we can create one or more issues alongside the ones that Paul has already opened.

Regards,

Carles

-----Original Message-----
From: devel@lists.zephyrproject.org <devel@lists.zephyrproject.org> On
Behalf Of Boie, Andrew P
Sent: 28 November 2018 21:01
To: zephyr-devel <zephyr-devel@lists.zephyrproject.org>
Subject: [Zephyr-devel] logging subsys questions / concerns

I've been looking at the logging subsystem code and I wanted to bring up
some topics.

1) The default priority of the logging thread is -2. This is a very high
non preemptive priority. I don't understand why the logging background
thread doesn't run at the lowest preemptible priority on the system,
like the idle thread. If people are running out of buffer space then
they need to make their buffers bigger or switch to synchronous logging.

2) The panic mode handling is not correct. It gets called from
_NanoFatalErrorHandler, which flushes the log and then sets the
panic_mode global *permanently* to true. This is not a good policy.
NanoFatalErrorHandler getting called does not necessarily mean that the
system has completely crashed, it's quite possible that the damage is
limited to one thread dying, with the rest of the threads (and the
overall system) still running just fine. I think we need to move the
invocation of LOG_PANIC until *much* later, when we decide we need to
hang the system instead of just aborting the faulting thread.

3) It does not appear that there is any support for invoking LOG()
macros from user mode, which severely limits its usability. Until there
is an answer to this, conversations about default mapping printk() to
the log subsystem really scare me. Is LOG intended to be used by end
user applications or just internally to the kernel?

4) The synchronization between threads invoking log points, and the
background logging thread, do not make sense to me, and seem to be a way
of dealing with making the log thread default to a very high non-
preemptible priority, which I already complained about.

I think CONFIG_LOG_PROCESS_SLEEP_MS and
CONFIG_LOG_PROCESS_TRIGGER_THRESHOLD should be completely removed.
Introduce a k_sem with initial count 0 and max count UINT_MAX. Log
points have the caller give the semaphore every time something is added
to the log buffer, and have the background thread simply do a blocking
k_sem_take(). So much simpler, and we rely on the scheduler to do its
job instead of this weird setup where the log thread is high priority
but sleeps for hard-coded intervals.

5) What does it mean if CONFIG_LOG_INPLACE_PROCESS=n, but
CONFIG_LOG_PROCESS_THREAD=n? Can we simplify our Kconfigs?



logging subsys questions / concerns

Boie, Andrew P
 

I've been looking at the logging subsystem code and I wanted to bring up some topics.
 
1) The default priority of the logging thread is -2. This is a very high non preemptive priority. I don't understand why the logging background thread doesn't run at the lowest preemptible priority on the system, like the idle thread. If people are running out of buffer space then they need to make their buffers bigger or switch to synchronous logging.
 
2) The panic mode handling is not correct. It gets called from _NanoFatalErrorHandler, which flushes the log and then sets the panic_mode global *permanently* to true. This is not a good policy. NanoFatalErrorHandler getting called does not necessarily mean that the system has completely crashed, it's quite possible that the damage is limited to one thread dying, with the rest of the threads (and the overall system) still running just fine. I think we need to move the invocation of LOG_PANIC until *much* later, when we decide we need to hang the system instead of just aborting the faulting thread.
 
3) It does not appear that there is any support for invoking LOG() macros from user mode, which severely limits its usability. Until there is an answer to this, conversations about default mapping printk() to the log subsystem really scare me. Is LOG intended to be used by end user applications or just internally to the kernel?
 
4) The synchronization between threads invoking log points, and the background logging thread, do not make sense to me, and seem to be a way of dealing with making the log thread default to a very high non-preemptible priority, which I already complained about.
 
I think CONFIG_LOG_PROCESS_SLEEP_MS and CONFIG_LOG_PROCESS_TRIGGER_THRESHOLD should be completely removed. Introduce a k_sem with initial count 0 and max count UINT_MAX. Log points have the caller give the semaphore every time something is added to the log buffer, and have the background thread simply do a blocking k_sem_take(). So much simpler, and we rely on the scheduler to do its job instead of this weird setup where the log thread is high priority but sleeps for hard-coded intervals.
 
5) What does it mean if CONFIG_LOG_INPLACE_PROCESS=n, but CONFIG_LOG_PROCESS_THREAD=n? Can we simplify our Kconfigs?


Re: cmake application project architecture

Florian Fouillet <Florian.Fouillet@...>
 

I understand, thank you very much.

-----Original Message-----
From: Bøe, Sebastian [mailto:Sebastian.Boe@nordicsemi.no]
Sent: Wednesday, November 28, 2018 9:53 AM
To: Florian Fouillet <Florian.Fouillet@schneider-electric.com>; Hovland, Sigvart <Sigvart.Hovland@nordicsemi.no>; devel@lists.zephyrproject.org
Subject: Re: [Zephyr-devel] cmake application project architecture

[External email: Use caution with links and attachments]

________________________________



It adds a dependency between DL and offsets_h.

offsets_h is a target that happens to depend on various kernel headers, including syscall_list.h, which evidently was used by the application library.

I'm not aware of any such example.

________________________________________
From: Florian Fouillet <Florian.Fouillet@schneider-electric.com>
Sent: Wednesday, November 28, 2018 3:49:43 PM
To: Bøe, Sebastian; Hovland, Sigvart; devel@lists.zephyrproject.org
Subject: RE: [Zephyr-devel] cmake application project architecture

Hi,

Thank you for your reply. It's working.

What does add_dependencies(DL offsets_h) do?

Is there any zephyr cmake example using multiple CMakeLists I can read?

Thanks for your help!



-----Original Message-----
From: Bøe, Sebastian [mailto:Sebastian.Boe@nordicsemi.no]
Sent: Wednesday, November 28, 2018 9:45 AM
To: Florian Fouillet <Florian.Fouillet@schneider-electric.com>; Hovland, Sigvart <Sigvart.Hovland@nordicsemi.no>; devel@lists.zephyrproject.org
Subject: Re: [Zephyr-devel] cmake application project architecture

[External email: Use caution with links and attachments]

________________________________



You also need

add_dependencies(DL offsets_h)

________________________________________
From: devel@lists.zephyrproject.org <devel@lists.zephyrproject.org> on behalf of Florian Fouillet <Florian.Fouillet@schneider-electric.com>
Sent: Wednesday, November 28, 2018 3:42:54 PM
To: Hovland, Sigvart; devel@lists.zephyrproject.org
Subject: Re: [Zephyr-devel] cmake application project architecture

Hi,

By adding target_link_libraries(DL PRIVATE zephyr_interface)

I still have the following issue

fatal error: syscall_list.h: No such file or directory

From: Hovland, Sigvart [mailto:Sigvart.Hovland@nordicsemi.no]
Sent: Wednesday, November 28, 2018 4:26 AM
To: Florian Fouillet <Florian.Fouillet@schneider-electric.com>; devel@lists.zephyrproject.org
Subject: RE: cmake application project architecture


[External email: Use caution with links and attachments]

________________________________


Maybe adding

target_link_libraries(DL PRIVATE zephyr_interface)


To your 2nd CMake file could help?

From: devel@lists.zephyrproject.org<mailto:devel@lists.zephyrproject.org> [mailto:devel@lists.zephyrproject.org] On Behalf Of Florian Fouillet
Sent: Tuesday, November 27, 2018 9:53 PM
To: devel@lists.zephyrproject.org<mailto:devel@lists.zephyrproject.org>
Subject: [Zephyr-devel] cmake application project architecture

Hi everyone,

I am currently working on the Zephyr OS with a FDRM_K64f board from NXP.

I want to create my own application using cmake as recommended by the documentation.

However I don't want to put everything in one CMakeLists.txt. I want to break down my project into libraries (multiple CMakeLists.txt).

Do you know if there is any documentation talking about that?

My top CMakeLists looks like that:

cmake_minimum_required(VERSION 3.8.2)

include($ENV{ZEPHYR_BASE}/cmake/app/boilerplate.cmake NO_POLICY_SCOPE)
project(NONE)


add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/DataLinkLayer
${CMAKE_CURRENT_SOURCE_DIR}/build/${BOARD}/DataLinkLayer)

target_sources(app PRIVATE src/main.c)

target_link_libraries(app
PRIVATE DL
)


And my second CMakeLists (under the folder DataLinkLayer) looks like that:

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)

add_library(DL src/DataLinkInterface.c)

target_include_directories(DL
INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/Interface)



The issue is I can include the boilerplate.cmake in only one CMakeLists.txt otherwise It's not working, But, the second CmakeLists doesn't know the zephyr library..

I tried to add: include_directories(/home/user/zephyr/include) in the second CMakeLists but it is not enough. Do you know what should I do?


Thank you,


______________________________________________________________________
This email has been scanned by the Symantec Email Security.cloud service.
______________________________________________________________________


______________________________________________________________________
This email has been scanned by the Symantec Email Security.cloud service.
______________________________________________________________________

______________________________________________________________________
This email has been scanned by the Symantec Email Security.cloud service.
______________________________________________________________________


Re: cmake application project architecture

Sebastian Boe
 

It adds a dependency between DL and offsets_h.

offsets_h is a target that happens to depend on various kernel headers,
including syscall_list.h, which evidently was used by the application
library.

I'm not aware of any such example.

________________________________________
From: Florian Fouillet <Florian.Fouillet@schneider-electric.com>
Sent: Wednesday, November 28, 2018 3:49:43 PM
To: Bøe, Sebastian; Hovland, Sigvart; devel@lists.zephyrproject.org
Subject: RE: [Zephyr-devel] cmake application project architecture

Hi,

Thank you for your reply. It's working.

What does add_dependencies(DL offsets_h) do?

Is there any zephyr cmake example using multiple CMakeLists I can read?

Thanks for your help!



-----Original Message-----
From: Bøe, Sebastian [mailto:Sebastian.Boe@nordicsemi.no]
Sent: Wednesday, November 28, 2018 9:45 AM
To: Florian Fouillet <Florian.Fouillet@schneider-electric.com>; Hovland, Sigvart <Sigvart.Hovland@nordicsemi.no>; devel@lists.zephyrproject.org
Subject: Re: [Zephyr-devel] cmake application project architecture

[External email: Use caution with links and attachments]

________________________________



You also need

add_dependencies(DL offsets_h)

________________________________________
From: devel@lists.zephyrproject.org <devel@lists.zephyrproject.org> on behalf of Florian Fouillet <Florian.Fouillet@schneider-electric.com>
Sent: Wednesday, November 28, 2018 3:42:54 PM
To: Hovland, Sigvart; devel@lists.zephyrproject.org
Subject: Re: [Zephyr-devel] cmake application project architecture

Hi,

By adding target_link_libraries(DL PRIVATE zephyr_interface)

I still have the following issue

fatal error: syscall_list.h: No such file or directory

From: Hovland, Sigvart [mailto:Sigvart.Hovland@nordicsemi.no]
Sent: Wednesday, November 28, 2018 4:26 AM
To: Florian Fouillet <Florian.Fouillet@schneider-electric.com>; devel@lists.zephyrproject.org
Subject: RE: cmake application project architecture


[External email: Use caution with links and attachments]

________________________________


Maybe adding

target_link_libraries(DL PRIVATE zephyr_interface)


To your 2nd CMake file could help?

From: devel@lists.zephyrproject.org<mailto:devel@lists.zephyrproject.org> [mailto:devel@lists.zephyrproject.org] On Behalf Of Florian Fouillet
Sent: Tuesday, November 27, 2018 9:53 PM
To: devel@lists.zephyrproject.org<mailto:devel@lists.zephyrproject.org>
Subject: [Zephyr-devel] cmake application project architecture

Hi everyone,

I am currently working on the Zephyr OS with a FDRM_K64f board from NXP.

I want to create my own application using cmake as recommended by the documentation.

However I don't want to put everything in one CMakeLists.txt. I want to break down my project into libraries (multiple CMakeLists.txt).

Do you know if there is any documentation talking about that?

My top CMakeLists looks like that:

cmake_minimum_required(VERSION 3.8.2)

include($ENV{ZEPHYR_BASE}/cmake/app/boilerplate.cmake NO_POLICY_SCOPE)
project(NONE)


add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/DataLinkLayer
${CMAKE_CURRENT_SOURCE_DIR}/build/${BOARD}/DataLinkLayer)

target_sources(app PRIVATE src/main.c)

target_link_libraries(app
PRIVATE DL
)


And my second CMakeLists (under the folder DataLinkLayer) looks like that:

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)

add_library(DL src/DataLinkInterface.c)

target_include_directories(DL
INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/Interface)



The issue is I can include the boilerplate.cmake in only one CMakeLists.txt otherwise It's not working, But, the second CmakeLists doesn't know the zephyr library..

I tried to add: include_directories(/home/user/zephyr/include) in the second CMakeLists but it is not enough. Do you know what should I do?


Thank you,


______________________________________________________________________
This email has been scanned by the Symantec Email Security.cloud service.
______________________________________________________________________


______________________________________________________________________
This email has been scanned by the Symantec Email Security.cloud service.
______________________________________________________________________


Re: cmake application project architecture

Florian Fouillet <Florian.Fouillet@...>
 

Hi,

Thank you for your reply. It's working.

What does add_dependencies(DL offsets_h) do?

Is there any zephyr cmake example using multiple CMakeLists I can read?

Thanks for your help!

-----Original Message-----
From: Bøe, Sebastian [mailto:Sebastian.Boe@nordicsemi.no]
Sent: Wednesday, November 28, 2018 9:45 AM
To: Florian Fouillet <Florian.Fouillet@schneider-electric.com>; Hovland, Sigvart <Sigvart.Hovland@nordicsemi.no>; devel@lists.zephyrproject.org
Subject: Re: [Zephyr-devel] cmake application project architecture

[External email: Use caution with links and attachments]

________________________________



You also need

add_dependencies(DL offsets_h)

________________________________________
From: devel@lists.zephyrproject.org <devel@lists.zephyrproject.org> on behalf of Florian Fouillet <Florian.Fouillet@schneider-electric.com>
Sent: Wednesday, November 28, 2018 3:42:54 PM
To: Hovland, Sigvart; devel@lists.zephyrproject.org
Subject: Re: [Zephyr-devel] cmake application project architecture

Hi,

By adding target_link_libraries(DL PRIVATE zephyr_interface)

I still have the following issue

fatal error: syscall_list.h: No such file or directory

From: Hovland, Sigvart [mailto:Sigvart.Hovland@nordicsemi.no]
Sent: Wednesday, November 28, 2018 4:26 AM
To: Florian Fouillet <Florian.Fouillet@schneider-electric.com>; devel@lists.zephyrproject.org
Subject: RE: cmake application project architecture


[External email: Use caution with links and attachments]

________________________________


Maybe adding

target_link_libraries(DL PRIVATE zephyr_interface)


To your 2nd CMake file could help?

From: devel@lists.zephyrproject.org<mailto:devel@lists.zephyrproject.org> [mailto:devel@lists.zephyrproject.org] On Behalf Of Florian Fouillet
Sent: Tuesday, November 27, 2018 9:53 PM
To: devel@lists.zephyrproject.org<mailto:devel@lists.zephyrproject.org>
Subject: [Zephyr-devel] cmake application project architecture

Hi everyone,

I am currently working on the Zephyr OS with a FDRM_K64f board from NXP.

I want to create my own application using cmake as recommended by the documentation.

However I don't want to put everything in one CMakeLists.txt. I want to break down my project into libraries (multiple CMakeLists.txt).

Do you know if there is any documentation talking about that?

My top CMakeLists looks like that:

cmake_minimum_required(VERSION 3.8.2)

include($ENV{ZEPHYR_BASE}/cmake/app/boilerplate.cmake NO_POLICY_SCOPE)
project(NONE)


add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/DataLinkLayer
${CMAKE_CURRENT_SOURCE_DIR}/build/${BOARD}/DataLinkLayer)

target_sources(app PRIVATE src/main.c)

target_link_libraries(app
PRIVATE DL
)


And my second CMakeLists (under the folder DataLinkLayer) looks like that:

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)

add_library(DL src/DataLinkInterface.c)

target_include_directories(DL
INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/Interface)



The issue is I can include the boilerplate.cmake in only one CMakeLists.txt otherwise It's not working, But, the second CmakeLists doesn't know the zephyr library..

I tried to add: include_directories(/home/user/zephyr/include) in the second CMakeLists but it is not enough. Do you know what should I do?


Thank you,


______________________________________________________________________
This email has been scanned by the Symantec Email Security.cloud service.
______________________________________________________________________


______________________________________________________________________
This email has been scanned by the Symantec Email Security.cloud service.
______________________________________________________________________


Re: cmake application project architecture

Sebastian Boe
 

You also need

add_dependencies(DL offsets_h)

________________________________________
From: devel@lists.zephyrproject.org <devel@lists.zephyrproject.org> on behalf of Florian Fouillet <Florian.Fouillet@schneider-electric.com>
Sent: Wednesday, November 28, 2018 3:42:54 PM
To: Hovland, Sigvart; devel@lists.zephyrproject.org
Subject: Re: [Zephyr-devel] cmake application project architecture

Hi,

By adding target_link_libraries(DL PRIVATE zephyr_interface)

I still have the following issue

fatal error: syscall_list.h: No such file or directory

From: Hovland, Sigvart [mailto:Sigvart.Hovland@nordicsemi.no]
Sent: Wednesday, November 28, 2018 4:26 AM
To: Florian Fouillet <Florian.Fouillet@schneider-electric.com>; devel@lists.zephyrproject.org
Subject: RE: cmake application project architecture


[External email: Use caution with links and attachments]

________________________________


Maybe adding

target_link_libraries(DL PRIVATE zephyr_interface)


To your 2nd CMake file could help?

From: devel@lists.zephyrproject.org<mailto:devel@lists.zephyrproject.org> [mailto:devel@lists.zephyrproject.org] On Behalf Of Florian Fouillet
Sent: Tuesday, November 27, 2018 9:53 PM
To: devel@lists.zephyrproject.org<mailto:devel@lists.zephyrproject.org>
Subject: [Zephyr-devel] cmake application project architecture

Hi everyone,

I am currently working on the Zephyr OS with a FDRM_K64f board from NXP.

I want to create my own application using cmake as recommended by the documentation.

However I don’t want to put everything in one CMakeLists.txt. I want to break down my project into libraries (multiple CMakeLists.txt).

Do you know if there is any documentation talking about that?

My top CMakeLists looks like that:

cmake_minimum_required(VERSION 3.8.2)

include($ENV{ZEPHYR_BASE}/cmake/app/boilerplate.cmake NO_POLICY_SCOPE)
project(NONE)


add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/DataLinkLayer
${CMAKE_CURRENT_SOURCE_DIR}/build/${BOARD}/DataLinkLayer)

target_sources(app PRIVATE src/main.c)

target_link_libraries(app
PRIVATE DL
)


And my second CMakeLists (under the folder DataLinkLayer) looks like that:

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)

add_library(DL src/DataLinkInterface.c)

target_include_directories(DL
INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/Interface)



The issue is I can include the boilerplate.cmake in only one CMakeLists.txt otherwise It’s not working, But, the second CmakeLists doesn’t know the zephyr library..

I tried to add: include_directories(/home/user/zephyr/include) in the second CMakeLists but it is not enough. Do you know what should I do?


Thank you,


______________________________________________________________________
This email has been scanned by the Symantec Email Security.cloud service.
______________________________________________________________________


Re: cmake application project architecture

Florian Fouillet <Florian.Fouillet@...>
 

Hi,

 

By adding target_link_libraries(DL PRIVATE zephyr_interface)

 

I still have the following issue

 

fatal error: syscall_list.h: No such file or directory

 

From: Hovland, Sigvart [mailto:Sigvart.Hovland@...]
Sent: Wednesday, November 28, 2018 4:26 AM
To: Florian Fouillet <Florian.Fouillet@...>; devel@...
Subject: RE: cmake application project architecture

 

[External email: Use caution with links and attachments]


 

Maybe adding

target_link_libraries(DL PRIVATE zephyr_interface)

To your 2nd CMake file  could help?

 

From: devel@... [mailto:devel@...] On Behalf Of Florian Fouillet
Sent: Tuesday, November 27, 2018 9:53 PM
To: devel@...
Subject: [Zephyr-devel] cmake application project architecture

 

Hi everyone,

 

I am currently working on the Zephyr OS with a FDRM_K64f board from NXP.

 

I want to create my own application using cmake as recommended by the documentation.

 

However I don’t want to put everything in one CMakeLists.txt. I want to break down my project into libraries (multiple CMakeLists.txt).

 

Do you know if there is any documentation talking about that?

 

My top CMakeLists looks like that:

 

cmake_minimum_required(VERSION 3.8.2)

 

include($ENV{ZEPHYR_BASE}/cmake/app/boilerplate.cmake NO_POLICY_SCOPE)

project(NONE)

 

 

add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/DataLinkLayer

${CMAKE_CURRENT_SOURCE_DIR}/build/${BOARD}/DataLinkLayer)

 

target_sources(app PRIVATE src/main.c)

 

target_link_libraries(app

PRIVATE DL

)

 

 

And my second CMakeLists (under the folder DataLinkLayer) looks like that:

 

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)

 

add_library(DL src/DataLinkInterface.c)

 

target_include_directories(DL

INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/Interface)

 

 

 

The issue is I can include the boilerplate.cmake in only one CMakeLists.txt otherwise It’s not working, But, the second CmakeLists doesn’t know the zephyr library..

 

I tried to add: include_directories(/home/user/zephyr/include) in the second CMakeLists but it is not enough. Do you know what should I do?

 

 

Thank you,

 


______________________________________________________________________
This email has been scanned by the Symantec Email Security.cloud service.
______________________________________________________________________


How to print Debug and Error messages on console #nrf52480 #nrf52832

Akash Naidu <akashnaiduece@...>
 

Hi All,
Currently i have been working on "zephyr/samples/bluetooth/ipsp" example, in which i can able to see LOG_INF messages only.
How to print LOG_DBG and LOG_ERR messages on console.

The above example is running on nrf52 DK.
Thanks in Advance

BR
Akash.


Re: checkstack.pl

Benjamin Lindqvist
 

Lol. Mistyped again -- to clarify, I definitely mean checkstack.pl and
not checkpatch.pl, if anyone did not extrapolate successfully
Den ons 28 nov. 2018 kl 13:10 skrev Benjamin Lindqvist
<benjamin.lindqvist@endian.se>:


Hi,

I wanted to try out scripts/checkstack.pl and verified that it
actually works on a vmlinux image by

arm-none-eabi-objdump -d vmlinux | zephyr/scripts/checkpatch.pl arm

but when I do it on build/zephyr/zephyr.elf it just quietly exits,
with no output. Anyone have any idea why it doesn't work?


checkstack.pl

Benjamin Lindqvist
 

Hi,

I wanted to try out scripts/checkstack.pl and verified that it
actually works on a vmlinux image by

arm-none-eabi-objdump -d vmlinux | zephyr/scripts/checkpatch.pl arm

but when I do it on build/zephyr/zephyr.elf it just quietly exits,
with no output. Anyone have any idea why it doesn't work?


Re: [Zephyr-users] Cannot write with i2c NRF52832 (TWI and TWIM)

vikrant8051 <vikrant8051@...>
 

Hi to all,
I renamed driver name from CONFIG_I2C_0_NAME to DT_I2C_0_NAME.
Plus add following Kconfig things in prj.conf. Now everything is working fine.

CONFIG_I2C=y
CONFIG_I2C_NRFX=y
CONFIG_NRFX_TWI=y
CONFIG_I2C_0_NRF_TWI=y
CONFIG_HAS_HW_NRF_TWI0=y
CONFIG_I2C_INIT_PRIORITY=60
CONFIG_I2C_0=y

Thanks & Regards,
vikrant


On Wed, Nov 28, 2018 at 3:03 PM Vikrant More <vikrant8051@...> wrote:
Hi Jamie,
It seen that it is working with 1.12.99 which is your case.

But with latest master branch, it is not.

Issue is in driver name
#define I2C_DEV CONFIG_I2C_0_NAME

Thanks for support !!

On Wed, Nov 28, 2018 at 2:48 PM Jamie Mccrae <Jamie.Mccrae@...> wrote:

Attached

 

From: Vikrant More [mailto:vikrant8051@...]
Sent: 28 November 2018 09:10
To: Jamie Mccrae <Jamie.Mccrae@...>
Subject: Re: [Zephyr-devel] [Zephyr-users] Cannot write with i2c NRF52832 (TWI and TWIM)

 

Hi Jamie,

Please share your .config file to me so that I can compare for

what I've missed.

 

Thanks !!

 

On Wed, Nov 28, 2018 at 2:33 PM lairdjm <jamie.mccrae@...> wrote:

Works fine with those lines added to prj.conf

 

[0/1] Re-running CMake...

CMake Deprecation Warning at C:/test/zephyr/cmake/app/boilerplate.cmake:38 (cmake_policy):

  The OLD behavior for policy CMP0000 will be removed from a future version

  of CMake.

 

  The cmake-policies(7) manual explains that the OLD behaviors of all

  policies are deprecated and that a policy should be set to OLD only under

  specific short-term circumstances.  Projects should be ported to the NEW

  behavior and not rely on setting a policy to OLD.

Call Stack (most recent call first):

  CMakeLists.txt:1 (include)

 

 

-- Selected BOARD nrf52840_pca10056

Zephyr version: 1.12.99

Parsing Kconfig tree in C:/test/zephyr//Kconfig

Using C:/test/zephyr/samples/drivers/i2c_fujitsu_fram/build/zephyr/.config as base

fatal: No tags can describe '02addfff50f936af41dfc71ab2d6140ace86f455'.

Try --always, or create some tags.

-- Generating zephyr/include/generated/generated_dts_board.h

-- Cache files will be written to: C:\Users\jamie.mccrae\AppData\Local/.cache/zephyr

-- Configuring done

-- Generating done

-- Build files have been written to: C:/test/zephyr/samples/drivers/i2c_fujitsu_fram/build

[129/134] Linking C executable zephyr\zephyr_prebuilt.elf

Memory region         Used Size  Region Size  %age Used

           FLASH:       48292 B         1 MB      4.61%

            SRAM:       11220 B       256 KB      4.28%

        IDT_LIST:         136 B         2 KB      6.64%

[134/134] Linking C executable zephyr\zephyr.elf

 


Re: cmake application project architecture

Sigvart Hovland
 

Maybe adding

target_link_libraries(DL PRIVATE zephyr_interface)

To your 2nd CMake file  could help?

 

From: devel@... [mailto:devel@...] On Behalf Of Florian Fouillet
Sent: Tuesday, November 27, 2018 9:53 PM
To: devel@...
Subject: [Zephyr-devel] cmake application project architecture

 

Hi everyone,

 

I am currently working on the Zephyr OS with a FDRM_K64f board from NXP.

 

I want to create my own application using cmake as recommended by the documentation.

 

However I don’t want to put everything in one CMakeLists.txt. I want to break down my project into libraries (multiple CMakeLists.txt).

 

Do you know if there is any documentation talking about that?

 

My top CMakeLists looks like that:

 

cmake_minimum_required(VERSION 3.8.2)

 

include($ENV{ZEPHYR_BASE}/cmake/app/boilerplate.cmake NO_POLICY_SCOPE)

project(NONE)

 

 

add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/DataLinkLayer

${CMAKE_CURRENT_SOURCE_DIR}/build/${BOARD}/DataLinkLayer)

 

target_sources(app PRIVATE src/main.c)

 

target_link_libraries(app

PRIVATE DL

)

 

 

And my second CMakeLists (under the folder DataLinkLayer) looks like that:

 

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)

 

add_library(DL src/DataLinkInterface.c)

 

target_include_directories(DL

INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/Interface)

 

 

 

The issue is I can include the boilerplate.cmake in only one CMakeLists.txt otherwise It’s not working, But, the second CmakeLists doesn’t know the zephyr library..

 

I tried to add: include_directories(/home/user/zephyr/include) in the second CMakeLists but it is not enough. Do you know what should I do?

 

 

Thank you,

 


Re: [Zephyr-users] Cannot write with i2c NRF52832 (TWI and TWIM)

lairdjm
 

Works fine with those lines added to prj.conf

 

[0/1] Re-running CMake...

CMake Deprecation Warning at C:/test/zephyr/cmake/app/boilerplate.cmake:38 (cmake_policy):

  The OLD behavior for policy CMP0000 will be removed from a future version

  of CMake.

 

  The cmake-policies(7) manual explains that the OLD behaviors of all

  policies are deprecated and that a policy should be set to OLD only under

  specific short-term circumstances.  Projects should be ported to the NEW

  behavior and not rely on setting a policy to OLD.

Call Stack (most recent call first):

  CMakeLists.txt:1 (include)

 

 

-- Selected BOARD nrf52840_pca10056

Zephyr version: 1.12.99

Parsing Kconfig tree in C:/test/zephyr//Kconfig

Using C:/test/zephyr/samples/drivers/i2c_fujitsu_fram/build/zephyr/.config as base

fatal: No tags can describe '02addfff50f936af41dfc71ab2d6140ace86f455'.

Try --always, or create some tags.

-- Generating zephyr/include/generated/generated_dts_board.h

-- Cache files will be written to: C:\Users\jamie.mccrae\AppData\Local/.cache/zephyr

-- Configuring done

-- Generating done

-- Build files have been written to: C:/test/zephyr/samples/drivers/i2c_fujitsu_fram/build

[129/134] Linking C executable zephyr\zephyr_prebuilt.elf

Memory region         Used Size  Region Size  %age Used

           FLASH:       48292 B         1 MB      4.61%

            SRAM:       11220 B       256 KB      4.28%

        IDT_LIST:         136 B         2 KB      6.64%

[134/134] Linking C executable zephyr\zephyr.elf

 

2121 - 2140 of 7602