Commit graph

104,958 commits

Author SHA1 Message Date
Torsten Rasmussen
6fc8563b16 manifest: update zephyr-lang-rust to always link runtime libs first
Update zephyr-lang-rust module to include commit for linking the
runtime library before the librustapp.a.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2024-10-04 16:34:35 +01:00
Torsten Rasmussen
0274bcbee4 cmake: detect LLVM picolibc and newlib support
Newlib or Picolibc libraries for LLVM may be compiled or installed from
pre-built sources independently of LLVM itself.

This means that always indicating that TOOLCHAIN_HAS_NEWLIB=OFF and
TOOLCHAIN_HAS_PICOLIBC=OFF are wrong. But it could be just as wrong to
always indicate suport for newlib or picolibc.

Some pre-built LLVM toolchains are provided with default picolibc
support, such as LLVM for Arm embedded, but can also be used with newlib
be installing newlib add-on package.

Unfortunately it's not possible to query LLVM regarding newlib or
picolibc support.

Developers have the option of `-DTOOLCHAIN_HAS_<NEWLIB|PICOLIBC>=ON`,
but this is not widely known and cumbersome to do for each build.

An indication of newlib or picolibc support is the presence of library
specific headers, so to improve current situation we check for library
specific headers, and if those are present we assume support for the
library.

This commit improves the current support for LLVM in Zephyr when
cross-compiling, especially for users of LLVM for Arm embedded.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2024-10-04 16:34:35 +01:00
Torsten Rasmussen
b2eeef4ac9 manifest: update picolibc to support the new c_library property
This commit updates picolibc module to remove the need for hard-coding
linking with `-lgcc`.

Instead it sets the c_library linker property and thereby allows the
Zephyr toolchain infrastructure to properly handle the linking of
C and runtime libraries.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2024-10-04 16:34:35 +01:00
Torsten Rasmussen
9d835fe464 cmake: move specs compiler and linker flags to toolchain properties
Moving specs argument to compiler and linker properties so that the
compiler and linker in use can decide how the flags are mapped / handled
for the compiler and linker in use.

This avoids specifying `--specs=spec.picolibc` for clang which prints a
warning about an unused argument.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2024-10-04 16:34:35 +01:00
Torsten Rasmussen
102b3fc078 cmake: make TARGET optional in set_linker_property()
The `check_set_linker_property()` and `set_linker_property()` takes a
target argument. Make the target argument optional and use the target
`linker` as default target.

The function name `set_linker_property()` already implies that we are
setting a property and the linker target.

Remove the need to specify `TARGET linker` when using the default linker
property target.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2024-10-04 16:34:35 +01:00
Torsten Rasmussen
718b726b37 cmake: PROPERTY flag support on compile options and link libraries
Extend zephyr_link_libraries to allow an optional value together with
the `zephyr_link_libraries(PROPERTY <property> [<value>])`.

This allow setting linker property combined with a value when linking
Zephyr. The value will only be applied if the property is defined.

Extend zephyr_compile_options to support the same PROPERTY flag that
has been introduced for zephyr_link_libraries().
This remove the need for developers to write complex generator
expressions for compiler flags and thus minimizes mistakes.

The following syntax is now supported in addition to the existing
syntax: `zephyr_compile_options(PROPERTY <property> [<value>])`

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2024-10-04 16:34:35 +01:00
Torsten Rasmussen
2e3873adde cmake: improve Zephyr link phase
Zephyr is a bare metal build where standard libs are disabled.

This means that c and runtime libraries must manually be linked in.

This has generally been handled by using CMake's link libraries handling
but the issue with that is both de-duplication but also library link
order.

Standard libraries must be linked at last location to ensure symbols
are always available, however this is not optimal with
target_link_libraries() because this would ultimately require every
library to know the c library to link with, which is not desired.

Therefore, setup standard C and runtime library linking in linker
CMake files for toolchains where this is required.

This commit expands the principle introduced with toolchain abstraction,
see PR#24851.

This means that a toolchain implementation may specify standard C,
runtime, C++, etc libraries, as well as their link order.
Because a property approach is used, then Zephyr modules, such as the
Picolibc module can adjust such properties.

An optional `zephyr_linker_finalize()` macro is called at the end of
Zephyr's CMakeList process and can be used by the toolchain
implementation to define the final linker invocation.

