We are pleased to announce the release of Zephyr RTOS version 2.6.0.
Major enhancements with this release include:
Logging subsystem overhauled
Added support for 64-bit ARCv3
Split ARM32 and ARM64, ARM64 is now a top-level architecture
Added initial support for Arm v8.1-m and Cortex-M55
Removed legacy TCP stack support which was deprecated in 2.4
Tracing subsystem overhaul including expansion for tracing points and added support for Percepio Tracealyzer
Device runtime power management (PM), former IDLE runtime, was completely overhauled.
Added an example standalone Zephyr application in its own Git repository: https://github.com/zephyrproject-rtos/example-application
The following sections provide detailed lists of changes by component.
You can check all currently known issues by listing them using the GitHub interface and listing all issues with the bug label.
Driver APIs now return
-ENOSYSif optional functions are not implemented. If the feature is not supported by the hardware
-ENOTSUPwill be returned. Formerly
-ENOTSUPwas returned for both failure modes, meaning this change may require existing code that tests only for that value to be changed.
wait_for_usb_dfu()function now accepts a
k_timeout_targument instead of using the
Added disconnect reason to the
Align error handling of :c:func:bt_l2cap_chan_send and
bt_iso_chan_send()so when an error occur the buffer is not unref.
lwm2m_engine_delete_obj_inst()function to the LwM2M library API.
Deprecated in this release
DT_INST_CLOCKS_LABELwas deprecated in favor of utilizing
DT_INST_PWMS_LABELwas deprecated in favor of utilizing
DT_INST_IO_CHANNELS_LABELwere deprecated in favor of utilizing
USB HID specific macros in
<include/usb/class/usb_hid.h>are deprecated in favor of new common HID macros defined in
USB HID Kconfig option USB_HID_PROTOCOL_CODE is deprecated. USB_HID_PROTOCOL_CODE does not allow to set boot protocol code for specific HID device. USB HID API function usb_hid_set_proto_code() can be used instead.
USB HID class API is changed by removing get_protocol/set_protocol and get_idle/set_idle callbacks. These callbacks are redundant or do not provide any additional value and have led to incorrect usage of HID class API.
CONFIG_OPENOCD_SUPPORTKconfig option has been deprecated in favor of
Disk API header
<include/disk/disk_access.h>is deprecated in favor of
CONFIG_NET_CONTEXT_TIMESTAMPis removed as it was only able to work with transmitted data. The same functionality can be achieved by setting
CONFIG_NET_PKT_TXTIME_STATSoptions. These options are also able to calculate the RX & TX times more accurately. This means that support for the SO_TIMESTAMPING socket option is also removed as it was used by the removed config option.
The device power management (PM) APIs and data structures have been renamed from
pm_device_*since they are not device APIs but PM subsystem APIs. The same applies to enumerations and definitions, they now follow the
PM_DEVICE_*convention. Some other API calls such as
device_get_power_statehave been renamed to
pm_device_state_getin order to align with the naming of other device PM APIs.
The runtime device power management (PM) APIs is now synchronous by default and the asynchronous API has the _async sufix. This change aligns the API with the convention used in Zephyr. The affected APIs are
The following functions, macros, and structures related to the kernel work queue API:
Removed APIs in this release
Removed support for the old zephyr integer typedefs (u8_t, u16_t, etc…).
Removed support for k_mem_domain_destroy and k_mem_domain_remove_thread
Removed support for counter_read and counter_get_max_relative_alarm
Removed support for device_list_get
Stable API changes in this release¶
k_mem_unmap()so anonymous memory mapped via
k_mem_map()can be unmapped and virtual address reclaimed.
Added the ability to gather more statistics for demand paging, including execution time histograms for eviction algorithms and backing stores.
Added new ARCv3 64bit ISA support and corresponding HS6x processor support
Hardened SMP support
Various minor fixes/improvements for ARC MWDT toolchain infrastructure
Refactor of ARC Kconfig
Added support for null pointer dereferencing detection in Cortex-M.
Added initial support for Arm v8.1-m and Cortex-M55.
Added support for preempting threads while they are performing secure calls in Cortex-M.
Added support for memory region generation by the linker based on device tree node information in Cortex-M.
Cleaned up definitions of SoC-specific memory regions in the common Cortex-M linker script.
Added support for clearing NXP MPU region configuration during Zephyr early boot stage.
Disallowed fpu hard ABI when building Non-Secure applications with TF-M on Cortex-M33.
Enhanced register information dump in fault exceptions in Cortex-R.
Fixed spurious interrupt handling in Cortex-R.
MMU dynamic mappings with page table sharing.
Userspace (unprivileged) thread support.
Standalone SMCCC support.
ARM64 is now a top-level standalone architecture.
Support for Cortex-R82 and Armv8-R AArch64 MPU.
Cache management support.
Revamped boot code.
Full FPU context switching.
Added SoC configuration for Lakemont SoC.
CONFIG_CPU_MINUTEIAas there is no user of this option.
Extended the pagetable generation script to allow specifying additional memory mapping during build.
Added support for kernel image to reside in virtual address space, allowing code execution and data manipulation via virtual addresses.
Split up ISO handling from audio handling, and moved the latter to its own directory.
Added the Volume Offset Control Service and client.
Added the Audio Input Control Service and client.
Added the Volume Control Service and client.
Added basic support for Direction Finding.
Added support for CTE connectionless transimission and reception over periodic advertising.
Refactored the HCI and ECC handling implementations.
Stopped auto updating the device name in the adv data.
Added support for logging security keys to be used by an air sniffer.
Fixed a bonding issue where the local bond data was not being updated after the remote device had removed it when the peer was not using the IRK stored in the bonding information.
Implemented the directory listing object to OTS.
Added a function to access the
Added a new configuration option for writeable device name.
Added a new configuration option for minimum encryption key size.
Added support for keypress notifications as an SMP responder.
Added a new option,
BT_LE_ADV_OPT_FORCE_NAME_IN_AD, which forces the device name to appear in the adv packet instead of the scan response.
Added a security level check when sending a notification or indication.
Added the ability to send HCI monitor traces over RTT.
Refactored the Bluetooth buffer configuration for simplicity. See the commit message of 6483e12a8ac4f495b28279a6b84014f633b0d374 for more info.
Added support for concurrent advertising with multiple identities.
Changed the logic to disable scanning before setting the random address.
Fixed a crash where an ATT timeout occurred on a disconnected ATT channel.
Changed the pairing procedure to fail pairing when both sides have the same public key.
Fixed an issue where GATT requests could deadlock the RX thread.
Fixed an issue where a fixed passkey that was previously set could not be cleared.
Fixed an issue where callbacks for “security changed” and “pairing failed” were not always called.
Changed the pairing procedure to fail early if the remote device could not reach the required security level.
Fixed an issue where GATT notifications and Writes Without Response could be sent out of order.
Changed buffer ownership of
bt_l2cap_chan_send. The application must now release the buffer for all returned errors.
Added CDB handle key refresh phase.
Added the ability to perform replay checks on SeqAuth.
Added the sending of a Link Close message when closing a link.
Added a Proxy callback structure for Node ID enabling and disabling.
Added a check for the response address in the Configuration Client.
Introduced a new acknowledged messages API.
Reworked the periodic publication timer and poll timeout scheduling logic.
Added reporting configured
Ensured that provisioning output count number is at least 1.
Ensured to encrypt initial friend poll with friend credentials.
Stopped resetting the PB ADV reliable timer on retransmission.
Bluetooth LE split software Controller
Removed support for the nRF5340 PDK. Use the nRF5340 DK instead.
Added basic support for Direction Finding.
Added support for CTE connectionless transimission and reception over periodic advertising.
Added support for antenna switching in the context of Direction Finding.
Added an invalid ACL data length check.
Added basic support for the ISO Adaptation Layer.
Added experimental support for Broadcast Isochronous Groups and Streams.
Added partial experimental support for Connected Isochronous Groups and Streams.
Implemented extended connection creation and cancellation.
Changed the policy to ignore connection requests from an already-connected peer.
Added a control procedure locking system.
Added GPIO PA/LNA support for the Nordic nRF53x SoC series.
Added FEM support for the nRF21540 IC.
Added a new radio API to configure the CTE RX path.
Added support for the Espressif ESP32 platform.
Boards & SoC Support¶
Added support for these SoC series:
STM32G03yxx, STM32G05yxx, STM32G070xx and STM32G0byxx
STM32G4x1, STM32G4x3 and STM32G484xE
Nuvoton npcx7m6fc, and npcx7m6fc
Renesas R-Car Gen3
Silicon Labs EFR32FG13P
Removed support for these SoC series:
Made these changes in other SoC series:
Added Cypress PSoC-6 pinctrl support.
STM32 L4/L5/WB series were updated for better power management support (CONFIG_PM=y).
Backup SRAM added on a selection of STM32 series (F2/F4/F7/H7)
Set TRACE_MODE to asynchronous and enable trace output pin on STM32 SoCs
Changes for ARC boards:
Added nSIM and QEMU simulation boards (nsim_hs6x and qemu_arc_hs6x) with ARCv3 64bit HS6x processors
Enabled MPU on qemu_arc_hs and qemu_arc_em boards
Added cy8c95xx GPIO expander support to HSDK board
Added support for these ARM boards:
Actinius Icarus SoM
Laird Connectivity BL654 Sensor Board
Laird Connectivity Sentrius BT6x0 Sensor
EFR32 Radio BRD4255A Board
Renesas R-Car H3ULCB
Ronoth LoDev (based on AcSIP S76S / STM32L073)
nRF9160 Thing Plus
ST Nucleo F030R8
ST Nucleo G0B1RE
ST Nucleo H753ZI
ST Nucleo L412RP-P
ST Nucleo WL55JC
ST STM32G071B Discovery
u-blox EVK-BMD-30/35: BMD-300-EVAL, BMD-301-EVAL, and BMD-350-EVAL
u-blox EVK-BMD-330: BMD-330-EVAL
u-blox EVK-BMD-34/38: BMD-340-EVAL and BMD-341-EVAL
u-blox EVK-BMD-34/38: BMD-345-EVAL
u-blox EVK-BMD-360: BMD-360-EVAL
u-blox EVK-BMD-34/48: BMD-380-EVAL
u-blox EVK NINA-B11x
u-blox EVK NINA-B40x
Added support for these ARM64 boards:
Removed support for these ARM boards:
ARM V2M Musca-A
Nordic nRF5340 PDK
Removed support for these X86 boards:
Made these changes in other boards:
cy8ckit_062_ble: Refactored to configure by pinctrl.
cy8ckit_062_ble: Added support to SCB[uart] with interrupt.
cy8ckit_062_ble: Added support to SCB[spi].
cy8ckit_062_ble: Added board revision schema.
cy8ckit_062_wifi_bt: Refactored to configure by pinctrl.
cy8ckit_062_wifi_bt: Added support to SCB[uart] with interrupt.
lpcxpresso55s16: Board renamed from lpcxpresso55s16_ns to lpcxpresso55s16 since the board does not have Trusted Firmware M (TF-M) support.
lpcxpresso55s28: Removed lpcxpresso55s28_ns config since the board does not have Trusted Firmware M (TF-M) support.
mimxrt685_evk: Added support for octal SPI flash storage, LittleFS, I2S, OS timer, and power management.
mimxrt1060_evk: Added support for QSPI flash storage, LittleFS, and mcuboot.
mimxrt1064_evk: Added support for mcuboot.
Added support for these following shields:
FTDI VM800C Embedded Video Engine Board
Generic ST7735R Display Shield
Semtech SX1272MB2DAS LoRa Shield
Drivers and Sensors¶
Added support on TI CC32xx.
Added support on ITE IT8xxx2.
Added support for DMA and HW triggers in the MCUX ADC16 driver.
Added ADC emulator.
Moved definitions of ADC acquisition time macros so that those macros can be used in dts files.
The Kconfig option
CONFIG_BT_CTLR_TO_HOST_UART_DEV_NAMEwas removed. Use the zephyr,bt-c2h-uart chosen node directly instead.
A driver for CAN-FD based on the Bosch M_CAN IP was added. The driver currently supports STM32G4 series MCUs. Additional support for Microchip SAM and NXP chips is in progress.
The CAN ISO-TP subsystem was enhanced to allow padding and fixed addressing.
On STM32 series, system clock configuration has been moved from Kconfig to DTS. Usage of existing Kconfig dedicated symbols (CONFIG_CLOCK_STM32_FOO) is now deprecated.
Added clock control driver for Renesas R-Car platform
UART_CONSOLE_INPUT_EXPIRED_TIMEOUTKconfig options to notify the power management module that UART console is in use now and forbid it to enter low-power states.
Added support for ESP32 Counter
Added support for Microchip MCP4725
Added SDMMC support on STM32L4+
Added support for ST7735R
Moved disk drivers (
drivers/diskand renamed according to their function.
Fixed CMD6 support in USDHC driver.
Fixed clock frequency switching after initialization in
Added support on STM32G0 and STM32H7
Added support for EEPROM emulated in flash.
Added support for Microchip eSPI SAF
Added simulated PTP clock to e1000 Ethernet controller. This allows simple PTP clock testing with Qemu.
Separated PTP clock from gPTP support in mcux and gmac drivers. This allows application to use PTP clock without enabling gPTP support.
Converted clock control to use DEVICE_DT_GET in mcux driver.
Changed to allow changing MAC address in gmac driver.
Driver for STM32H7 is now using specific memory layout to fit DMA constraints for RAM accesses.
flash_write_protection_set() has been deprecated and will be removed in Zephyr 2.8. Responsibility for write/erase protection management has been moved to the driver-specific implementation of the flash_write() and flash_erase() API calls. All in-tree flash drivers have been updated, and the protect implementation removed from their API tables. During the deprecation period user code invoking flash_write_protection_set() will have no effect, but the flash_write() and flash_erase() driver shims will wrap their calls with calls to the protect implementation if it is present in the API table. Out-of-tree drivers must be updated before the wrapping in the shims is removed when the deprecation period ends.
Added QSPI support on STM32F7.
New macros for initializing
Remove support for
gpio_pin_configure(). The feature has been deprecated in the Zephyr 2.2 release. The interrupt flags are now accepted by
STM32 GPIO driver now supports clock gating using PM_DEVICE and PM_DEVICE_RUNTIME
Added GPIO driver for Renesas R-Car platform
Added support on Silicon Labs Gecko SoCs
Added support on STM32F2
Added support for NXP LPC devices
Fixed various issues in IEEE 802.15.4 L2 driver.
Made HW Radio Capabilities runtime.
Enabled CSMA-CA on serialized host.
Changed driver to load EUI64 from UICR.
Added support for tx mode direct.
Added support for tx mode CCA.
Added support to enable promiscuous mode.
Added support to enable pan coordinator mode.
Moved shared interrupt controller configuration to be based on devicetree.
Add support for LED GPIO
Added power management support for LED PWM
Added support for SX1272
Converted wncm14a2a, quectel-bg9x, hl7800 and ublox-sara-r4 drivers to use new DT device macros.
Changed GSM modem to optionally do a factory reset when booting.
Added autostarting support to GSM modem.
Added wait for RDY instead of polling AT in BG9X.
Fixed PDP context management for BG9X.
Added TLS offload support to ublox-sara-r4.
Made reset pin optional in ublox-sara-r4.
Fixed potential buffer overrun in hl7800.
Fixed build errors on 64-bit platforms.
Added support for dialup modem in PPP driver.
Added support on STM32F2 and STM32L1.
Added support on Silicon Labs Gecko SoCs.
Added support for STM32 internal (CPU) temperature sensor.
Refactored mulitple ST sensor drivers to use gpio_dt_spec macros and common stmemc routines, support multiple instances, and configure ODR/range properties in device tree.
Added SBS 1.1 compliant fuel gauge driver.
Added MAX17262 fuel gauge driver.
Added BMP388 pressure sensor driver.
Added Atmel SAM QDEC driver.
Added TI FDC2X1X driver.
Added support for MPU9250 to existing MPU6050 6-axis motion tracking driver.
Refactored BME280 temperature/pressure sensor driver.
Added BMI270 IMU driver.
Added Nuvoton tachometer sensor driver.
Added MAX6675 cold-junction-compensated K-thermocouple to digital converter.
Extended Cypress PSoC-6 SCB[uart] driver to support interrupts.
Added UART driver for Renesas R-Car platform
Added Cypress PSoC-6 SCB[spi] driver.
Default SPI_SCK configuration is now pull-down for all STM32 to minimize power consumption in stop mode.
Added x86 APIC TSC_DEADLINE driver.
Added support for NXP MCUX OS Timer.
Added support for Nuvoton NPCX system timer.
Added CMT driver for Renesas R-Car platform.
Added support on STM32H7
Added attached event delay to usb_dc_nrfx driver
Added support for TI CC32xx watchdog.
Converted eswifi and esp drivers to new DT device macros
Fixed hostname configuration.
Removed POSIX API dependency.
Renamed offloading driver from esp to esp_at.
Added esp32 wifi driver support.
Fixed coap_find_options() to return 0 when options are empty.
Fixed DHCPv4 dependency to network event management options.
Added locking to DNS library prevent concurrent access.
Added 10ms delay when rescheduling query timeout handler in DNS. This allows applications to run and handle the timeout gracefully.
Added support for reconfiguring DNS resolver when DNS servers are changed. This is supported by DHCPv4 and PPP.
Added support for storing numeric HTTP error code in client API.
Added IGMPv2 support to IPv4.
Removed IPv4 multicast address check when selecting source address during TX.
Fixed query buffer size so that it is large enough to encode all query strings.
Added data validation callback.
Fixed Register/Update to use link_format writer.
Added application/link-format content writer.
Removed .well-known/core handling.
Introduced attribute handling helper functions.
Removed obsolete LWM2M_IPSO_TIMESTAMP_EXTENSIONS option.
Added IPSO Buzzer, Push Button, On/Off Switch, Accelerometer, Pressure Sensor, Humidity, Generic Sensor and Temperature object implementation to support object model in version 1.1
Unified reusable resources creation.
Added support for object versioning.
Changed to allow cancel-observe to match path.
Made pmin and pmax attributes optional.
Added API function to delete object instance.
Fixed Registration Update send on object creation.
Changed to only parse TLV from the first block.
Changed to trigger registration update only when registered.
Added UDP packet sending support to net-shell.
Fixed source network interface setting when sending and when there are multiple network interfaces.
Changed connection managed to ignore not used network interfaces.
Added locking to network interface API function calls.
Changed to allow application to disable IPv4 or IPv6 support for a network interface.
Added support for virtual network interfaces.
Added support for IPv4/v6 tunneling network interface.
Added net events notification for PPP dead and running states.
Added PPP LCP MRU option support.
Added PPP IPCP IP and DNS address peer options support.
Added support for network packet capturing and sending data to external system for analysis.
Enabled running without TX or RX threads. By default, one RX thread and no TX thread is created. If userspace support is enabled, then one RX and one TX thread are created. This improves the network transmit latency when a packet is sent from application.
Changed to push highest priority net_pkt directly to driver when sending and if there is at least one TX thread.
Changed to use k_fifo instead of k_work in RX and TX processing. This prevents k_work from accessing already freed net_pkt struct. This also improves the latency of network packets when the data is passed between different network threads.
Changed to check network interface status when sending and return ENETDOWN to the application if data cannot be sent.
Fixed echo-server sample application and set netmask properly when VLAN is enabled.
Added microseconds timer API support.
Changed to switch radio off when stopping diagnostics.
Enabled CSL delayed transmissions.
Added CSL transmitter and receiver API support.
Changed to init NCP after USB communication is established.
Aligned with the new NCP API.
Aligned with the new CLI API.
Introduced new OpenThread options.
Added Link Metrics API support.
Selected ECDSA when SRP is enabled.
Made child related options only visible on FTD.
Changed OT shell not to execute OT commands when shell is not ready.
Added SO_PROTOCOL and SO_TYPE get socket option.
Added MSG_WAITALL receive socket option flag.
Added MSG_TRUNC socket option flag.
Added support for close method for packet sockets.
Added locking to socket API function calls.
Added support for SO_BINDTODEVICE socket option.
Added support for SO_SNDTIMEO socket option.
Made NET_SOCKETS_POSIX_NAMES be on by default. This allows application to use normal BSD socket API calls without adding the zsock prefix.
Added sample application to use SO_TXTIME socket option.
Implemented ISN calculation according to RFC6528 in TCP. This is optional and enabled by default, and can be disabled if needed.
Removed legacy TCP stack support.
Changed TCP to use private work queue in order not to block system work queue.
Fixed userspace access to TLS socket.
Added socket option support for setting and getting DTLS handshake timeout.
Reworked USB classes configuration. Various minor fixes in USB DFU class.
USB HID class
Removed get_protocol/set_protocol from USB HID class API.
Allowed boot interface Protocol Code to be set per device.
Rework idle report implementation.
Allowed to build USB Audio sampe for different platforms.
Added SD card support to USB MSC sample.
Reworked USB HID sample.
Build and Infrastructure¶
Improved support for additional toolchains: * Support for the Intel oneApi toolchain.
DT_COMPAT_GET_ANY_STATUS_OKAY: new macro
This change was made to bring Zephyr’s devicetrees into compliance with an upstream Linux regular expression used to validate compatible properties. This regular expression requires a letter as the first character.
Changes to the runners backends used for flashing and debugging commands:
bossac runner: added legacy mode option into extended SAM-BA bootloader selection. This extends compatibility between Zephyr and some Arduino IDE bootloaders.
jlink runner: Zephyr thread awareness is now available in GDB by default for application builds with
yin Configuration System (Kconfig). This applies to
west debugserver, and
west attach. JLink version 7.11b or later must be installed on the host system, with JLink 7.20 or later strongly recommended.
jlink runner: default
west flashoutput is less verbose. The old behavior is still available when run as
west --verbose flash.
jlink runner: when flashing, this runner now prefers a
.hexfile generated by the build system to a
.bin, the HEX format includes information on the image’s address range in flash, so this works better when flashing Zephyr images linked for locations other than the target’s boot address, e.g. images meant to be run by bootloaders. The
.binfile is still used as a fallback if a HEX File is not present.
openocd runner: support for
west attachhas been fixed. Previously with this runner,
west debugbehaved like
west attachshould, and
west attachbehaved like
pyocd runner: board-specific pyOCD configuration files in YAML can now be placed in
support/pyocd.yamlinside the board directory. See boards/arm/reel_board/support/pyocd.yaml for an example, and the pyOCD documentation for details on its configuration format.
west spdx: new command which can be used to generate SPDX software bills of materials for a Zephyr application build. See Software bill of materials: west spdx.
Libraries / Subsystems¶
Disk drivers (
disk_access_*.c) are moved to
drivers/diskand renamed according to their function. Driver’s Kconfig options are revised and renamed. SDMMC host controller drivers are selected when the corresponding node in devicetree is enabled. Following application relevant Kconfig options are renamed:
Fixed an issue with the file system management failing to open files due to missing initializations of
Fixed an issue where multiple SMP commands sent one after the other would corrupt CBOR payload.
Fixed problem where mcumgr over shell would stall and wait for retransmissions of frames.
Moved CMSIS portability layer headers to include/portability/cmsis_os.h and include/portability/cmsis_os2.h
device_pm_control_nophas been removed in favor of
NULLwhen device PM is not supported by a device. In order to make transition easier for out-of-tree users a macro with the same name is provided as an alias to
NULL. The macro is flagged as deprecated to make users aware of the change.
Devices set as busy are no longer suspended by the system power management.
The time necessary to exit a sleep state and return to the active state was added in
zephyr,power-statebinding and accounted when the system changes to a power state.
Device runtime power management (PM), former IDLE runtime, was completely overhauled.
Multiple threads can wait an operation (
pm_device_put_async()) to finish.
A new API
pm_device_wait()was added so that drivers can easily wait for an async request to finish.
The API can be used in pre-kernel stages.
Several concurrence issues related with atomics access and the usage of the polling API have been fixed. Condition variables are now used to handle notification.
Introduced logging v2 which allows logging any variable types (including floating point variables). New version does not require transient string duplication (
log_strdup()). Legacy mode remains and is still the default but user API is not changed and modes are interchangeable.
CONFIG_LOG2_MODE_IMMEDIATEenable logging v2. Logging backend API is extended to support v2 and the most popular backends (UART, shell) are updated.
CONFIG_SHELL_BACKEND_DUMMY_BUF_SIZEoption that allows to set size of the dummy backend buffer; changing this parameter allows to work around issue, where output from command, shell that is gathered by the dummy backend, gets cut to the size of buffer.
Added persistent write progress to stream_flash.
This new subsystem was added with this release and allows supervision of individual threads. It is based on a regularly updated kernel timer, whose ISR is never actually called in regular system operation.
An existing hardware watchdog can be used as an optional fallback if the task watchdog itself gets stuck.
CONFIG_TRACING_CPU_STATSwas removed in favor of
CONFIG_THREAD_RUNTIME_STATSwhich provides per thread statistics. The same functionality is also available when Thread analyzer is enabled with the runtime statistics enabled.
Expanded and overhauled tracing hooks with more coverage and support for tracing all kernel objects and basic power management operations.
Added support for Percepio Tracealyzer, a commercial tracing tool which now has built-in support for Zephyr. We now have the Percepio tracerecorder integrated as a module.
Expanded support for the new hooks in SEGGER Systemview and enhanced the description file with support for all APIs.
Debug * SEGGER Systemview and RTT SDK updated to version v3.30
Reboot functionality has been moved to
subsys/power. A consequence of this movement is that the
<power/reboot.h>header has been moved to
<power/reboot.h>is still provided for compatibility, but it will produce a warning to inform users of the relocation.
HALs are now moved out of the main tree as external modules and reside in their own standalone repositories.
Synchronized Trusted-Firmware-M module to the upstream v1.3.0 release.
Configured QEMU to run Zephyr samples and tests in CI on mps2_an521_nonsecure (Cortex-M33 Non-Secure) with TF-M as the secure firmware component.
Added Kconfig options for selecting the desired TF-M profile and build type
Added Kconfig options for enabling the desired TF-M secure partitions
Added a new sample to run the PSA tests with Zephyr
Added a new sample to run the TF-M regression tests using the Zephyr build system
Added support for new platforms
NOTE: Trusted-Firmware-M can not currently be used with mbedtls 2.26.0 when PSA APIs are enabled in mbedtls (
MBEDTLS_PSA_CRYPTO_C). If both TF-M and mbedtls are required, mbedtls must be used without the PSA APIs. This will be resolved in a future update to mbedtls.
Documentation look and feel has been improved by using a new stylesheet.
Doxygen is now run by Sphinx using the
doxyrunnercustom extension. The new extension centralizes multiple scattered workarounds that existed before in a single place.
Doxygen now runs with
Documentation known warnings are now filtered using a custom Sphinx extension:
warnings_filter. This extension removes the need of post-processing the Sphinx output and allows to use the
-Woption (treat warnings as errors) which has been enabled by default.
External content, e.g. samples and boards documentation is now handled by the
Sphinx is now run in parallel mode by default (
The documentation helper
Makefilehas been moved from the repository root to the
Tests and Samples¶
dt_compat_enabled_with_alias()test case filter was deprecated in favor of a new
dt_enabled_alias_with_parent_compat()filter. The old filter is still supported, but it may be removed in a future release.
To update, replace uses like this:
filter: dt_compat_enabled_with_alias("gpio-leds", "led0")
filter: dt_enabled_alias_with_parent_compat("led0", "gpio-leds")
Add a feature which handles pytest script in twister and provide an example.
Provide test excution time per ztest testcase.
Added and refined some testcases, most of them are negative testcases, to improve the test code coverage:
Testcases of x86’s regular/direct interrupts and offload job from ISR.
Testcases of SMP, and enabled SMP for existed testing of semaphore, condvar, etc.
Testcases of memory protection, userspace and memory heap.
Testcases of data structure include stack, queue, ringbuffer and rbtree.
Testcases of IPC include pipe, poll, mailbox, message queue.
Testcases of synchronization include mutex, semaphore, atomic operations.
Testcases of scheduling and thread.
Testcases of testing for arch_nop() and errno.
Testcases of libc and posix API.
Testcases of log and sensor subsystem.