blob: 8e1fb284b24fcdb6b73bf5618dfdeaa825004117 [file] [log] [blame]
:orphan:
.. _zephyr_2.7:
Zephyr 2.7.0 (Working draft)
############################
We are pleased to announce the release of Zephyr RTOS version 2.7.0.
The following sections provide detailed lists of changes by component.
Security Vulnerability Related
******************************
The following CVEs are addressed by this release:
More detailed information can be found in:
https://docs.zephyrproject.org/latest/security/vulnerabilities.html
* CVE-2021-3510: `Zephyr project bug tracker GHSA-289f-7mw3-2qf4
<https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-289f-7mw3-2qf4>`_.
Known issues
************
You can check all currently known issues by listing them using the GitHub
interface and listing all issues with the `bug label
<https://github.com/zephyrproject-rtos/zephyr/issues?q=is%3Aissue+is%3Aopen+label%3Abug>`_.
API Changes
***********
Deprecated in this release
* :c:macro:`DT_ENUM_TOKEN` and :c:macro:`DT_ENUM_UPPER_TOKEN`,
were deprecated in favor of utilizing
:c:macro:`DT_STRING_TOKEN` and :c:macro:`DT_STRING_UPPER_TOKEN`
* :c:macro:`BT_CONN_ROLE_MASTER` and :c:macro:`BT_CONN_ROLE_SLAVE`
have been deprecated in favor of
:c:macro:`BT_CONN_ROLE_CENTRAL` and :c:macro:`BT_CONN_ROLE_PERIPHERAL`
* :c:macro:`BT_LE_SCAN_OPT_FILTER_WHITELIST`
has been deprecated in favor of
:c:macro:`BT_LE_SCAN_OPT_FILTER_ACCEPT_LIST`
* The following whitelist functions have been deprecated:
:c:func:`bt_le_whitelist_add`
:c:func:`bt_le_whitelist_rem`
:c:func:`bt_le_whitelist_clear`
in favor of
:c:func:`bt_le_filter_accept_list_add`
:c:func:`bt_le_filter_accept_list_remove`
:c:func:`bt_le_filter_accept_list_clear`
Modified in this release
* The following Bluetooth macros and structures in :file:`hci.h` have been
modified to align with the inclusive naming in the v5.3 specification:
* ``BT_LE_FEAT_BIT_SLAVE_FEAT_REQ`` is now ``BT_LE_FEAT_BIT_PER_INIT_FEAT_XCHG``
* ``BT_LE_FEAT_BIT_CIS_MASTER`` is now ``BT_LE_FEAT_BIT_CIS_CENTRAL``
* ``BT_LE_FEAT_BIT_CIS_SLAVE`` is now ``BT_LE_FEAT_BIT_CIS_PERIPHERAL``
* ``BT_FEAT_LE_SLAVE_FEATURE_XCHG`` is now ``BT_FEAT_LE_PER_INIT_FEAT_XCHG``
* ``BT_FEAT_LE_CIS_MASTER`` is now ``BT_FEAT_LE_CIS_CENTRAL``
* ``BT_FEAT_LE_CIS_SLAVE`` is now ``BT_FEAT_LE_CIS_PERIPHERAL``
* ``BT_LE_STATES_SLAVE_CONN_ADV`` is now ``BT_LE_STATES_PER_CONN_ADV``
* ``BT_HCI_OP_LE_READ_WL_SIZE`` is now ``BT_HCI_OP_LE_READ_FAL_SIZE``
* ``bt_hci_rp_le_read_wl_size`` is now ``bt_hci_rp_le_read_fal_size``
* ``bt_hci_rp_le_read_wl_size::wl_size`` is now ``bt_hci_rp_le_read_fal_size::fal_size``
* ``BT_HCI_OP_LE_CLEAR_WL`` is now ``BT_HCI_OP_LE_CLEAR_FAL``
* ``BT_HCI_OP_LE_ADD_DEV_TO_WL`` is now ``BT_HCI_OP_LE_REM_DEV_FROM_FAL``
* ``bt_hci_cp_le_add_dev_to_wl`` is now ``bt_hci_cp_le_add_dev_to_fal``
* ``BT_HCI_OP_LE_REM_DEV_FROM_WL`` is now ``BT_HCI_OP_LE_REM_DEV_FROM_FAL``
* ``bt_hci_cp_le_rem_dev_from_wl`` is now ``bt_hci_cp_le_rem_dev_from_fal``
* ``BT_HCI_ROLE_MASTER`` is now ``BT_HCI_ROLE_CENTRAL``
* ``BT_HCI_ROLE_SLAVE`` is now ``BT_HCI_ROLE_PERIPHERAL``
* ``BT_EVT_MASK_CL_SLAVE_BC_RX`` is now ``BT_EVT_MASK_CL_PER_BC_RX``
* ``BT_EVT_MASK_CL_SLAVE_BC_TIMEOUT`` is now ``BT_EVT_MASK_CL_PER_BC_TIMEOUT``
* ``BT_EVT_MASK_SLAVE_PAGE_RSP_TIMEOUT`` is now ``BT_EVT_MASK_PER_PAGE_RSP_TIMEOUT``
* ``BT_EVT_MASK_CL_SLAVE_BC_CH_MAP_CHANGE`` is now ``BT_EVT_MASK_CL_PER_BC_CH_MAP_CHANGE``
* ``m_*`` structure members are now ``c_*``
* ``s_*`` structure members are now ``p_*``
* The ``CONFIG_BT_PERIPHERAL_PREF_SLAVE_LATENCY`` Kconfig option is now
:kconfig:`CONFIG_BT_PERIPHERAL_PREF_LATENCY`
* The ``CONFIG_BT_CTLR_SLAVE_FEAT_REQ_SUPPORT`` Kconfig option is now
:kconfig:`CONFIG_BT_CTLR_PER_INIT_FEAT_XCHG_SUPPORT`
* The ``CONFIG_BT_CTLR_SLAVE_FEAT_REQ`` Kconfig option is now
:kconfig:`CONFIG_BT_CTLR_PER_INIT_FEAT_XCHG`
Changes in this release
==========================
Removed APIs in this release
* Removed support for the deprecated ``DEVICE_INIT`` and ``DEVICE_AND_API_INIT`` macros.
* Removed support for the deprecated ``BUILD_ASSERT_MSG`` macro.
* Removed support for the deprecated ``GET_ARG1``, ``GET_ARG2`` and ``GET_ARGS_LESS_1`` macros.
* Removed support for the deprecated Kconfig ``PRINTK64`` option.
* Removed support for the deprecated ``bt_set_id_addr`` function.
* Removed support for the Kconfig ``USB`` option. Option ``USB_DEVICE_STACK``
is sufficient to enable USB device support.
* Removed ``CONFIG_OPENTHREAD_COPROCESSOR_SPINEL_ON_UART_ACM`` and
``CONFIG_OPENTHREAD_COPROCESSOR_SPINEL_ON_UART_DEV_NAME`` Kconfig options
in favor of chosen node ``zephyr,ot-uart``.
* Removed ``CONFIG_BT_UART_ON_DEV_NAME`` Kconfig option
in favor of direct use of chosen node ``zephyr,bt-uart``.
* Removed ``CONFIG_BT_MONITOR_ON_DEV_NAME`` Kconfig option
in favor of direct use of chosen node ``zephyr,bt-mon-uart``.
* Removed ``CONFIG_MODEM_GSM_UART_NAME`` Kconfig option
in favor of direct use of chosen node ``zephyr,gsm-ppp``.
* Removed ``CONFIG_UART_MCUMGR_ON_DEV_NAME`` Kconfig option
in favor of direct use of chosen node ``zephyr,uart-mcumgr``.
* Removed ``CONFIG_UART_CONSOLE_ON_DEV_NAME`` Kconfig option
in favor of direct use of chosen node ``zephyr,console``.
* Removed ``CONFIG_UART_SHELL_ON_DEV_NAME`` Kconfig option
in favor of direct use of chosen node ``zephyr,shell-uart``.
============================
Stable API changes in this release
==================================
* Bluetooth
* Added :c:struct:`multiple` to the :c:struct:`bt_gatt_read_params` - this
structure contains two members: ``handles``, which was moved from
:c:struct:`bt_gatt_read_params`, and ``variable``.
Kernel
******
Architectures
*************
* ARC
* Add SMP support to ARCv3 HS6x
* Add MWDT C library support
* Add basic C++ support with MWDT toolchain
* Add MPUv3 and MPUv6 support
* Remove dead PM code from ARC core interrupt controller driver
* Add updating arc connect debug mask dynamically
* ARM
* AARCH32
* Updated CMSIS version to 5.8.0
* Added support for FPU in QEMU for Cortex-M, allowing to build and execute
tests in CI with FPU and FPU_SHARING options enabled.
* Added MPU support for Cortex-R
* AARCH64
* RISC-V
* Added support to RISC-V CPU devicetree compatible bindings
* Added support to link with ITCM & DTCM sections
* x86
Bluetooth
*********
* Updated all APIs and internal implementation to be conformant with the new
inclusive terminology in version 5.3 of the Bluetooth Core Specification
* Audio
* Added the Microphone Input Control Service and client.
* Changed the connected isochronous API to use a group-based opaque struct
* Split the configuration options into connected and broadcast groups
* Added support for a new sent callback to be notified when an SDU has been
transmitted
* Direction Finding
* Added configurability for conditional CTE RX support
* Added support for CTE periodic advertising chain transmissions
* Host
* Added support for setting more than 251 bytes of advertising data
* Added new callbacks on ATT MTU update
* Added a new call to retrieve the handle of an advertising set
* Fixed key overwrite algorithm when working with multiple connections
* Added configuration support for GATT security re-establishment
* Added support for writing a long device name
* OTS: Added object name write capability
* Mesh
* Added return value for opcode callback
* Added support for OOB Public Key in the provisionee role
* Added a new API to manually store pending RPL entries
* Added support for application access to mesh messages
* Refactored the Mesh Model Extensions
* Bluetooth LE split software Controller
* Added support for advertising PDU chaining, implementing advertising trains
for Direction Finding
* Added support for adding or removing the ACAD field in Common Extended
Header Format to support BIGInfo
* Refactored the legacy, extended and periodic advertising time reservation
slot calculations
* Implemented CSA#2 in Extended Advertising and Broadcast ISO sub-events
* Added support for Extended Active Scanning
* Added support for advertising on the S2 and S8 coding schemes
* Added support for the Periodic Advertising channel map update indication
* HCI Driver
* Removed all ``CONFIG_BT_*_ON_DEV_NAME`` Kconfig options, use Devicetree
instead
Boards & SoC Support
********************
* Added support for these SoC series:
* Added STM32U5 basic SoC support
* Removed support for these SoC series:
* Made these changes in other SoC series:
* Added Atmel SAM0 pinctrl support
* Added Atmel SAM4L USBC device controller
* Added Atmel GMAC support for MDIO driver
* Added Atmel GMAC support to use generic PHY driver
* Added Atmel SAM counter (TC) Driver
* Added Atmel SAM DAC (DACC) driver
* Enabled Atmel SAM ``clock-frequency`` support from devicetree
* Free Atmel SAM TRACESWO pin when unused
* Enabled Cypress PSoC-6 Cortex-M4 support
* Added low power support to STM32L0, STM32G0 and STM32WL series
* STM32: Enabled ART Flash accelerator by default when available (F2, F4, F7, H7, L5)
* STM32: Added Kconfig option to enable STM32Cube asserts (CONFIG_USE_STM32_ASSERT)
* NXP FRDM-K82F: Added arduino_i2c and arduino_spi aliases
* NXP i.MX RT series: Added support for flash controller with XIP
* NXP i.MX RT series: Added TRNG support
* NXP i.MX RT1170: Added LPSPI driver support
* NXP i.MX RT1170: Added ADC driver support
* NXP i.MX RT1170: Enabled Segger RTT/SystemView
* NXP i.MX RT1170: Added MCUX FlexCan support
* NXP i.MX RT1064: Added watchdog driver support
* NXP i.MX RT1064: Added DMA driver support
* NXP i.MX RT600: Added arduino serial port
* NXP i.MX RT600: Add mcuboot flash partitions
* NXP i.MX RT600: Added counter support
* NXP i.MX RT600: Added PWM support
* NXP i.MX RT600: Added disk driver support
* NXP i.MX RT600: Added USB driver support
* NXP i.MX RT600: Added LPADC driver support
* NXP i.MX RT600: Added CTimer Counter support
* NXP KE1xF: Added SoC Power Management support
* NXP LPC55s69: Added USB driver support
* NXP LPC55s69: Added ctimer driver support
* NXP LPC55s69: Added I2S driver support
* Changes for ARC boards:
* Implement 'run' command for SMP nSIM simulation board
* Enable upstream verification on QEMU ARCv3 HS6x board (qemu_arc_hs6x)
* Implement creg GPIO driver and add it to hsdk and em_starterkit boards
* Changes for ARM boards:
* Added SPI support on Arduino standard SPI when possible
* Added support for these ARM boards:
* Dragino NBSN95 NB-IoT Sensor Node
* Seeedstudio LoRa-E5 Dev Board
* ST B_U585I_IOT02A Discovery kit
* ST Nucleo F446ZE
* ST Nucleo U575ZI Q
* ST STM32H735G Discovery
* PJRC Teensy 4 Board
* Added support for these ARM64 boards:
* Removed support for these ARM boards:
* Removed support for these X86 boards:
* Made these changes in other boards:
* arduino_due: Added support for TC driver
* atsame54_xpro: Added support for PHY driver
* sam4l_ek: Added support for TC driver
* sam4e_xpro: Added support for PHY driver
* sam4e_xpro: Added support for TC driver
* sam4s_xplained: Added support for TC driver
* sam_e70_xplained: Added support for DACC driver
* sam_e70_xplained: Added support for PHY driver
* sam_e70_xplained: Added support for TC driver
* sam_v71_xult: Added support for DACC driver
* sam_v71_xult: Added support for PHY driver
* sam_v71_xult: Added support for TC driver
* sam_v71_xult: Enable pwm on LED0
* cy8ckit_062_ble: Added arduino's nexus map
* Added support for these following shields:
* 4.2inch epaper display (GDEW042T2)
* X-NUCLEO-EEPRMA2 EEPROM memory expansion board
Drivers and Sensors
*******************
* ADC
* Added STM32WL ADC driver
* STM32: Added support for oversampling
* Added driver for Microchip MEC172x
* Audio
* Added DMIC driver for nRF PDM peripherals
* Bluetooth
* CAN
* Clock Control
* Console
* Counter
* Add Atmel SAM counter (TC) Driver
* Added STM32WL RTC counter driver
* Crypto
* STM23: Add support for SOCs with AES hardware block (STM32G0, STM32L5 and STM32WL)
* DAC
* Added Atmel SAM DAC (DACC) driver
* Added support for Microchip MCP4725
* Added support for STM32F3 series
* Disk
* Added SDMMC support on STM32L4+
* STM32 SDMMC now supports SDIO enabled devices
* Added USDHC support for i.MX RT685
* Display
* Added support for ST7735R
* DMA
* Added Atmel SAM XDMAC reload support
* Added support on STM32F3, STM32G0, STM32H7 and STM32L5
* STM32: Reviewed bindings definitions, "st,stm32-dma-v2bis" introduced.
* EEPROM
* Added support for EEPROM emulated in flash.
* Entropy
* Added support for STM32F2, STM32G0, STM32WB and STM32WL
* ESPI
* Added support for Microchip eSPI SAF
* Ethernet
* Added Atmel SAM/SAM0 GMAC devicetree support
* Added Atmel SAM/SAM0 MDIO driver
* Added MDIO driver
* Added generic PHY driver
* Flash
* Added STM32F2, STM32L5 and STM32WL Flash driver support
* STM32: Max erase time parameter was moved to device tree
* Added quad SPI support for STM32F4
* GPIO
* Hardware Info
* I2C
* I2S
* Added Atmel SAM I2S driver support to XDMAC reload
* Added driver for nRF I2S peripherals
* IEEE 802.15.4
* IPM
* Added STM32 HSEM IPM driver.
* Interrupt Controller
* IPM
* STM32: Add HSEM based IPM driver for STM32H7 series
* LED
* LoRa
* lora_send now blocks until the transmission is complete. lora_send_async
can be used for the previous, non-blocking behaviour.
* Enabled support for STM32WL series
* MEMC
* Added STM32F4 support
* Modem
* Added gsm_ppp devicetree support
* PCI/PCIe
* Fixed an issue that MSI-X was used even though it is not available.
* Improved MBAR retrieval for MSI-X.
* Added ability to retrieve extended PCI/PCIe capabilities.
* Pinmux
* Added Atmel SAM0 pinctrl support
* STM32: Deprecated definitions like 'STM32F2_PINMUX_FUNC_PA0_UART4_TX'
are now removed.
* PWM
* Property "st,prescaler" of binding "st,stm32-pwm" now defaults to "0".
* Added driver for ITE IT8XXX2 series
* Added driver for NXP LPC devices
* Added driver for Telink B91
* Sensor
* Refactored various drivers to use ``_dt_spec``.
* Refactored various drivers to support multiple instances.
* Enhanced TI HDC20XX driver to support DRDY/INT pin.
* Updated temperature conversion formula in TI HDC20XX driver.
* Enhanced MS5607 pressure sensor driver to support I2C.
* Fixed temperature compensation in MS5607 pressure sensor driver.
* Refactored ST LIS2DW12 driver to move range, power, and trigger
configuration from Kconfig to dts.
* Enhanced TI BQ274XX fuel gauge driver to support power management.
* Aligned ST sensor drivers to use STMEMC HAL I/F v2.00.
* Added Sensirion SGP40 multipixel gas sensor driver.
* Added Sensirion SHTCX humidity sensor driver.
* Added Sensirion SHT4X temperature and humidity sensor driver.
* Added SiLabs SI7270 hall effect magnetic position and temperature sensor
driver.
* Added ST I3G4250D gyroscope driver.
* Added TI INA219 and INA23X current/power monitor drivers.
* Added TI LM75 and LM77 temperature sensor drivers.
* Added TI HDC20XX humidity and temperature sensor driver.
* Serial
* Added kconfig to disable runtime re-configuration of UART
to reduce footprint if so desired.
* Added ESP32-C3 polling only UART driver.
* Added ESP32-S2 polling only UART driver.
* Added Microchip XEC UART driver.
* SPI
* Timer
* USB
* Added Atmel SAM4L USBC device controller driver
* Added support for NXP LPC USB controller
* Adapted drivers use new USB framework header
* Watchdog
* Added STM32L5 watchdog support
* WiFi
Networking
**********
* 802.15.4 L2:
* Fixed a bug, where the net_pkt structure contained invalid LL address
pointers after being processed by 802.15.4 L2.
* Added an optional destination address filtering in the 802.15.4 L2.
* CoAP:
* Added ``user_data`` field to the :c:struct:`coap_packet` structure.
* Fixed processing of out-of-order notifications.
* Fixed :c:func:`coap_packet_get_payload` function.
* Converted CoAP test suite to ztest API.
* Improved :c:func:`coap_packet_get_payload` function to minimize number
of RNG calls.
* Fixed retransmissions in the ``coap_server`` sample.
* Fixed observer removal in the ``coap_server`` sample (on notification
timeout).
* DHCPv4:
* Fixed a bug, where DHPCv4 library removed statically configured gateway
before obtaining a new one from the server.
* DNS:
* Fixed a bug, where the same IP address was used to populate the result
address info entries, when multiple IP addresses were obtained from the
server.
* HTTP:
* Switched the library to use ``zsock_*`` API, to improve compatibility with
various POSIX configurations.
* Fixed a bug, where ``HTTP_DATA_FINAL`` notification was triggered even for
intermediate response fragments.
* IPv6:
* Multiple IPv6 fixes, addressing failures in IPv6Ready compliance tests.
* LwM2M:
* Added support for notification timeout reporting to the application.
* Fixed a bug, where a multi instance resource with only one active instance
was incorrectly encoded on reads.
* Fixed a bug, where notifications were generated on changes to non-readable
resources.
* Added mutex protection for the state variable of the ``lwm2m_rd_client``
module.
* Removed LWM2M_RES_TYPE_U64 type, as it's not possible to encode it properly
for large values.
* Fixed a bug, where large unsigned integers were incorrectly encoded in TLV.
* Multiple fixes for FLOAT type processing in the LwM2M engine and encoders.
* Fix a bug, where IPSO Push Button counter resource was not triggering
notification on incrementation.
* Fixed a bug, where Register failures were reported as success to the
application.
* Misc:
* Added RX/TX timeout on a socket in ``big_http_download`` sample.
* Introduced :c:func:`net_pkt_remove_tail` function.
Added IEEE 802.15.4 security-related flags to the :c:struct:`net_pkt`
structure.
* Added bridging support to the Ethernet L2.
* Fixed a bug in mDNS, where an incorrect address type could be set as a
response destination.
* Added an option to suppress ICMP destination unreachable errors.
* Fixed possible assertion in ``net nbr`` shell command.
* Major refactoring of the TFTP library.
* MQTT:
* Added an option to register a custom transport type.
* Fixed a bug in :c:func:`mqtt_abort`, where the function could return without
releasing a lock.
* OpenThread:
* Update OpenThread module up to commit ``9ea34d1e2053b6b2a80e1d46b65a6aee99fc504a``.
Added several new Kconfig options to align with new OpenThread
configurations.
* Added OpenThread API mutex protection during initialization.
* Converted OpenThread thread to a dedicated work queue.
* Implemented missing :c:func:`otPlatAssertFail` platform function.
* Fixed a bug, where NONE level OpenThread logs were not processed.
* Added possibility to disable CSL sampling, when used.
* Fixed a potential bug, where invalid error code could be returned by the
platform radio layer to OpenThread.
* Reworked UART configuration in the OpenThread Coprocessor sample.
* Socket:
* Added microsecond accuracy in :c:func:`zsock_select` function.
* Reworked :c:func:`zsock_select` into a syscall.
* Fixed a bug, where :c:func:`poll` events were not signalled correctly
for socketpair sockets.
* Fixed a bug, where socket mutex could be used after being initialized by a
new owner after being deallocated in :c:func:`zsock_close`.
* Fixed a possible assert after enabling CAN sockets.
* Fixed IPPROTO_RAW usage in packet socket implementation.
* TCP:
* Fixed a bug, where ``unacked_len`` could be set to a negative value.
* Fixed possible assertion failure in :c:func:`tcp_send_data`.
* Fixed a bug, where [FIN, PSH, ACK] was not handled properly in
TCP_FIN_WAIT_2 state.
* TLS:
* Reworked TLS sockets to use secure random generator from Zephyr.
* Fixed busy looping during DTLS handshake with offloaded sockets.
* Fixed busy looping during TLS/DTLS handshake on non blocking sockets.
* Reset mbed TLS session on timed out DTLS handshake, to allow a retry without
closing a socket.
* Fixed TLS/DTLS :c:func:`sendmsg` implementation for larger payloads.
* Fixed TLS/DTLS sockets ``POLLHUP`` notification.
* WebSocket:
* Fixed :c:func:`poll` implementation for WebSocket, which did not work
correctly with offloaded sockets.
* Fixed :c:func:`ioctl` implementation for WebSocket, which did not work
correctly with offloaded sockets.
USB
***
* Added new header file where all defines and structures from Chapter 9
(USB Device Framework) should be included.
* Revised configuraiton of USB device support.
Removed Kconfig option ``CONFIG_USB`` and introduced Kconfig option
``CONFIG_USB_DEVICE_DRIVER`` to enable USB device controller drivers,
which is selected when option ``CONFIG_USB_DEVICE_STACK`` is enabled.
* Enhanced verification of the control request in device stack, classes, and samples.
* Added support to store alternate interface setting.
* Added ``zephyr_udc0`` nodelabel to all boards with USB support to allow
generic USB device support samples to be build.
* Reworked descriptors, config, and data definitions macros in CDC ACM class.
* Changed CDC ACM UART implementation to get configuration from devicetree.
With this change, many ``CONFIG_*_ON_DEV_NAME`` options were removed and
applications revised. See :ref:`usb_device_cdc_acm` for more information.
Build and Infrastructure
************************
* Devicetree API
* New "for-each" macros which work like existing APIs, but take variable
numbers of arguments: :c:macro:`DT_FOREACH_CHILD_VARGS`,
:c:macro:`DT_FOREACH_CHILD_STATUS_OKAY_VARGS`,
:c:macro:`DT_FOREACH_PROP_ELEM_VARGS`,
:c:macro:`DT_INST_FOREACH_CHILD_VARGS`,
:c:macro:`DT_INST_FOREACH_STATUS_OKAY_VARGS`,
:c:macro:`DT_INST_FOREACH_PROP_ELEM_VARGS`
* Other new "for-each" macros: :c:macro:`DT_FOREACH_STATUS_OKAY`,
:c:macro:`DT_FOREACH_STATUS_OKAY_VARGS`
* New macros for converting strings to C tokens: :c:macro:`DT_STRING_TOKEN`,
:c:macro:`DT_STRING_UPPER_TOKEN`
* New :ref:`devicetree-pinctrl-api` helper macros
* Devicetree tooling
* Errors are now generated when invalid YAML files are discovered while
searching for bindings. See :ref:`dt-where-bindings-are-located` for
information on the search path.
* File names ending in ``.yml`` are now considered YAML files when searching
for bindings.
* Errors are now generated if invalid node names are used. For example, the
node name ``node?`` now generates an error message ending in ``node?: Bad
character '?' in node name``. The valid node names are documented in
"2.2.2 Node Names" of the Devicetree specification v0.3.
* Warnings are now generated if a :ref:`compatible property
<dt-important-props>` in the ``vendor,device`` format uses an unknown
vendor prefix. This warning does not apply to the root node.
Known vendor prefixes are defined in
:file:`dts/bindings/vendor-prefixes.txt` files, which may appear in any
directory in :ref:`DTS_ROOT <dts_root>`.
These may be upgraded to errors using the edtlib Python APIs; Zephyr's CI
now generates such errors.
* Devicetree bindings
* Various bindings had incorrect vendor prefixes in their :ref:`compatible
<dt-important-props>` properties; the following changes were made to fix
these.
.. list-table::
:header-rows: 1
- * Old compatible
* New compatible
- * ``nios,i2c``
* :dtcompatible:`altr,nios2-i2c`
- * ``cadence,tensilica-xtensa-lx4``
* :dtcompatible:`cdns,tensilica-xtensa-lx4`
- * ``cadence,tensilica-xtensa-lx6``
* :dtcompatible:`cdns,tensilica-xtensa-lx6`
- * ``colorway,lpd8803``
* :dtcompatible:`greeled,lpd8803`
- * ``colorway,lpd8806``
* :dtcompatible:`greeled,lpd8806`
- * ``grove,light``
* :dtcompatible:`seeed,grove-light`
- * ``grove,temperature``
* :dtcompatible:`seeed,grove-temperature`
- * ``max,max30101``
* :dtcompatible:`maxim,max30101`
- * ``ublox,sara-r4``
* :dtcompatible:`u-blox,sara-r4`
- * ``xtensa,core-intc``
* :dtcompatible:`cdns,xtensa-core-intc`
- * ``vexriscv,intc0``
* :dtcompatible:`vexriscv-intc0`
Out of tree users of these bindings will need to update their
devicetrees.
You can support multiple versions of Zephyr with one devicetree by
including both the old and new values in your nodes' compatible properties,
like this example for the LPD8803::
my-led-strip@0 {
compatible = "colorway,lpd8803", "greeled,lpd8803";
...
};
* Other new bindings in alphabetical order: :dtcompatible:`andestech,atcgpio100`,
:dtcompatible:`arm,gic-v3-its`, :dtcompatible:`atmel,sam0-gmac`,
:dtcompatible:`atmel,sam0-pinctrl`, :dtcompatible:`atmel,sam-dac`,
:dtcompatible:`atmel,sam-mdio`, :dtcompatible:`atmel,sam-usbc`,
:dtcompatible:`cdns,tensilica-xtensa-lx7`,
:dtcompatible:`espressif,esp32c3-uart`,
:dtcompatible:`espressif,esp32-intc`,
:dtcompatible:`espressif,esp32s2-uart`, :dtcompatible:`ethernet-phy`,
:dtcompatible:`fcs,fxl6408`, :dtcompatible:`ilitek,ili9341`,
:dtcompatible:`ite,it8xxx2-bbram`, :dtcompatible:`ite,it8xxx2-kscan`,
:dtcompatible:`ite,it8xxx2-pinctrl-conf`, :dtcompatible:`ite,it8xxx2-pwm`,
:dtcompatible:`ite,it8xxx2-pwmprs`, :dtcompatible:`ite,it8xxx2-watchdog`,
:dtcompatible:`lm75`, :dtcompatible:`lm77`, :dtcompatible:`meas,ms5607`,
:dtcompatible:`microchip,ksz8863`, :dtcompatible:`microchip,mcp7940n`,
:dtcompatible:`microchip,xec-adc-v2`, :dtcompatible:`microchip,xec-ecia`,
:dtcompatible:`microchip,xec-ecia-girq`,
:dtcompatible:`microchip,xec-gpio-v2`,
:dtcompatible:`microchip,xec-i2c-v2`, :dtcompatible:`microchip,xec-pcr`,
:dtcompatible:`microchip,xec-uart`, :dtcompatible:`nuvoton,npcx-bbram`,
:dtcompatible:`nuvoton,npcx-booter-variant`,
:dtcompatible:`nuvoton,npcx-ps2-channel`,
:dtcompatible:`nuvoton,npcx-ps2-ctrl`, :dtcompatible:`nuvoton,npcx-soc-id`,
:dtcompatible:`nxp,imx-ccm-rev2`, :dtcompatible:`nxp,lpc-ctimer`,
:dtcompatible:`nxp,lpc-uid`, :dtcompatible:`nxp,mcux-usbd`,
:dtcompatible:`nxp,sctimer-pwm`, :dtcompatible:`ovti,ov2640`,
:dtcompatible:`renesas,rcar-can`, :dtcompatible:`renesas,rcar-i2c`,
:dtcompatible:`reserved-memory`, :dtcompatible:`riscv,sifive-e24`,
:dtcompatible:`sensirion,sgp40`, :dtcompatible:`sensirion,sht4x`,
:dtcompatible:`sensirion,shtcx`, :dtcompatible:`silabs,si7055`,
:dtcompatible:`silabs,si7210`, :dtcompatible:`snps,creg-gpio`,
:dtcompatible:`st,i3g4250d`, :dtcompatible:`st,stm32-aes`,
:dtcompatible:`st,stm32-dma`, :dtcompatible:`st,stm32-dma-v2bis`,
:dtcompatible:`st,stm32-hsem-mailbox`, :dtcompatible:`st,stm32-nv-flash`,
:dtcompatible:`st,stm32-spi-subghz`,
:dtcompatible:`st,stm32u5-flash-controller`,
:dtcompatible:`st,stm32u5-msi-clock`, :dtcompatible:`st,stm32u5-pll-clock`,
:dtcompatible:`st,stm32u5-rcc`, :dtcompatible:`st,stm32wl-hse-clock`,
:dtcompatible:`st,stm32wl-subghz-radio`, :dtcompatible:`st,stmpe1600`,
:dtcompatible:`syscon`, :dtcompatible:`telink,b91`,
:dtcompatible:`telink,b91-flash-controller`,
:dtcompatible:`telink,b91-gpio`, :dtcompatible:`telink,b91-i2c`,
:dtcompatible:`telink,b91-pinmux`, :dtcompatible:`telink,b91-power`,
:dtcompatible:`telink,b91-pwm`, :dtcompatible:`telink,b91-spi`,
:dtcompatible:`telink,b91-trng`, :dtcompatible:`telink,b91-uart`,
:dtcompatible:`telink,b91-zb`, :dtcompatible:`ti,hdc2010`,
:dtcompatible:`ti,hdc2021`, :dtcompatible:`ti,hdc2022`,
:dtcompatible:`ti,hdc2080`, :dtcompatible:`ti,hdc20xx`,
:dtcompatible:`ti,ina219`, :dtcompatible:`ti,ina23x`,
:dtcompatible:`ti,tca9538`, :dtcompatible:`ti,tca9546a`,
:dtcompatible:`ti,tlc59108`,
:dtcompatible:`xlnx,gem`, :dtcompatible:`zephyr,bbram-emul`,
:dtcompatible:`zephyr,cdc-acm-uart`, :dtcompatible:`zephyr,gsm-ppp`,
:dtcompatible:`zephyr,native-posix-udc`
* West (extensions)
* openocd runner: Zephyr thread awareness is now available in GDB by default
for application builds with :kconfig:`CONFIG_DEBUG_THREAD_INFO` set to ``y``
in :ref:`kconfig`. This applies to ``west debug``, ``west debugserver``,
and ``west attach``. OpenOCD version later than 0.11.0 must be installed
on the host system.
Libraries / Subsystems
**********************
* Disk
* Management
* CMSIS subsystem
* Power management
* The APIs to set/clear/check if devices are busy from a power management
perspective have been moved to the PM subsystem. Their naming and signature
has also been adjusted to follow common conventions. Below you can find the
equivalence list.
* ``device_busy_set`` -> ``pm_device_busy_set``
* ``device_busy_clear`` -> ``pm_device_busy_clear``
* ``device_busy_check`` -> ``pm_device_is_busy``
* ``device_any_busy_check`` -> ``pm_device_is_any_busy``
* The device power management callback (``pm_device_control_callback_t``) has
been largely simplified to work based on *actions*, resulting in simpler and
more natural implementations. This principle is also used by other OSes like
the Linux Kernel. As a result, the callback argument list has been reduced
to the device instance and an action (e.g. ``PM_DEVICE_ACTION_RESUME``).
Other improvements include specification of error codes, removal of some
unused/unclear states, or guarantees such as avoid calling a device for
suspend/resume if it is already at the right state. All these changes
together have allowed simplifying multiple device power management callback
implementations.
* Introduced a new API to allow devices capable of wake up the system
register themselves was wake up sources. This permits applications to
select the most appropriate way to wake up the system when it is
suspended. Devices marked as wake up source are not suspended by the kernel
when the system is idle. It is possible to declare a device wake up capable
direct in devicetree like this example::
&gpio0 {
compatible = "zephyr,gpio-emul";
gpio-controller;
wakeup-source;
};
* Removed ``PM_DEVICE_STATE_FORCE_SUSPEND`` device power state.because it
is an action and not a state.
* Removed ``PM_DEVICE_STATE_RESUMING`` and ``PM_DEVICE_STATE_SUSPENDING``.
They were transitional states and only used in device runtime. Now the
subsystem is using device flag to keep track of a transition.
* Implement constraint API as weak symbols so applications or platform
can override them. Platforms can have their own way to
set/release constraints in their drivers that are not part of
Zephyr code base.
* Logging
* MODBUS
* Changed server handler to copy Transaction and Protocol Identifiers
to response header.
* Random
* xoroshiro128+ PRNG deprecated in favor of xoshiro128++
* Shell
* Storage
* Task Watchdog
* Tracing
* Debug
* OS
HALs
****
* HALs are now moved out of the main tree as external modules and reside in
their own standalone repositories.
Trusted Firmware-m
******************
* Renamed psa_level_1 sample to psa_crypto. Extended the use of the PSA Cryptography
1.0 API in the sample code to demonstrate additional crypto functionality.
* Added a new sample to showcase the PSA Protecter Storage service.
Documentation
*************
* Kconfig options need to be referenced using the ``:kconfig:`` Sphinx role.
Previous to this change, ``:option:`` was used for this purpose.
* Doxygen alias ``@config{}`` has been deprecated in favor of ``@kconfig{}``.
Tests and Samples
*****************
Issue Related Items
*******************
These GitHub issues were addressed since the previous 2.6.0 tagged
release: