Zephyr 2.6.0 (Working Draft)¶
We are pleased to announce the release of Zephyr RTOS version 2.6.0.
Major enhancements with this release include:
The following sections provide detailed lists of changes by component.
Known issues¶
You can check all currently known issues by listing them using the GitHub interface and listing all issues with the bug label.
API Changes¶
Driver APIs now return
-ENOSYS
if optional functions are not implemented. If the feature is not supported by the hardware-ENOTSUP
will be returned. Formerly-ENOTSUP
was returned for both failure modes, meaning this change may require existing code that tests only for that value to be changed.The
wait_for_usb_dfu()
function now accepts ak_timeout_t
argument instead of using theCONFIG_USB_DFU_WAIT_DELAY_MS
macro.Added disconnect reason to the
disconnected()
callback ofbt_iso_chan_ops
.Align error handling of :c:func:bt_l2cap_chan_send and :c:func:bt_iso_chan_send so when an error occur the buffer is not unref.
Added c:func:
lwm2m_engine_delete_obj_inst
function to the LwM2M library API.
Deprecated in this release
DT_CLOCKS_LABEL_BY_IDX
,DT_CLOCKS_LABEL_BY_NAME
,DT_CLOCKS_LABEL
,DT_INST_CLOCKS_LABEL_BY_IDX
,DT_INST_CLOCKS_LABEL_BY_NAME
, andDT_INST_CLOCKS_LABEL
was deprecated in favor of utilizingDT_CLOCKS_CTLR
and variants.DT_PWMS_LABEL_BY_IDX
,DT_PWMS_LABEL_BY_NAME
,DT_PWMS_LABEL
,DT_INST_PWMS_LABEL_BY_IDX
,DT_INST_PWMS_LABEL_BY_NAME
, andDT_INST_PWMS_LABEL
was deprecated in favor of utilizingDT_PWMS_CTLR
and variants.DT_IO_CHANNELS_LABEL_BY_IDX
,DT_IO_CHANNELS_LABEL_BY_NAME
,DT_IO_CHANNELS_LABEL
,DT_INST_IO_CHANNELS_LABEL_BY_IDX
,DT_INST_IO_CHANNELS_LABEL_BY_NAME
, andDT_INST_IO_CHANNELS_LABEL
were deprecated in favor of utilizingDT_IO_CHANNELS_CTLR
and variants.DT_DMAS_LABEL_BY_IDX
,DT_DMAS_LABEL_BY_NAME
,DT_INST_DMAS_LABEL_BY_IDX
, andDT_INST_DMAS_LABEL_BY_NAME
were deprecated in favor of utilizingDT_DMAS_CTLR
and variants.USB HID specific macros in
<include/usb/class/usb_hid.h>
are deprecated in favor of new common HID macros defined in<include/usb/class/hid.h>
.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.
The
CONFIG_OPENOCD_SUPPORT
Kconfig option has been deprecated in favor ofCONFIG_DEBUG_THREAD_INFO
.Disk drivers (
disk_access_*.c
) are moved todrivers/disk
and 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:CONFIG_DISK_ACCESS_RAM
->CONFIG_DISK_DRIVER_RAM
,CONFIG_DISK_ACCESS_FLASH
->CONFIG_DISK_DRIVER_FLASH
,CONFIG_DISK_ACCESS_SDHC
->CONFIG_DISK_DRIVER_SDMMC
. Disk API header<include/disk/disk_access.h>
is deprecated in favor of<include/storage/disk_access.h>
.The
CONFIG_NET_CONTEXT_TIMESTAMP
is removed as it was only able to work with transmitted data. The same functionality can be achieved by settingCONFIG_NET_PKT_RXTIME_STATS
andCONFIG_NET_PKT_TXTIME_STATS
options. 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
device_pm_*
topm_device_*
since they are not device APIs but PM subsystem APIs. The same applies to enumerations and definitions, they now follow thePM_DEVICE_*
convention. Some other API calls such asdevice_set_power_state
anddevice_get_power_state
have been renamed topm_device_state_set
andpm_device_state_get
in order to align with the naming of other device PM APIs.The following functions, macros, and structures related to the kernel work queue API:
k_work_pending()
replace withk_work_is_pending()
k_work_q_start()
replace withk_work_queue_start()
k_delayed_work
replace withk_work_delayable
k_delayed_work_init()
replace withk_work_init_delayable()
k_delayed_work_submit_to_queue()
replace withk_work_schedule_for_queue()
ork_work_reschedule_for_queue()
k_delayed_work_submit()
replace withk_work_schedule()
ork_work_reschedule()
k_delayed_work_pending()
replace withk_work_delayable_is_pending()
k_delayed_work_cancel()
replace withk_work_cancel_delayable()
k_delayed_work_remaining_get()
replace withk_work_delayable_remaining_get()
k_delayed_work_expires_ticks()
replace withk_work_delayable_expires_get()
k_delayed_work_remaining_ticks()
replace withk_work_delayable_remaining_get()
K_DELAYED_WORK_DEFINE
replace withK_WORK_DELAYABLE_DEFINE
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¶
Kernel¶
Architectures¶
ARC
ARM
AARCH32
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.
AARCH64
POSIX
RISC-V
x86
Boards & SoC Support¶
Added support for these SoC series:
Removed support for these SoC series:
ARM Musca-A
Made these changes in other SoC series:
Changes for ARC boards:
Added support for these ARM boards:
MPS3-AN547
Removed support for these ARM boards:
ARM V2M Musca-A
Nordic nRF5340 PDK
Made these changes in other boards:
Added support for these following shields:
Drivers and Sensors¶
ADC
Audio
Bluetooth
The Kconfig option
CONFIG_BT_CTLR_TO_HOST_UART_DEV_NAME
was removed. Use the zephyr,bt-c2h-uart chosen node directly instead.
CAN
Clock Control
Console
Counter
Crypto
DAC
Debug
Display
DMA
EEPROM
Entropy
ESPI
Ethernet
Flash
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.
GPIO
gpio_dt_spec
: a new structure which makes it more convenient to access GPIO configuration in the devicetree.New macros for initializing
gpio_dt_spec
values:GPIO_DT_SPEC_GET_BY_IDX
,GPIO_DT_SPEC_GET_BY_IDX_OR
,GPIO_DT_SPEC_GET
,GPIO_DT_SPEC_GET_OR
,GPIO_DT_SPEC_INST_GET_BY_IDX
,GPIO_DT_SPEC_INST_GET_BY_IDX_OR
,GPIO_DT_SPEC_INST_GET
, andGPIO_DT_SPEC_INST_GET_OR
New helper functions for using
gpio_dt_spec
values:gpio_pin_configure_dt()
,gpio_pin_interrupt_configure_dt()
Remove support for
GPIO_INT_*
flags ingpio_pin_configure()
. The feature has been deprecated in the Zephyr 2.2 release. The interrupt flags are now accepted bygpio_pin_interrupt_configure()
function only.
Hardware Info
I2C
I2S
IEEE 802.15.4
Interrupt Controller
IPM
Keyboard Scan
LED
LED Strip
LoRa
Modem
PECI
Pinmux
PS/2
PWM
Sensor
Serial
SPI
Timer
USB
Video
Watchdog
WiFi
Networking¶
Bluetooth¶
Host
Mesh
BLE split software Controller
HCI Driver
Build and Infrastructure¶
Improved support for additional toolchains:
Devicetree
DT_COMPAT_GET_ANY_STATUS_OKAY
: new macro
Libraries / Subsystems¶
Disk
Management
MCUmgr
updatehub
Settings
Random
POSIX subsystem
Power management
device_pm_control_nop
has been removed in favor ofNULL
when 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 toNULL
. The macro is flagged as deprecated to make users aware of the change.
Logging
LVGL
Shell
Storage
Tracing
CONFIG_TRACING_CPU_STATS
was removed in favor ofCONFIG_THREAD_RUNTIME_STATS
which provides per thread statistics. The same functionality is also available when Thread analyzer is enabled with the runtime statistics enabled.
Debug
OS
Reboot functionality has been moved to
subsys/os
fromsubsys/power
. A consequence of this movement is that the<power/reboot.h>
header has been moved to<sys/reboot.h>
.<power/reboot.h>
is still provided for compatibility, but it will produce a warning to inform users of the relocation.
HALs¶
HALs are now moved out of the main tree as external modules and reside in their own standalone repositories.
Trusted Firmware-m¶
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
BL5340 DVK
STM32L562E DK
Documentation¶
Tests and Samples¶
Twister’s
dt_compat_enabled_with_alias()
test case filter was deprecated in favor of a newdt_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")
with:
filter: dt_enabled_alias_with_parent_compat("led0", "gpio-leds")