| :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: |