The runner always selected elf_file, ignoring hex_file and bin_file from
RunnerConfig. This broke MCUBoot support since the bootloader
requires hex/bin format and the build system sets hex_file to
signed images (zephyr.signed.hex).
Fixes commit 3c7d973 ("west: runners: probe-rs: Add enhanced
functionality")
Signed-off-by: Michał Bogdziewicz <michal@bogdziewicz.xyz>
Add Fish shell completion entries that are already present in the
Bash completion script but were missing from the Fish one:
- Add __zephyr_west_complete_shield for cached shield completion
- Add --shield argument completion to west build
- Add completion entries for the west shields subcommand
- Add completion entries for the west twister subcommand
Fixes#73128
Signed-off-by: Nancy Sangani <9d.24.nancy.sangani@gmail.com>
The OpenRISC CPU architecture is signified by the CONFIG_OPENRISC Kconfig
option. This patch adds this information to the log database ARCHS table.
Signed-off-by: Joel Holdsworth <jholdsworth@nvidia.com>
When the `west rtt --runner=jlink` command is executed, the client is
attached to the channel number 0 by default.. However, if several
subsystems are configured to use different RTT channels, e.g. shell to
the channel 0 and logging to the channel 1, it's currently impossible
to attach to any channel other than 0.
The `west rtt` command for the `jlink` runner is extended by a new
argument called `--rtt-channel=<channel>` where `<channel>` is an
integer, e.g. 0, 1, etc. Usage example:
west rtt --runner=jlink --rtt-channel=1
When the channel is specified, once the client is connected, it sends the
following configuration sequence:
$$SEGGER_TELNET_ConfigStr=RTTCh;<channel>$$
This configuration sequence instructs the server to send data associated
only to the given channel. This string must be send within 100 ms after
establishing a connection, otherwise it would be ignored.
The following is an example of a configuration where shell uses channel 0
and logging - channel 1:
CONFIG_SHELL=y
CONFIG_SHELL_BACKEND_RTT=y
CONFIG_SHELL_BACKEND_RTT_BUFFER=0
CONFIG_SHELL_BACKEND_SERIAL=n
CONFIG_SHELL_LOG_BACKEND=n
CONFIG_LOG=y
CONFIG_LOG_BACKEND_RTT=y
CONFIG_LOG_BACKEND_RTT_BUFFER=1
CONFIG_LOG_BACKEND_UART=n
Signed-off-by: Ilia Kharin <akscram@gmail.com>
Add a custom Kconfig preprocessor option to obtain the highest IRQn on a
controller. This can be useful to compute CONFIG_NUM_IRQS automatically at
build time.
Signed-off-by: Mathieu Choplain <mathieu.choplain-ext@st.com>
Allow fallback URLs to select a different back-end.
The "url:" field can now take a list of URLs so that if an
URL fails, the next one can be fetched (i.e. a remote host is down).
Error handling is refactored to let blobs.py call os.exit(), with a
new ZephyrBlobException used for the purpose of catching blob-fetching
related errors, and still allow i.e. KeyboardInterrupt to be raised.
Signed-off-by: Josuah Demangeon <me@josuah.net>
The spec makes it clear that node address can be omitted from node path
if not unambiguous see 2.2.3. Path Names
> A unit address may be omitted if the full path to the node is
unambiguous.
e.g.
````
/ {
foo@10 {};
}
```
both paths -> /foo and /foo@10 should work.
Signed-off-by: Kyle Bonnici <kylebonnici@hotmail.com>
IMO the spec is clear about the case insensitivity. The node address
must be match the reg value see 2.2.1.1. Node Name Requirements
> The unit-address must match the first address specified in the reg
property of the node.
reg property is a prop-encoded array and by definition.
reg = <0xA> or reg = <0xa> are the same. hence Both foo@a and foo@A
are the same.
Signed-off-by: Kyle Bonnici <kylebonnici@hotmail.com>
Wrap the picotool sign command (requires recent picotool) to build
signed ELF files (which can be later converted to UF2 as well).
The resulting files boot, yet this has not been tested with actual
Secure Boot yet.
Signed-off-by: Dmitrii Sharshakov <d3dx12.xx@gmail.com>
- monitor_serial() opens handler.log in binary mode (\"wb\") and writes
re-encoded bytes. When the runner (e.g. linkserver for frdm-mcxn947)
produces serial output that is not cleanly decodable as UTF-8, the
decode('utf-8', 'ignore') silently drops bytes and the resulting
handler.log is unreadable.
- Fix by opening handler.log in text mode with explicit UTF-8 encoding,
consistent with BinaryHandler.handle_serial() which uses open(\"w\").
Change the decode error handler from 'ignore' to 'replace' so
corruption becomes visible as replacement characters rather than
silently dropped bytes.
Signed-off-by: Jjateen Gundesha <jjateen97@gmail.com>
Add Zephyr itself, with its CPE and PURL, to the modules-deps.spdx file, to
have one accurate SBoM for vulnerability scanning. Also add DEPENDENCY_OF
relationships to be able to build up a dependency-graph with the
modules-deps.spdx SBoM
Signed-off-by: Nils Schlegelmilch <n.schlegelmilch@vega.com>
Co-authored-by: Benjamin Cabé <benjamin@zephyrproject.org>
According to the DT spec the 'phy-handle' phandle prop
is required, when a phy is used. As this phy could be
a child, we have to filter it out to not get a cycle in the graph.
This allows the phy to be a child of the eternet controller,
when using the 'phy-handle' dt prop.
Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
The espressif toolchain variant (ZEPHYR_TOOLCHAIN_VARIANT=espressif)
has not been used for years. Espressif targets are now built using the
Zephyr SDK, which bundles the required Xtensa and RISC-V toolchains.
Remove the cmake/toolchain/espressif/ directory containing generic.cmake,
target.cmake, and Kconfig files that implemented this variant. Also
clean up references in the coredump xtensa gdb stubs, removing the
ESPRESSIF toolchain enum value and related handling code.
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
Update unit tests after moving hardware reservation logic from
Handler class to HardwareMap. Relocate and rename tests to match
the new module structure and API changes.
Signed-off-by: Grzegorz Chwierut <grzegorz.chwierut@nordicsemi.no>
Hardware reservation logic moved from Handler class to ProjectBuilder
runner using context manager approach. When NoDeviceAvailableException
is raised due to no free devices, the task is re-queued for later
processing instead of blocking the execution pipeline.
The reserve_hardware() context manager handles device reservation,
yields execution control only when hardware is available, and ensures
proper cleanup in the finally block.
All DUT management logic is now consolidated in HardwareMap class,
removing DUT references from Handler classes. This improves code
maintainability by centralizing responsibilities and eliminating
shared ownership of hardware resources between modules.
Signed-off-by: Grzegorz Chwierut <grzegorz.chwierut@nordicsemi.no>
Extend the special casing of specifer space to include io-channels,
making the implementation a bit more easily scalable for the
future as well. This allows defining io-channels like gpios,
prepending a name like foo-io-channels, which is useful when
multiple groups of io-channels need to be defined for a node:
foo {
bar-io-channels = <&baz 0>, <&baz 1>;
qiz-io-channels = <&baz 2>, <&baz 3>;
};
This is useful for defining channels to be read in parralel
sequences.
Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
Increase the reset pulse from 10ms to 100ms to ensure reliable
boot across all Espressif SoCs. Shorter pulses may cause the UART
to miss early bootloader output, leading to false-positive test
failures.
Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
Adds support for outputting partition information on this new
compatible, to match fixed-partitions
Signed-off-by: Jamie McCrae <jamie.mccrae@nordicsemi.no>
This commit updates the Twister Black Box tests to expect the enhanced
toolchain variant names (i.e. `host/gnu` and `zephyr/gnu`).
Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
Zephyr SDK 1.0.0 has dropped newlib support and made picolibc the default
libc.
This commit updates the errno check script to check minimal libc error
numbers against the picolibc error numbers.
Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
support new syntax involving compiler and toolchains with multiple
compilers, i.e. zephyr/gnu
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
This commit renames the `--toolchains` and `--no-toolchains` arguments,
which control the SDK GNU toolchain installation, to `--gnu-toolchains` and
`--no-gnu-toolchains` to avoid any confusion with the SDK LLVM toolchain.
The old `--toolchains` and `--no-toolchains` arguments remain supported
with a deprecation warning message.
Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
This reverts commit 1993ea019b because the
`parse_syscalls.py` script has been modified to not output whitespace
characters other than spaces in the generated JSON file.
Signed-off-by: Loek Le Blansch <loek.le-blansch.pv@renesas.com>
Syscall regex matches may include whitespace characters other than space
(i.e. `\n` or `\t`), which causes `gen_syscalls.py` to fail. This mainly
affects long system call signatures wrapped onto multiple lines (e.g. by
code formatter). This change replaces all successive whitespace in the
regex match groups with a single space.
Signed-off-by: Loek Le Blansch <loek.le-blansch.pv@renesas.com>
Allow passing custom J-Link commands to the jlink runner via
--pre-script-cmd argument. The argument can be given multiple times. The
commands are prepended to runner.jlink in the given order.
Signed-off-by: Thorsten Klein <thorsten.klein@bshg.com>
Update completion scripts to use `west boards --all-targets` to obtain
the list of targets, instead of using shell black magic to perform
string parsing and modification. As a result, all shells get board
revision support.
Signed-off-by: Jordan Yates <jordan@embeint.com>
Add an option to `west boards` that automatically outputs all valid
board targets as a newline separated list without requiring any post
processing.
Signed-off-by: Jordan Yates <jordan@embeint.com>
Stop requesting west extension authors to "keep in sync" an unused .help
duplicate. Empty such duplicates from existing extensions. They cannot
be `None` yet because current west versions unfortunately require them.
Since the beginning of west extensions (2019 commit d3bb3cfd7a)
extension authors have been requested to provide not just a "help" field
in west-commands.yml, but also a duplicate in their WestCommmand
constructor than they should carefully "keep in sync".
While doing some unrelated extension work, I discovered by chance
that this duplicate has never been used. See detailed analysis in
https://github.com/zephyrproject-rtos/west/issues/927, shorter analysis
in https://github.com/zephyrproject-rtos/west/pull/933 and smoking gun
in the "TODO" comment added by west commit
0d39b6b77a
Signed-off-by: Marc Herbert <Marc.Herbert@gmail.com>
On macOS, calling socket.connect() may fail with
OSError(22, 'Invalid argument') if it occurs at a certain point after
JLinkGDBServer has started. This leaves the socket in an unrecoverable
state, meaning that all subsequent connection attempts using the same
socket fail with the same error.
The fix is to close the socket on known errors, wait, create a new
socket and try to connect again.
Signed-off-by: Ilia Kharin <akscram@gmail.com>
Add a compliance check to make sure that the rules in
doc/build/dts/bindings-upstream.rst (section "File names") are
followed from now on.
Signed-off-by: Martí Bolívar <marti.bolivar@oss.qualcomm.com>
When generating device dependency arrays, the supported devices list
is currently sorted by device handle. This can cause child devices to
be processed before their parent devices when a power domain resumes,
leading to hardware access errors.
This fix changes the sorting key for supported devices from device
handle to dependency ordinal, ensuring that parent devices are always
processed before their children during power domain operations.
The sorting is performed at build time, so there is no runtime
overhead.
Signed-off-by: Yongxu Wang <yongxu.wang@nxp.com>
Introduce a reusable CMake function that creates an OBJECT library
from a C source file containing GEN_ABSOLUTE_SYM() declarations and
generates a header file from the resulting symbols. This encapsulates
the boilerplate needed for the offsets-style pattern: OBJECT library
creation, LTO prohibition, gen_offset_header.py invocation, and
dependency registration.
Convert the existing offsets.h generation to use this new function.
The zephyr_generated_headers target is moved earlier in CMakeLists.txt
so that subsystem CMakeLists.txt files can register generated headers
via zephyr_constants_library().
Also update gen_offset_header.py to derive the include guard from the
output filename instead of hardcoding __GEN_OFFSETS_H__, and remove the
unused input_name parameter. This allows multiple generated headers to
coexist with distinct include guards.
Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
Extend the ARM Cortex-M coredump arch block to version 3 with metadata
that provides the offset to the callee_saved struct within k_thread.
This enables the coredump GDB stub to accurately retrieve callee-saved
registers (r4-r11) for non-faulting threads during multi-thread
debugging.
Signed-off-by: Mark Holden <mholden@meta.com>
When `-z nostackexec` or `-z stackexec` option is specified, GNU ld adds a
segment of type `PT_GNU_STACK` with zero VMA/LMA and size to the output ELF
file.
Since the sole purpose of `PT_GNU_STACK` segment is to mark whether the
stack should be executable and it has no loadable details, this commit
updates the gen_image_info script to omit it from the image information
header file.
Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
The nRF54L series devices require to reserve 2 KMU slots which are
filled with random data used for invalidating the Protected RAM.
Until now the provisioning of these slots happends in firmware which
costs in both volatile and non volatile memory.
Instead of doing this nrfutil recently added the funcionality to
provision these slots using a .json file which means that everything
can be handled by the build system now.
This is preparation work, that is needed before the full integration
arrives. The change checks if a json file with the name:
"prot_ram_inv_slots.json" exists and if it does it invokes nrfutil
with the provisioning command.
Signed-off-by: Georgios Vasilakis <georgios.vasilakis@nordicsemi.no>