__SIZEOF_INT__ is required by zephyr_stdint.h, however the __SIZEOF_*__
macros were only introduced in GCC 4.3.
This patch adds a work-around similar to that present in picolibc's
_default_types.h which attempts to guess the correct value of the
definition based on the value of __INT_MAX__ or from INT_MAX from
POSIX <limits.h> .
Signed-off-by: Joel Holdsworth <jholdsworth@nvidia.com>
Support for __builtin_unreachable() was added to GCC in the 4.5.0 release.
This patch adds a fallback to __builtin_trap() for older compilers which
do not have this built-in available.
Signed-off-by: Joel Holdsworth <jholdsworth@nvidia.com>
GCC versions starting from 4.3.0 until 12.4.0 stored the limits.h header in
a directory named include-fixed/ . Before 4.3.0 and after 12.4.0 i.e. from
13.1.0 onward, the header is stored in a directory named include/ .
Previously, target.cmake would only detect if the GCC version was 13.1.0 or
newer. This patch adds a check to also check if it is older than 4.3.0.
Signed-off-by: Joel Holdsworth <jholdsworth@nvidia.com>
GCC versions before 4.5 do not have the -fno-lto flag and give an error if
it is used. The flag may also be unavailable on various other non-GCC
compilers.
Previously, the picolibc CMakeList.txt script assumed that the flag was
available, and hard-coded it as an addition to the compiler flags.
This patch improves compatibility by making use of the already existing
"prohibit_lto" CMake target compiler property, which is set to the
appropriate flag to disable LTO support, or unset if the compiler lacks
such an option.
Signed-off-by: Joel Holdsworth <jholdsworth@nvidia.com>
A legacy build of GNU ld emits the following version string:
GNU ld version 2.17.50.0.9 20070103
This patch fixes the regex parsing so that the version number is correctly
extracted from the string.
Signed-off-by: Joel Holdsworth <jholdsworth@nvidia.com>
GCC versions before 7.1.0 do not have the -fno-printf-return-value flag and
give an error if it is used. This patch improves compatibility with older
compilers by making CMake check for the flag's availability before using.
Signed-off-by: Joel Holdsworth <jholdsworth@nvidia.com>
The -fdiagnostics-color flag is only on GCC versions 4.9.0 and newer.
Previously, CMake only checked that the compiler was not the XCC compiler
before using the flag.
However, given that the flag us unavailable on compilers other than XCC,
e.g. old versions of GCC, this patch replaces the previous logic with a
flag-check using the check_set_compiler_property() CMake function.
Signed-off-by: Joel Holdsworth <jholdsworth@nvidia.com>
Populate the build_info.yml created by sysbuild CMake with list of
images and write the build info file afterwards.
This allows users and external tools to examine which images was
included in the build even if one or more of those images fails CMake
configure or generate stage.
Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
Add 'images' as valid list in build info schema.
This allow sysbuild and regular Zephyr images to populate build_info.yml
with images included in the build.
Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
This commit introduce support for maps in a yaml list.
The yaml_set() function has been extended with the following signature:
> yaml_set(NAME <name> KEY <key>...
> [APPEND] LIST MAP <map1> MAP <map2> MAP ...
> )
where a `MAP <map>` has the form:
`MAP "<key1>: <value1>, <key2>: <value2>, ...`
Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
The schema for build info already contained a `board:path` sequence tag
definition, but boards.cmake did not populate this in the generated
build_info.yml.
Fix this by correctly populating the `board:path` with list of board
directories.
Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
The BT Host module also uses import/export PSA functions alongside the
generate one, so these PSA_WANT should be added as well.
Previously it happened to work only because Mbed TLS is enabling
IMPORT/EXPORT internally whenever GENERATE/DERIVE is set. However the
same might not be true for all PSA Crypto providers.
Signed-off-by: Valerio Setti <vsetti@baylibre.com>
TF-M small profile does not support secure storage (know as Protected
storage), this commit add filter for tfm test case to pass it
incase of small profile been set, see tf-m profiles in below link
https://tf-m-user-guide.trustedfirmware.org/configuration/profiles/index.html
Signed-off-by: Sadik Ozer <sadik.ozer@analog.com>
mbedtls is now used in BLE samples, increasing the stack depth needed
of the calling threads. This was causing stack overflows in several BLE
samples.
Increasing the BT_LONG_WQ_STACK stack size for peripheral_sc_only sample,
and the SYSTEM_WORKQUEUE stack size for ibeacon sample.
Signed-off-by: Jasen Liu <jasen.liu@nxp.com>
mbedtls is now used in BLE samples, increasing the stack depth needed
of the calling threads. This was causing stack overflows in several BLE
samples.
Increasing the BT_LONG_WQ_STACK stack size for peripheral_sc_only sample,
and the SYSTEM_WORKQUEUE stack size for ibeacon sample.
Signed-off-by: Jasen Liu <jasen.liu@nxp.com>
This allows to configure a GPIO pin as a CS line, in order to perform
spi transfers to a particular device in the bus.
Example usage for using GPIO1.12 with GPIO_ACTIVE_LOW:
`spi cs gpio1 12 0x01`
Signed-off-by: Luis Ubieda <luisf@croxel.com>
Implement the hj_response api for STM32 I3C. This also implements
the PM calls for enabling and disabling runtime PM. For HJ to work
the device must be powered on and be receiving a clock.
Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
Make a pointer to data that is specific to a certain type of LPSPI
driver, instead of having all of it in the struct whether it is used
or not.
Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
Add DT property to configure the LPSPI instance to use tristated output
instead of retained output when PCS is negated.
Turn on the config on a couple boards for test coverage.
Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
Add a new section to the llext documentation that explains how to debug
extensions and how to address the issues that may arise when doing so.
Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
LLEXT-related files are currently scattered in multiple locations in the
build directory. For easier access, this patch groups the outputs in a
subdirectory named 'llext' at the root of the build binaries, alongside
the 'zephyr' directory. This directory will thus contain the generated
debug ELF and the final .llext file for each compiled extension.
Note that this does not affect out-of-tree projects that use LLEXT,
since they already pass the full LLEXT file path to add_llext_target().
Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
The ELF format allows for multiple string and symbol tables with
complex references between them. This is especially evident when
debugging information is included.
This patch fixes the issues that have been identified with multiple
string tables to allow LLEXT to properly parse those files:
* The symbol table used by LLEXT (LLEXT_MEM_SYMTAB) is now chosen
depending on the loaded file type, and other tables are ignored.
This change is also applied to the SLID injection script.
* The LLEXT string table (LLEXT_MEM_SYMTAB) is now correctly identified
by the symbol table reference, instead of picking the first one.
* VMA range checks only make sense for allocated sections.
Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
This patch adds a debug log message to display the addresses of the
sections in a format that can be used with the gdb 'add-symbol-file'
command to properly inform the debugger about the final addresses for
the loaded sections.
Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
When building an ELF file with debugging information, the compiler
places this data in sections that do not need to be loaded in memory for
the program to run. These sections are marked as "not allocated" in the
ELF section header, and can be safely ignored when loading the file.
This patch adds a check to the relocation processing code to skip
relocations acting on those non-allocated sections, allowing to load ELF
files with debugging information.
Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
This patch changes the way extensions are built to allow for debugging
information to be collected. Debug flags are now used when compiling and
linking the extension source code, generating a debuggable ELF file.
The final .llext file is then stripped of unneeded symbols, including
all debugging information, at packaging time.
The debugging flag is still removed from the EDK-exported flags.
Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
This flag is used by LLEXT to strip all unreferenced symbols and
debugging information from a binary.
Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
SRAM0 is dedicated to IBUS and caching, whereas SRAM1 is assigned to
DBUS.
This change corrects an incorrect SRAM usage that previously triggered
the following assertion due to invalid heap size calculations:
Despite of invalid SRAM usage, that triggered following assertion due
to invalid heap size calucaltions:
ASSERTION FAIL [bytes / 8U <= 0x7fffU] @ .../zephyr/lib/heap/heap.c:491
"heap size is too big"
Signed-off-by: Raphael Zimmerer <killekulla@rdrz.de>
commit c94328f3671a671ac215885c6986b0359a6a37b8
Author: David Brown <david.brown@linaro.org>
Date: Fri Jan 24 23:32:21 2025 -0700
samples: Properly filter samples by supported Rust targets
A few new samples in the Rust module were added, but missed the proper
filter and platform list, resulting in the daily twister run trying to
build these.
Signed-off-by: David Brown <david.brown@linaro.org>
Add missing bluetooth/hci.h and hci_types.h include to fix the build
error and warnings of the infineon h4 ble driver.
The driver is using bt_hci_cmd_create() and bt_hci_cmd_send_sync()
from bluetooth/hci.h, and BT_HCI_OP_RESET from bluetooth/hci_types.h
Signed-off-by: Thomas Stranger <thomas.stranger@outlook.com>
Example for creating ICM42688 dt node uses old dt option names.
Fix by changing to newest dt option names.
Signed-off-by: Nikola Petrovic <nikolaptr6@gmail.com>
Move to the latest version:
commit f82407c13059528e88bfcc892a488504e9caa80c
Author: David Brown <david.brown@linaro.org>
Date: Thu Jan 16 17:05:59 2025 -0700
This brings in numerous features to the rust support including:
- Simple logging through Zephyr's logging
- Mutex/Condvar (k_mutex, k_condvar), Semaphores (k_sem), and Queue
(k_queue)
- A rust interface to timers, both waiting for events and callback based
- A SpinMutex that protects data in a rust safe way using a spinlock
- Some documentation for the rust support. Documentation is generated,
per-pr, on the module to allow preview
- A dining philosopher sample that implements using several different
mechanism.
- Basic device support. The device tree is imported into Rust, with a
yaml file describing the association between DT nodes and devices.
- Basic interface to GPIO and flash devices.
Signed-off-by: David Brown <david.brown@linaro.org>
Improve the documentation of the IOMUXC GPR binding so that it is
clear what the cells in the specifier space of "pinmux" space mean. And
change the names of the cells to be more appropriate. "offset" instead
of "pin" and "mask" instead of "function" describes more precisely what
the cells in the specifier mean.
Signed-off-by: Declan Snyder <declan.snyder@nxp.com>