This aligns the linker handling flow to the principle introduced in
PR#24851 and improves the flexibility and robustness of Zephyr build
system.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2024-10-04 16:34:35 +01:00
Jonathon Penix
9fe6c5e3fb cmake: linker: Use the same linker for cmake checks and final build
Currently, the linker that is used when performing various cmake checks
(check_c_compiler_flag, for example) may be different than the linker that
will be used during the actual build. This happens as we currently specify
'-fuse-ld' to force the appropriate linker a) after many such checks have
already happened and b) in a way which is not automatically propagated to
check_c_compiler_flag (and friends). As a result, the toolchain's default
linker will generally be used for such checks regardless of which linker
was selected in Zephyr.

This can lead to a number of surprises when building Zephyr, particularly
when building with clang. For example:

- If the linker is misconfigured, where the build will fail can vary
  depending on whether the linker is the toolchain's default. When the
  configured linker happens to be the toolchain's default, the build
  (helpfully) fails quickly on the checks for a basic working toochain.
  When the configured linker isn't the default, the build won't fail until
  the final link steps.
- The build can fail due to issues with a linker other than the one
  configured by the user in Zephyr. For example, LLVM toolchains without
  lld will generally fail to build Zephyr (the checks for a basic
  working toochain will fail) for targets where lld is the default in LLVM
  even if GNU ld is configured in Zephyr and would otherwise be used in the
  final build.
- Flags which are only added if check_c_compiler_flag (or similar) succeeds
  may be unexpectedly omitted during the final build if the flag is
  supported in the configured linker but is unsupported in the toolchain's
  default linker (as check_c_compiler_flag will test using the default
  one).

Note that this isn't limited to clang--even when we are building with
Zephyr's SDK and force ld.bfd, we seem to use the 'ld' variant during the
cmake checks (though this generally seems fairly harmless compared to
mixing ld/lld or other proprietary linkers).

To fix this, ensure the appropriate 'fuse-ld' is set early enough and in
such a way that the same linker will be used throughout the entire build.

Signed-off-by: Jonathon Penix <jpenix@quicinc.com>
Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2024-10-04 16:34:35 +01:00
Emil Gydesen
dc97bbd35f Bluetooth: Audio: Rename bt_audio_codec_qos -> bt_bap_qos_cfg
The QoS structure is not related to a codec, but rather a
stream, and should thus not use the "Codec" name.

The BAP and ASCS specs refer to the QoS as
"QoS configuration" several places, so it is an obvious
choice for a name.

Since the structure is defined and used by BAP, the prefix
was changed from bt_audio to bt_bap.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-10-04 16:34:22 +01:00
Krzysztof Bartnicki
e1cacb3a18 net: dns: Fix DNS resolver cache invalid find call
The size of the output array for the find call in resolver
is invalid: expected array size while overall memory size
provided. As the latter is bigger there is a high probability
of memory overwrite occurring on the stack.

Signed-off-by: Krzysztof Bartnicki <krzysztof.bartnicki@embevity.com>
2024-10-04 10:50:31 +01:00
Yong Cong Sin
453dfed3ad arch: riscv: smp: prevent nested #ifdef
The `CONFIG_PLIC_IRQ_AFFINITY` depends on `CONFIG_SMP` in the
Kconfig layer, nested #ifdef can be avoided for readability.

Signed-off-by: Yong Cong Sin <ycsin@meta.com>
Signed-off-by: Yong Cong Sin <yongcong.sin@gmail.com>
2024-10-04 10:50:14 +01:00
Yong Cong Sin
796b795cda drivers: intc: plic: fix for SMP=n when MP_MAX_NUM_CPUS > 1
The functions to obtain the address are hardcoded to return
the address of the first core when `CONFIG_SMP != y`, this
causes an issue with enabling an IRQ when there are more than
one core in the system (`CONFIG_MP_MAX_NUM_CPUS > 1`), as the
driver would first enable the IRQ on the first core, and when
it tries to obtain the address for the following cores and
disable the IRQ on them, the functions continue to return the
address of the first core, causing the IRQ to be disabled
on the first core.

Fix this by determine if `CONFIG_MP_MAX_NUM_CPUS > 1` instead
of `CONFIG_SMP=y` when returning the address.

Signed-off-by: Yong Cong Sin <ycsin@meta.com>
Signed-off-by: Yong Cong Sin <yongcong.sin@gmail.com>
2024-10-04 10:50:14 +01:00
Robert Lubos
0376a417fd tests: net: ipv6: Enable mbed TLS heap
mbed TLS MD operations, used by IPv6 Privacy Extensions, require access
to heap. This may vary depending on platform/mbed TLS variant used,
hence enable CONFIG_MBEDTLS_ENABLE_HEAP in tests to ensure mbed TLS has
always access to some heap memory.

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
2024-10-04 10:50:06 +01:00
Yassine El Aissaoui
ad673d18b7 soc: rw: Fix stack over flow during BLE init
RW requires more stack size now,
value changed from 1024 to 1280.

Signed-off-by: Yassine El Aissaoui <yassine.elaissaoui@nxp.com>
2024-10-04 10:50:00 +01:00
Pieter De Gendt
668a5dc55d samples: net: sockets: Update HTTP server linker with CMake variable
Use the CMake variable for iterable section's subalignment instead of a
global defined macro.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-10-04 10:49:51 +01:00
Pieter De Gendt
e9d24aa7da doc: connectivity: networking: Update HTTP linker example
Update the HTTP linker example to use a CMake variable instead of a
global defined macro.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-10-04 10:49:51 +01:00
Pieter De Gendt
79f063e81b doc: connectivity: networking: Update CMake linker info to CoAP server
Add missing entry to the documentation to also support CMake linker
generator with CoAP services.
Update hard coded value with linker script defined value.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-10-04 10:49:51 +01:00
Krzysztof Chruściński
cbe0abfd00 tests: drivers: uart: uart_pm: Disable PM_DEVICE_SYSTEM_MANAGED
When PM_DEVICE_SYSTEM_MANAGED is enabled (and that's the default) all
devices are suspended when device go to idle state (through pm
subsystem and not through just cpu_idle). In this test we are manually
controlling PM of the DUT so we don't want that.

Additionally, suspend action is taking a semaphore and it is illegal
in idle thread (where system managment operates) which causes assert
in kernel scheduler.

Removed for nrf54h20 as it applies only there.

Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
2024-10-04 10:48:57 +01:00
Emil Gydesen
a4d628efcb tests: Bluetooth: tester: Implement TBS registration
TBS registration was changed from static to dynamic
and the BT Tester application need to be updated to use
the dynamic registration.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-10-04 10:47:03 +01:00
Krzysztof Chruściński
242331291d drivers: misc: coresight: nrf_etr: Imply UART asynchronous API
Asynchronous API is recommended to be used by ETR buffer handler but
polling is also supported. Imply UART_ASYNC_API so that it is possible
to disable it in project config and fall back to polling if needed. For
example to reduce memory footprint.

Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
2024-10-04 10:46:54 +01:00
Krzysztof Chruściński
c6f4e719b7 snippets: nordic-log-stm: Do no enforce UART Asynchronous API
UART asynchronous API will ensure highest throughput but it is not
necessary as polling API is also supported as a fallback. Do not
enforce use of asynchronous API as there might be cases when polling
might be used (e.g. to reduce memory footprint).

Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
2024-10-04 10:46:54 +01:00
Jakub Zymelka
3904c3b2fe samples: Align tests yaml and overlays to nrf54l15dk
Align mbox sample.yaml and icmsg flpr overlays to nrf54l15dk.

Signed-off-by: Jakub Zymelka <jakub.zymelka@nordicsemi.no>
2024-10-04 10:46:30 +01:00
Dominik Chat
70419bdee7 dts: nordic: nrf5340: Change nRF5340 IPC backend to icbmsg
Change the default IPC backend of nRF5340 to icbmsg.

Signed-off-by: Dominik Chat <dominik.chat@nordicsemi.no>
2024-10-04 10:46:18 +01:00
Erik Brockhoff
670bd3bed2 Bluetooth: controller: fixing issue re. assert on overlapping conn upd proc
If a connection update (from central) overlaps a peripheral initiated
conneection param request, then central rejects peripheral request
and continues central procedure. This lead to an assert in peripheral
On instant there would not be an rx_node for notification, as this
would have been discarded by the reception of the REJECT.

This fix ensures that once an rx_node has been 'accepted' for retention
it will not be discarded/overwritten by future rx_nodes

The test will trigger the assert without the fix in.

Signed-off-by: Erik Brockhoff <erbr@oticon.com>
2024-10-04 10:46:06 +01:00
Krzysztof Chruściński
3786b617bd soc: nordic: Disable asserts on ppr and flpr
Asserts are by default enabled for tests but flpr and ppr are
small cores (<64k) and many tests does not fit in memory with
asserts enabled.

Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
2024-10-04 10:45:57 +01:00
Krzysztof Chruściński
ffe6910e21 tests: kernel: interrupt: nested_irq: support nrf54h20_cpuppr
Add dedicated interrupt lines for nrf54h20_cpuppr. Similar exception
was already added to nrf54l15_flpr: 8742e2476.

Signed-off-by: Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
2024-10-04 10:45:57 +01:00
Luca Burelli
7773fe8dd6 llext: hotfix: fix device API tests for platforms without console
LLEXT tests currently fail on platforms where a console was chosen but
its underlying device is not enabled. This might happen for example on
multicore SoCs, where the console is only enabled on the most powerful
CPU.

Fix this by only allowing testing the device API if the console device
is both chosen and enabled in the final DT.

Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
2024-10-03 22:01:08 +01:00
Daniel Leung
b43e7387db tests: mem_map: no exec test for intel_adsp/ace30/ptl
This needs special treatment because the TEST_MEM_MAP section
is placed at the end. Since there is code in TEST_MEM_MAP,
rimage thinks the whole text section spans from .text to
end of TEST_MEM_MAP, which overlaps .data and others, so
it complains. Skip the execution test to avoid this issue.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2024-10-03 22:00:54 +01:00
Daniel Leung
3d65839dbc tests: rename intel_adsp_ace30.conf to intel_adsp_ace30_ptl.conf
The board has been renamed from intel_adsp/ace30_ptl to
intel_adsp/ace30/ptl. So the corresponding board only configs
for tests also need to renamed.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2024-10-03 22:00:54 +01:00
Jyri Sarha
32f9ecacc4 soc: intel_adsp: tools: cavstool.py: Add debug_slot_offset_by_type()
Add debug_slot_offset_by_type() for getting debug window slot offset
by type identifier. How to find the correct slot and what types there
are is documented here:

soc/intel/intel_adsp/common/include/adsp_debug_window.h

In a normal situation a client program would try to find a specific
slot right after DSP boot. Because of that the we can not expect it to
be there immediately. Instead we need to try multiple times and give
firmware some time to update the debug slot descriptor table.

Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
2024-10-03 22:00:33 +01:00
Eric Ackermann
5275d44409 llext: Add RISC-V arch-specific relocations
This commit introduces architecture-specific ELF relocations for RISC-V,
in accordance with the RISC-V PSABI specification:
https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/master/riscv-elf.adoc
Also, the necessary compiler configurations for compiling LLEXT
extensions on RISC-V are added, and the llext tests are executed on
RISC-V targets.
Calling llext extensions from user threads in RISC-V is still
unsupported as of this commit.

Signed-off-by: Eric Ackermann <eric.ackermann@cispa.de>
2024-10-03 21:59:42 +01:00
Seppo Takalo
73a3438b82 net: lwm2m: Remove hostname_verify flag from context
Use security mode (PSK or X509) to detect if we should
set the socket option to verify hostname.

PSK security mode cannot verify hostnames as this information
is coming in the certificate, so don't set the options.

Signed-off-by: Seppo Takalo <seppo.takalo@nordicsemi.no>
2024-10-03 17:09:32 +01:00
Francois Ramu
8c0026a6a6 boards: st: nucleo_h7 boards correct LD2 on PE1 pin
The stm32h7 nucleo 144 boards (ref MB1364)
have the LD2 on PE1 pin (not PB7). This commit change this
in the doc. Board DTS are correct.

Signed-off-by: Francois Ramu <francois.ramu@st.com>
2024-10-03 17:09:16 +01:00
Emil Gydesen
205a99f97f doc: migration-guide: Add LE Audio entry for dynamic TBS
The TBS and GTBS shall now be registered at runtime and can
no longer be registered statically. This requires a change in
the applications using this.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2024-10-03 17:09:08 +01:00
Seppo Takalo
77e09916f7 tests: lwm2m: Remove qemu-cortex-m3
This board just don't have enough RAM for all tests
so it is just a maintenance headache without any
benefits.

Signed-off-by: Seppo Takalo <seppo.takalo@nordicsemi.no>
2024-10-03 17:08:55 +01:00
Seppo Takalo
871aab7c45 tests: lwm2m: Fix minor timing issues on tests
* Wait for update when new object is created

  Sometimes our blockwise transfer starts before server have
  received an LwM2M Update. This causes Leshan to reject the SEND
  because is was not aware of object /19/0

* Wait "registered" message already in conftest.py.
  Sometimes Qemu boots faster, and the testcase don't see the
  log.

Signed-off-by: Seppo Takalo <seppo.takalo@nordicsemi.no>
2024-10-03 17:08:55 +01:00
Benjamin Cabé
d224fa130e doc: _scripts: gen_devicetree_rest: add link to driver sources
When generating the documentation pages for the devicetree bindings, add
a link to the .c file implementing the corresponding driver, or folder
likely to contain the driver implementation, using heuristics to
determine the most likely location of the driver sources.

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2024-10-03 17:08:43 +01:00
Tomasz Moń
508bd3edef drivers: udc_dwc2: Change hibernation exit on bus reset
Adhere to programming guide steps on Hibernation Exit on Host Initiated
Reset.

Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no>
2024-10-03 17:08:36 +01:00
Tomasz Moń
f57e78de2a drivers: udc_dwc2: Suspend if connected to suspended bus
Peripherals are required to support the suspend state whenever VBUS
is powered, even if bus reset has not occurred (Mandate: Required,
Effective Date: February, 2010).

Remove the stale suspend check that essentially prevented the device
from hibernating when connected to already suspended bus.

Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no>
2024-10-03 17:08:36 +01:00
Robert Lubos
0c1550dd9f net: sockets: Remove SET_ERRNO() macro
Macros with flow control are discouraged and generate compliance error,
hence remove it and replace the corresponding code with simple errno
assignments.

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
2024-10-03 17:08:29 +01:00
Robert Lubos
bdbf7cc620 net: offload: Do not need to enable TC threads for NET_OFFLOAD
Net offloading doesn't need net TC threads to be enabled as they're used
by the native stack. This fixes build if CONFIG_NET_OFFLOAD is enabled
but native stack is disabled.

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
2024-10-03 17:08:29 +01:00
Robert Lubos
2e1d89619f net: Avoid compiling native network stack parts w/o NET_NATIVE
In case NET_NATIVE is disabled, certain network stack components do not
need to be compiled. Otherwise, they could throw errors if
--no-gc-sections compiler options is enabled.

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
2024-10-03 17:08:29 +01:00
Robert Lubos
404e9c7b88 net: sockets: Split native IP socket implementation from syscalls
Native IP socket implementation need only be build if native IP stack is
enabled. Therefore, split the native IP sockets from the common socket
syscalls shared across all socket implementations.

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
2024-10-03 17:08:29 +01:00
Tommi Rantanen
a5aed04b7e net: lib: coap: Initialize response_truncated
Fix the following compilation warning given when using newlibc:
warning: 'response_truncated' may be used
uninitialized [-Wmaybe-uninitialized]

Issue is not seen with picolibc.

The variable was introduced as part of PR #76257

Signed-off-by: Tommi Rantanen <tommi.rantanen@nordicsemi.no>
2024-10-03 17:08:21 +01:00
Florian Grandel
dd08fe5893 cmake: emu: qemu: return to ctrl-c
To avoid killing the QEMU process w/o also ending the 802.15.4
monitoring tool, we reassign the terminal's interrupt shortcut from ^C
to ^D. This change resets the shortcut to ^C after ending the QEMU
session.

Fixes #79131

Signed-off-by: Florian Grandel <fgrandel@code-for-humans.de>
2024-10-03 17:08:14 +01:00
Sadik Ozer
3f4a9c408a boards: arm: adi: Enable display for MAX32662EVKIT board
MAX32662EVKIT board has CFAF128128B1-0145T display which
is 128x128 graphic display.
This commit enable mpi dbi display support with LVGL graphic library.
Pin connection of display is 3wire mode
SRAM size increased to be fit with lvgl example.

Signed-off-by: Sadik Ozer <sadik.ozer@analog.com>
2024-10-03 17:07:25 +01:00
Sadik Ozer
98f19592f1 dts: arm: adi: Add MAX32662 missing pin definitions
This commit add missing pins that not defined in pinctrl file

Signed-off-by: Sadik Ozer <sadik.ozer@analog.com>
2024-10-03 17:07:25 +01:00
Chris Friedt
d11a0c2be9 tests: posix: common: test userspace as well
Ensure that userspace is tested in the common posix testsuite.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2024-10-03 17:07:05 +01:00
Chris Friedt
7506274ef2 posix: use sys_sem instead of k_spinlock for pool synch
Based on Andy's talk at eoss 2024, use the sys/sem.h api instead
of the spinlock.h api to synchronize pooled elements since it
has minimal overhead like semaphores but also works from
userspace.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2024-10-03 17:07:05 +01:00
Chris Friedt
5a0b1b1628 clang-format: add entry for SYS_SEM_LOCK()
SYS_SEM_LOCK() is a for-loop-like macro similar inspired by
K_SPINLOCK().

Add an entry to .clang-format so that autoformatting works as
expected.

Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
2024-10-03 17:07:05 +01:00