1335 lines
57 KiB
ReStructuredText
1335 lines
57 KiB
ReStructuredText
:orphan:
|
|
|
|
.. _zephyr_3.6:
|
|
|
|
Zephyr 3.6.0
|
|
############
|
|
|
|
We are pleased to announce the release of Zephyr version 3.6.0.
|
|
|
|
Major enhancements with this release include:
|
|
|
|
* New :ref:`GNSS subsystem <gnss_api>` added, enabling geo-awareness in Zephyr applications.
|
|
* New API and drivers introduced for interfacing with :ref:`keyboard matrices <gpio-kbd>`.
|
|
* New socket and CoAP service libraries streamlining the implementation of socket and CoAP servers
|
|
respectively, while also optimizing the use of resources.
|
|
* Integrated Trusted Firmware-M (TF-M) 2.0, including an update to Mbed TLS 3.5.2.
|
|
* Improved LLEXT tooling, simplifying module creation in the Zephyr build system.
|
|
* Userspace support extended to Xtensa architecture.
|
|
* Build system now supports Link Time Optimization (LTO), reducing the size of the final image.
|
|
* Bluetooth Mesh protocol 1.1 now supported by default.
|
|
* Major updates to the documentation of the :ref:`native simulator <native_sim>`, clarifying
|
|
supported peripherals and how to use them.
|
|
* Over 30 new supported boards, spanning all Zephyr-supported architectures.
|
|
|
|
An overview of the changes required or recommended when migrating your application from Zephyr
|
|
v3.5.0 to Zephyr v3.6.0 can be found in the separate :ref:`migration guide<migration_3.6>`.
|
|
|
|
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-2023-5779 `Zephyr project bug tracker GHSA-7cmj-963q-jj47
|
|
<https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-7cmj-963q-jj47>`_
|
|
|
|
* CVE-2023-6249 `Zephyr project bug tracker GHSA-32f5-3p9h-2rqc
|
|
<https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-32f5-3p9h-2rqc>`_
|
|
|
|
* CVE-2023-6749 `Zephyr project bug tracker GHSA-757h-rw37-66hw
|
|
<https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-757h-rw37-66hw>`_
|
|
|
|
* CVE-2023-6881 `Zephyr project bug tracker GHSA-mh67-4h3q-p437
|
|
<https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-mh67-4h3q-p437>`_
|
|
|
|
* CVE-2023-7060: Under embargo until 2024-03-14
|
|
|
|
* CVE-2024-1638 `Zephyr project bug tracker GHSA-p6f3-f63q-5mc2
|
|
<https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-p6f3-f63q-5mc2>`_
|
|
|
|
Architectures
|
|
*************
|
|
|
|
* ARC
|
|
|
|
* Enabled hardware prefetcher and shared cluster cache (SCM - Shared Cluster
|
|
Memory) for ARCv3 processors (HS5x & HS6x).
|
|
* Disabled Thread-local Storage support for platforms with two or more register banks.
|
|
* Fixed unstable work of application built with MetaWare toolchain for hardware
|
|
platforms (garbage in .device_states section).
|
|
|
|
* ARM
|
|
|
|
* MPU regions are now always cleared before initialization.
|
|
* Standardized on :c:func:`arch_secondary_cpu_init` to provide consistency
|
|
across all architectures.
|
|
* Renamed :c:func:`z_arm_prep_c` as :c:func:`z_prep_c` to provide
|
|
consistency across all architectures.
|
|
* Renamed the exception header to be consistent across all architectures.
|
|
* GDB stubs added (currently only supports Zynq-7000).
|
|
* Added support for custom interrupt controllers using
|
|
:kconfig:option:`CONFIG_ARM_CUSTOM_INTERRUPT_CONTROLLER`.
|
|
* MMU and MPU initialization moved to :c:func:`z_prep_c` for Cortex-A and
|
|
Cortex-R to enable initialization by individual cores.
|
|
* Common Cortex-M MPU code moved to ``arch/arm/core/mpu``.
|
|
|
|
* Xtensa
|
|
|
|
* Removed the unused Kconfig option ``CONFIG_XTENSA_NO_IPC``.
|
|
|
|
* Added userspace support via MMU.
|
|
|
|
Bluetooth
|
|
*********
|
|
|
|
* Audio
|
|
|
|
* Changed ``bt_bap_scan_delegator_subgroup`` to :c:struct:`bt_bap_bass_subgroup` and
|
|
made it independent of :kconfig:option:`CONFIG_BT_BAP_SCAN_DELEGATOR`.
|
|
* Modified :c:func:`bt_bap_stream_send` to no longer take a timestamp as parameter,
|
|
and added :c:func:`bt_bap_stream_send_ts` that does.
|
|
* Modified :c:func:`bt_cap_stream_send` to no longer take a timestamp as parameter,
|
|
and added :c:func:`bt_cap_stream_send_ts` that does.
|
|
* Assigned number values have been moved from :file:`include/zephyr/bluetooth/audio/lc3.h` to
|
|
:file:`include/zephyr/bluetooth/audio/audio.h` and the ``LC3`` infix have been removed.
|
|
* The CAP initiator APIs have been streamlined and follow the same parameter pattern.
|
|
* Added Kconfig options to make MCC functionality optional to reduce memory usage for simple
|
|
clients.
|
|
* Added CAP Commander change volume and change volume offset.
|
|
* Added proper support for doing decoding in the application instead of in the controller by
|
|
modifying how the ISO data path is configured.
|
|
* Added :c:func:`bt_csip_set_member_unregister` to unregister a CSIS instance.
|
|
* Added helper functions to get and set assigned number values in codec configuration and
|
|
codec capabilities.
|
|
* Added support for the new mono audio location.
|
|
* Added ISO state callbacks for streams so the user knows the state of the CIS.
|
|
* Added :c:func:`bt_pacs_set_available_contexts_for_conn` to set available context per connection.
|
|
* Refactored the :c:struct:`bt_bap_base` to be an abstract struct with new helper functions,
|
|
so that Zephyr supports all BASEs regardless of the size.
|
|
|
|
* Host
|
|
|
|
* Added ``recycled()`` callback to :c:struct:`bt_conn_cb`, which notifies listeners when a
|
|
connection object has been freed, so it can be utilized for different purposes. No guarantees
|
|
are made to what listener will be granted the object, as only the first claim is served.
|
|
* Modified :c:func:`bt_iso_chan_send` to no longer take a timestamp as parameter,
|
|
and added :c:func:`bt_iso_chan_send_ts` that does.
|
|
|
|
* Mesh
|
|
|
|
* Added the delayable messages functionality to apply random delays for
|
|
the transmitted responses on the Access layer.
|
|
The functionality is enabled by the :kconfig:option:`CONFIG_BT_MESH_ACCESS_DELAYABLE_MSG`
|
|
Kconfig option.
|
|
* The Bluetooth Mesh protocol 1.1 is now supported by default.
|
|
|
|
* Controller
|
|
|
|
* Added deinit implementation for ESP32 controller.
|
|
|
|
* HCI Driver
|
|
|
|
* Split ST HCI SPI Bluetooth driver from the Zephyr one to provide more features
|
|
based on ST SPI protocols V1 and V2. As a result, :dtcompatible:`st,hci-spi-v1` and
|
|
:dtcompatible:`st,hci-spi-v2` were introduced.
|
|
|
|
Boards & SoC Support
|
|
********************
|
|
|
|
* Added support for these SoC series:
|
|
|
|
* Added support for Renesas R-Car Gen4 series.
|
|
* Added support for STM32F303xB SoC variants.
|
|
* Added support for STM32H7B0xx SoC variants.
|
|
* Added support for STM32L010xx SoC variants.
|
|
* Added support for STM32L081xx SoC variants.
|
|
* Added support for STM32U5A9xx SoC variants.
|
|
* Added support for NXP S32K1 devices.
|
|
* Added support for NXP IMX8ULP SoC.
|
|
* Added support for NXP MIMXRT595 DSP core.
|
|
|
|
* Made these changes in other SoC series:
|
|
|
|
* Nordic SoCs now imply :kconfig:option:`CONFIG_XIP` instead of selecting it. This allows for
|
|
creating RAM-based applications by disabling it.
|
|
* BLE is now supported on STM32WBA series.
|
|
* xtensa: imx8: Split the generic i.MX8 SoC into i.MX8QXP and i.MX8QM.
|
|
* LPC55xxx: Fixed the system hardware clock cycle rate.
|
|
|
|
* Added support for these ARM boards:
|
|
|
|
* Added support for Adafruit QTPy RP2040 board: ``adafruit_qt_py_rp2040``.
|
|
* Added support for FANKE FK7B0M1-VBT6 board: ``fk7b0m1_vbt6``.
|
|
* Added support for Renesas R-Car Spider board CR52: ``rcar_spider_cr52``.
|
|
* Added support for ST Nucleo F722ZE board: ``nucleo_f722ze``.
|
|
* Added support for ST STM32H750B Discovery Kit: ``stm32h750b_dk``.
|
|
* Added support for ST STM32L4R9I Discovery board: ``stm32l4r9i_disco``.
|
|
* Added support for ST STM32U5A9J-DK discovery kit: ``stm32u5a9j_dk``.
|
|
* Added support for ST Nucleo WBA55CG board: ``nucleo_wba55cg``.
|
|
* Added support for ST STM32WB5MM-DK Discovery board: ``stm32wb5mm_dk``.
|
|
* Added support for Wiznet W5500 Evaluation Pico board: ``w5500_evb_pico``.
|
|
* Added support for ADI boards: ``adi_sdp_k1``, ``adi_eval_adin1110ebz``,
|
|
``adi_eval_adin2111ebz``.
|
|
* Added support for NXP UCANS32K1SIC board: ``ucans32k1sic``.
|
|
|
|
* Added support for this RISC-V board:
|
|
|
|
* Added Lilygo TTGO T8-C3 board: ``ttgo_t8c3``.
|
|
|
|
* Added support for these Xtensa boards:
|
|
|
|
* Added support for NXP iMX8ULP board: ``nxp_adsp_imx8ulp``.
|
|
* Added Heltec Wireless Stick Lite (V3) board: ``heltec_wireless_stick_lite_v3``.
|
|
* Added KINCONY-KC868-A32 board: ``kincony_kc868_a32``.
|
|
* Added Lolin ESP32-S2 Mini board: ``esp32s2_lolin_mini``.
|
|
* Added Lilygo TTGO LoRa32 board: ``ttgo_lora32``.
|
|
* Added M5Stack AtomS3 board: ``m5stack_atoms3``.
|
|
* Added M5Stack AtomS3-Lite board: ``m5stack_atoms3_lite``.
|
|
* Added M5Stack StampS3 board: ``m5stack_stamps3``.
|
|
|
|
* Made these changes for ARM boards:
|
|
|
|
* Added support for low power on G1120B0MIPI using RT595.
|
|
* Added support for lpspi, lpi2c on NXP board: ``mimx93_evk_a55``.
|
|
* Fixed partition naming on ``lpcxpresso55s69`` to use the standard slot
|
|
naming used by TFM-enabled Zephyr platforms.
|
|
* Enabled support for linkserver debugger on ``frdm_kl25z``, ``mimxrt1015_evk``,
|
|
``mimxrt1020_evk``, ``mimxrt1050_evk``, ``mimxrt685_evk``, ``frdm_k64f``.
|
|
* Switched MCUBoot FW Update mode on NXP boards from Swap & Scratch to Swap & Move.
|
|
|
|
* Made these changes for RISC-V boards:
|
|
|
|
* Enabled ADC support on ``longan_nano``.
|
|
|
|
* Made these changes for native/POSIX boards:
|
|
|
|
* The :ref:`simulated nrf5340 targets<nrf5340bsim>` now include the IPC and MUTEX peripherals,
|
|
and support OpenAMP to communicate between the cores.
|
|
It is now possible to run the BLE controller or 802.15.4 driver in the net core, and application
|
|
and BT host in the app core.
|
|
|
|
* The nrf*_bsim simulated targets now include models of the UART peripheral. It is now possible
|
|
to connect a :ref:`nrf52_bsim<nrf52_bsim>` UART to another, or a UART in loopback, utilizing
|
|
both the new and legacy nRFx UART drivers, in any mode.
|
|
|
|
* For the native simulator based targets it is now possible to set via Kconfig command line
|
|
options which will be handled by the executable as if they were provided from the invoking
|
|
shell.
|
|
|
|
* For all native boards, the native logger backend will now also be
|
|
used even if the UART is enabled.
|
|
|
|
* Several bugfixes and other minor additions to the nRF5x HW models.
|
|
|
|
* Multiple documentation updates and fixes for all native boards.
|
|
|
|
* Added support for these following shields:
|
|
|
|
* Added support for M5Stack-Core2 base: ``m5stack_core2_ext``.
|
|
* Added support for MikroElektronika ACCEL 13 Click: ``mikroe_accel13_click``.
|
|
* Added support for Waveshare Pico UPS-B: ``waveshare_pico_ups_b``.
|
|
* Added support for X-NUCLEO-BNRG2A1: BLE expansion board: ``x_nucleo_bnrg2a1``.
|
|
* Added support for X-NUCLEO-IKS4A1: MEMS Inertial and Environmental Multi
|
|
sensor: ``x_nucleo_iks4a1``.
|
|
|
|
Build system and infrastructure
|
|
*******************************
|
|
|
|
* Added functionality for Link Time Optimization.
|
|
This change includes interrupt script generator rebuilding and adds the
|
|
following Kconfig options:
|
|
|
|
- :kconfig:option:`CONFIG_ISR_TABLES_LOCAL_DECLARATION`:
|
|
LTO compatible interrupt tables parser
|
|
- :kconfig:option:`CONFIG_LTO`: Enable Link Time Optimization
|
|
|
|
Currently the LTO compatible interrupt tables parser is only supported by ARM architectures and
|
|
GCC compiler/linker.
|
|
See pull request :github:`66392` for details.
|
|
|
|
* Dropped the ``COMPAT_INCLUDES`` option. It was unused since Zephyr v3.0.
|
|
|
|
* Fixed an issue whereby board revision ``0`` did not include overlay files for that revision.
|
|
|
|
* Added ``PRE_IMAGE_CMAKE`` and ``POST_IMAGE_CMAKE`` hooks to sysbuild modules, which allows for
|
|
modules to run code after and before each image's cmake invocation.
|
|
|
|
* Added :kconfig:option:`CONFIG_ROM_END_OFFSET` option which allows reducing the size of an image.
|
|
This is intended for use with firmware signing scripts which add additional data to the end of
|
|
images outside of the build itself.
|
|
|
|
* Added MCUboot image size reduction to sysbuild images which include MCUboot. This prevents
|
|
issues with building firmware images that are too large for MCUboot to swap.
|
|
|
|
* Deprecated :kconfig:option:`CONFIG_BOOTLOADER_SRAM_SIZE`. Users of this should transition to
|
|
having RAM set up properly in their board devicetree files.
|
|
|
|
* Fixed an issue whereby shields were processed in order of the root they resided in rather than
|
|
the order they were supplied to cmake in.
|
|
|
|
* Fixed an issue whereby using some shields with sysbuild would cause a cmake Kconfig error.
|
|
|
|
* Fixed an issue where the macros ``_POSIX_C_SOURCE`` and ``_XOPEN_SOURCE`` would be defined
|
|
globally when building with Picolibc or for the native (``ARCH_POSIX``) targets.
|
|
After this change users may need to define them for their own applications or libraries.
|
|
|
|
* Added support for sysbuild setting a signing script (``SIGNING_SCRIPT``). See
|
|
:ref:`west-extending-signing` for details.
|
|
|
|
* Added support for ``FILE_SUFFIX`` in the build system which allows for adding suffixes to
|
|
application Kconfig fragment file names and devicetree overlay file names. See
|
|
:ref:`application-file-suffixes` and :ref:`sysbuild_file_suffixes` for details.
|
|
|
|
* Deprecated ``CONF_FILE`` ``prj_<build>.conf`` build type.
|
|
|
|
* Added `-Wdouble-promotion` as a default warning when compiling to warn developers with
|
|
single-precision floats easily being promoted to double-precision.
|
|
|
|
Drivers and Sensors
|
|
*******************
|
|
|
|
* ADC
|
|
|
|
* Power Management for ADC is now supported on STM32 devices.
|
|
* STM32 ADC driver now supports mixing shared and separate IRQs (for instance on STM32G473
|
|
which has 5 ADCs, ADC1 and ADC2 share one IRQ while ADC3, ADC4 and ADC5 each have unique IRQs).
|
|
Enabling all instances in the same application is not possible on such devices as of now.
|
|
|
|
* Auxiliary Display
|
|
|
|
* Added Sparkfun SerLCD driver.
|
|
|
|
* Audio
|
|
|
|
* Added a driver :file:`drivers/audio/dmic_mcux.c` for NXP DMIC peripheral. This peripheral is
|
|
present on the ``iMX RT5xx`` and ``iMX RT6xx`` parts, as well as some LPC SOCs.
|
|
|
|
* Battery backed up RAM
|
|
|
|
* STM32WL devices now support BBRAM.
|
|
|
|
* CAN
|
|
|
|
* Added system call :c:func:`can_get_mode()` for getting the current operation mode of a CAN
|
|
controller.
|
|
|
|
* Add system call :c:func:`can_get_transceiver()` for getting the CAN transceiver associated with
|
|
a CAN controller.
|
|
|
|
* Added accessor functions for the CAN statistics.
|
|
|
|
* Added common bit error counter to the CAN statistics.
|
|
|
|
* Added CAN statistics support to the following drivers:
|
|
|
|
* :dtcompatible:`microchip,mcp2515`
|
|
* :dtcompatible:`espressif,esp32-twai`
|
|
* :dtcompatible:`kvaser,pcican`
|
|
|
|
* Added CAN controller driver for the Nuvoton NuMaker series
|
|
(:dtcompatible:`nuvoton,numaker-canfd`).
|
|
|
|
* Added CAN controller driver for the Infineon XMC4xxx family
|
|
(:dtcompatible:`infineon,xmc4xxx-can` and :dtcompatible:`infineon,xmc4xxx-can-node`).
|
|
|
|
* Added support for the NXP S32K1xx family to the :dtcompatible:`nxp,flexcan` driver.
|
|
|
|
* All Bosch M_CAN-based front-end drivers now use named IRQs, "int0" and "int1".
|
|
|
|
* The :dtcompatible:`zephyr,native-linux-can` driver now supports being built with embedded C
|
|
libraries.
|
|
|
|
* Added support for setting "raw" timing values from the :ref:`CAN shell <can_shell>`.
|
|
|
|
* Clock control
|
|
|
|
* Renesas R-Car clock control driver now supports Gen4 SoCs.
|
|
* Renamed ``CONFIG_CLOCK_CONTROL_RA`` to :kconfig:option:`CONFIG_CLOCK_CONTROL_RENESAS_RA`.
|
|
* On STM32 devices, :dtcompatible:`st,stm32-hse-clock` now allows setting a ``css-enabled``
|
|
property which enables HSE clock security system (CSS).
|
|
|
|
* Counter
|
|
|
|
* The nRFx counter driver now works with simulated nrf*_bsim targets.
|
|
* Added support for top value configuration and fixed a bug in the native posix driver.
|
|
* Added support for the MRT counter for NXP RT6xx, RT5xx and LPC55xxx.
|
|
|
|
* Crypto
|
|
|
|
* STM32WB devices now support crypto API through AES block.
|
|
|
|
* Display
|
|
|
|
* Introduced frame buffer config to STM32 LTDC driver.
|
|
|
|
* DMA
|
|
|
|
* STM32WBA Devices now support GPDMA.
|
|
* Introduced a new DMA driver :file:`drivers/dma/dma_nxp_edma.c` for NXP's eDMA IP.
|
|
|
|
* Entropy
|
|
|
|
* The "native_posix" entropy driver now accepts a new command line option ``seed-random``.
|
|
When used, the random generator will be seeded from ``/dev/urandom``
|
|
* On STM32devices, RNG block is now suspended when pool is full to save power.
|
|
|
|
* Ethernet
|
|
|
|
* The "native_posix" ethernet driver now supports being built with embedded C libraries.
|
|
* Enabled HW checksum offloading for STM32H7.
|
|
* Added implementation of Open Alliance's TC6 T1S driver.
|
|
* Added xmc4xxx driver.
|
|
* Added NXP enet driver with PTP support.
|
|
* Added KSZ8081 PHY driver.
|
|
* Added proper IPv4 multicast support to NXP mcux driver.
|
|
* Added LAN8651 T1S support.
|
|
* Added DSA support to STM32.
|
|
* Added tja1103 PHY support.
|
|
* Added Nuvoton numaker support.
|
|
* Fixed lan865x driver. Transmission speed improvements, IRQ handling fixes.
|
|
* Fixed s32_gmac driver. Link up/down handling fixes.
|
|
* Fixed phy_mii driver. The invalid phy id was incorrectly checked.
|
|
* Fixed sam_gmac driver. PTP clock adjustment was wrong for negative values.
|
|
* Fixed adin2111 driver. Initialization was done incorrectly when working with adin2110.
|
|
* Fixed ksz8081 driver. Logging changes, RMII clock fixes, GPIO pin fixes.
|
|
* Added a driver :file:`drivers/ethernet/eth_nxp_enet.c` for NXP ENET which is a rework of
|
|
the old driver :file:`drivers/ethernet/eth_mcux.c`. The old driver became
|
|
unmaintainable due to fundamental problems with the lack of PHY abstraction. The new driver
|
|
is still experimental and requires maturation. Eventually the old driver will be deprecated
|
|
and this new driver will be supported instead.
|
|
|
|
* Flash
|
|
|
|
* Redesigned the Atmel SAM controller to fully utilize flash page layout.
|
|
* ``spi_nor`` driver now sleeps between polls in ``spi_nor_wait_until_ready``. If this is not
|
|
desired (For example due to ROM constraints in a bootloader),
|
|
:kconfig:option:`CONFIG_SPI_NOR_SLEEP_WHILE_WAITING_UNTIL_READY` can be disabled.
|
|
* Flash readout protection configuration was added on STM32G4 and STM32L4 series.
|
|
|
|
* ``nordic_qspi_nor`` driver now supports user-configurable QSPI timeout with
|
|
:kconfig:option:`CONFIG_NORDIC_QSPI_NOR_TIMEOUT_MS`.
|
|
|
|
* GNSS
|
|
|
|
* Added GNSS device driver API and subsystem for parsing and publishing location,
|
|
datetime, and satellite information, enabled by
|
|
:kconfig:option:`CONFIG_GNSS` and :kconfig:option:`CONFIG_GNSS_SATELLITES`.
|
|
The GNSS subsystem and device drivers are based on the :ref:`modem` subsystem,
|
|
using the ``modem_pipe`` module, modem backends, and ``modem_chat`` module to
|
|
communicate with the modems. For systems which already contain a cellular modem,
|
|
adding a GNSS modem is very efficient due to the reuse of subsystems.
|
|
|
|
* Added GNSS-specific, safe, string-to-integer parsing utilities, enabled by
|
|
:kconfig:option:`CONFIG_GNSS_PARSE`.
|
|
|
|
* Added NMEA0183 parsing utilities, enabled by
|
|
:kconfig:option:`CONFIG_GNSS_NMEA0183`.
|
|
|
|
* Added extensive GNSS data logging, enabled by
|
|
:kconfig:option:`CONFIG_GNSS_DUMP_TO_LOG`.
|
|
|
|
* Added generic NMEA0183 over UART based modem device driver, matching the
|
|
devicetree compatible :dtcompatible:`gnss-nmea-generic`.
|
|
|
|
* Added fully featured device driver for the Quectel LCX6G series GNSS modems,
|
|
matching the devicetree compatibles :dtcompatible:`quectel,lc26g`,
|
|
:dtcompatible:`quectel,lc76g` and :dtcompatible:`quectel,lc86g`.
|
|
|
|
* GPIO
|
|
|
|
* Renesas R-Car GPIO driver now supports Gen4 SoCs.
|
|
* Renamed ``CONFIG_GPIO_RA`` to :kconfig:option:`CONFIG_GPIO_RENESAS_RA`.
|
|
* Added a new GPIO driver (:file:`drivers/gpio/gpio_mcux_rgpio.c`). This
|
|
driver is used for i.MX93 and i.MX8ULP.
|
|
|
|
* I2C
|
|
|
|
* :c:func:`i2c_get_config` is now supported on the STM32 driver.
|
|
|
|
* I2S
|
|
|
|
* STM32H7 devices now support I2S.
|
|
|
|
* I3C
|
|
|
|
* The Legacy Virtual Register defines have been renamed from ``I3C_DCR_I2C_*``
|
|
to ``I3C_LVR_I2C_*``.
|
|
|
|
* Added the ability to specify a start address when searching for a free I3C
|
|
address to be reserved. This requires a new function argument to
|
|
:c:func:`i3c_addr_slots_next_free_find`.
|
|
|
|
* Added a field named ``num_xfer`` in :c:struct:`i3c_msg` and
|
|
:c:struct:`i3c_ccc_taget_payload` as an output to indicate the actual
|
|
number of bytes transferred.
|
|
|
|
* Cadence I3C driver (:file:`drivers/i3c/i3c_cdns.c`):
|
|
|
|
* Added support to handle controller abort where the target does not emit
|
|
end of data for register read but continues sending data.
|
|
|
|
* Updated the timeout calculation to be coupled with CPU speed instead of
|
|
a fixed number of retries.
|
|
|
|
* NXP MCUX I3C driver (:file:`drivers/i3c/i3c_mcux.c`):
|
|
|
|
* Fixed ``mcux_i3c_config_get()`` not returning the configuration to the caller.
|
|
|
|
* Improved the FIFO read routine to support higher transfer rates.
|
|
|
|
* Removed the infinite wait for MCTRLDONE in auto IBI.
|
|
|
|
* Added ``disable-open-drain-high-pp`` property to
|
|
:dtcompatible:`nxp,mcux-i3c`, which allows alternative high time for
|
|
open-drain clock.
|
|
|
|
* IEEE 802.15.4
|
|
|
|
* Removed :kconfig:option:`CONFIG_IEEE802154_SELECTIVE_TXPOWER` Kconfig option.
|
|
|
|
* Input
|
|
|
|
* The ``short-codes`` property of :dtcompatible:`zephyr,input-longpress` is
|
|
now optional. The node can be used by specifying only input and long codes.
|
|
* Added support for keyboard matrix drivers, including a new
|
|
:dtcompatible:`gpio-kbd-matrix` and :dtcompatible:`input-keymap` drivers.
|
|
See :ref:`gpio-kbd` for more details.
|
|
* Added a pair of input codes to HID codes translation functions. See
|
|
:c:func:`input_to_hid_code` and :c:func:`input_to_hid_modifier`.
|
|
* Added power management support to :dtcompatible:`gpio-keys`
|
|
:dtcompatible:`focaltech,ft5336`.
|
|
* Added a :dtcompatible:`zephyr,native-linux-evdev` device node for getting
|
|
input events from a Linux evdev device node.
|
|
* Added support for optical encoders and power management to :dtcompatible:`gpio-qdec`.
|
|
* New driver :dtcompatible:`analog-axis`.
|
|
* Added ESP32 touch sensor driver including a :dtcompatible:`espressif,esp32-touch`.
|
|
|
|
* MDIO
|
|
|
|
* Fixed initialization priorities of NXP s32 NETC drivers.
|
|
* Fixed SAM GMAC transfer timeout errors caused by MDIO clock not being initialized.
|
|
* Fixed ESP32 MDIO driver being enabled when node was not status okay.
|
|
* Added support for C22 and C45 APIs on S32 GMAC.
|
|
* Added MDIO driver for NXP ENET peripheral.
|
|
* Added xmc4xxx MDIO drivers.
|
|
* Fixed build errors caused by mdio.h driver header not including errno.h
|
|
|
|
* MFD
|
|
|
|
* Added support for :dtcompatible:`maxim,max20335`.
|
|
* Added support for :dtcompatible:`adi,ad5592`.
|
|
* Added separate initialization priorities for :dtcompatible:`nordic,npm1300` and
|
|
:dtcompatible:`nordic,npm6001`.
|
|
|
|
* PCIE
|
|
|
|
* Fixed MMIO size calculation by disabling IO/memory decoding beforehand.
|
|
|
|
* Modified to use PNP ID for PRT retrieval.
|
|
|
|
* MEMC
|
|
|
|
* Added a new driver for NXP FlexRAM.
|
|
|
|
* MIPI-DBI
|
|
|
|
* Introduced a new :ref:`MIPI DBI driver class <mipi_dbi_api>`.
|
|
|
|
* Pin control
|
|
|
|
* Renesas R-Car pinctrl driver now supports Gen4 SoCs.
|
|
* Renamed ``CONFIG_PINCTRL_RA`` to :kconfig:option:`CONFIG_PINCTRL_RENESAS_RA`.
|
|
* Renesas R-Car pinctrl driver now supports voltage control for R8A77951 and
|
|
R8A77961 SoCs.
|
|
* Added driver for ZynqMP / Mercury XU.
|
|
* Added driver for i.MX8QM/QXP.
|
|
* Added driver for Renesas RZ/T2M.
|
|
* On STM32 devices, pins assigned to JTAG/SW port can now be put to analog state when
|
|
:kconfig:option:`CONFIG_PM` enabled and :kconfig:option:`CONFIG_DEBUG` disabled.
|
|
|
|
* PWM
|
|
|
|
* Fixed ESP32S3 low frequency PWM issue.
|
|
|
|
* Regulators
|
|
|
|
* Added new API functions
|
|
|
|
* :c:func:`regulator_set_active_discharge`
|
|
* :c:func:`regulator_get_active_discharge`
|
|
* :c:func:`regulator_list_current_limit`
|
|
|
|
* ``startup-delay-us`` and ``off-on-delay-us`` are now supported for all regulators.
|
|
* Added non-multithreading support.
|
|
* Added support for :dtcompatible:`maxim,max20335-regulator`.
|
|
* Added ASYS UVLO configuration for :dtcompatible:`nxp,pca9420`.
|
|
* Added LDO/DCDC support for :dtcompatible:`renesas,smartbond-regulator`.
|
|
* Added LDO soft start configuration for :dtcompatible:`nordic,npm1300-regulator`.
|
|
* Fixed init priority for :dtcompatible:`x-powers,axp192-regulator`.
|
|
* Fixed LDO GPIO control for :dtcompatible:`nordic,npm1300-regulator`.
|
|
|
|
* Retained memory
|
|
|
|
* Retained memory driver backend for registers was added.
|
|
|
|
* Retained memory API status was changed from experimental to unstable.
|
|
|
|
* RTC
|
|
|
|
* Added Atmel SAM driver.
|
|
|
|
* SMBUS:
|
|
|
|
* SMBUS is now supported on STM32 devices.
|
|
|
|
* SDHC
|
|
|
|
* Added SDHC driver for Cadence SDHC IP.
|
|
* Added SDHC driver for Infineon CAT1 IP.
|
|
* Added support for SDIO commands to iMX USDHC SDHC driver.
|
|
|
|
* Sensor
|
|
|
|
* Fixed arithmetic overflow in the LTRF216A driver.
|
|
* Fixed negative temperature calculation in MAX31865 driver.
|
|
* Added TI TMAG5273 3D Hall sensor driver.
|
|
* Added Vishay VCNL36825T proximity sensor driver.
|
|
* Added BMA4xx accelerometer sensor emulator.
|
|
* Added white channel support to the VEML7700 ambient light sensor driver.
|
|
* Added ST LIS2DE12 accelerometer sensor driver.
|
|
* Added Bosch BMP581 pressure sensor driver.
|
|
* Added support for triggering multiple sensor devices in the sensor shell.
|
|
* Added Aosong AGS10 TVOC air quality gas sensor driver.
|
|
* Extended MAX31865 temperature sensor driver to support changing three-wire
|
|
mode at runtime.
|
|
* Fixed Bosch BMI160 gyro range calculation and added support for getting
|
|
attributes.
|
|
* Optimized Bosch BMA4xx accelerometer sample calculation, improving
|
|
accuracy.
|
|
* Removed floating point arithmetic from the TI BQ274xx gauge driver.
|
|
* Fixed ST drivers Kconfig dependency to the HAL_ST module.
|
|
* Added Bosch BMA4xx accelerometer sensor driver.
|
|
* Added ST LIS2DU12 accelerometer sensor driver.
|
|
* Extended NTC thermistor driver to support TDK NTCG103JF103FT1.
|
|
* Added NXP S32 quadrature decoder driver.
|
|
* Fixed LSM6DSV16x gyro range table.
|
|
* Fixed missing return value checks in ADLTC2990, TSL2540, MAX17055 drivers.
|
|
* Added ST LPS28DFW pressure sensor driver.
|
|
* Fixed interrupt in BMI323 driver.
|
|
* Added devicetree properties macros to various ST sensor drivers.
|
|
* Added Renesas HS300x temperature/humidity sensor driver.
|
|
* Added Gas Sensing Solutions' ExplorIR-M CO2 sensor driver.
|
|
* Fixed self test delay in ADXL367 accelerometer sensor driver.
|
|
* Added ST LPS22DF pressure sensor driver.
|
|
* Added new streaming APIs and implemented in the ICM42688 driver.
|
|
* Added trigger support to the ADXL367 accelerometer sensor driver.
|
|
* Added PM suspend and resume support to the LSM6DSL accelerometer sensor
|
|
driver.
|
|
* Added AMS TSL2561 light sensor driver.
|
|
* Extended BQ274xx driver to support configuring and confirming the chemistry
|
|
profile.
|
|
* Extended LIS2DH and LSM6DSV16x drivers to support configuring INT1/INT2 in
|
|
devicetree.
|
|
* Added die temperature measurement support to NPM1300 charger driver.
|
|
* Added ADLTC2990 sensor emulator.
|
|
* Extended MPU6050 driver to support MPU6886 variant.
|
|
* Added ADXL367 accelerometer sensor driver.
|
|
* Added LiteOn LTR-F216A illuminance sensor driver.
|
|
* Added Memsic MC3419 accelerometer sensor driver.
|
|
* Added AMD SB temperature sensor driver.
|
|
* Added ESP32S3 internal temperature sensor driver.
|
|
* Added new self-documenting macros for setting ST sensor devicetree
|
|
properties (e.g., LSM6DSV16X_DT_ODR_AT_60Hz). (:github:`65410`)
|
|
|
|
* Serial
|
|
|
|
* Added drivers to support UART on Renesas RA and RZ/T2M.
|
|
* Added support for higher baud rate for ITE IT8xxx2.
|
|
* Added driver to support Intel Lightweight UART.
|
|
* Added UART asynchronous RX helper.
|
|
* Added support for async API on NS16550 driver.
|
|
* Updated ``uart_esp32`` to use serial port configuration from devicetree.
|
|
* Added an adaptation API to provide interrupt driven API for drivers
|
|
which have only implemented async API.
|
|
|
|
* Emulated UART driver (:file:`drivers/serial/uart_emul.c`):
|
|
|
|
* Added emulated interrupt based TX.
|
|
* Added emulated error for testing.
|
|
* Modified to use local work queue for data transfer.
|
|
* Modified FIFO size and its handling to be more aligned with real hardware.
|
|
|
|
* On STM32 devices, it is now possible to enable FIFO by setting a ``fifo-enable``
|
|
property in targeted serial node, with the following benefits:
|
|
In TX, FIFO allows to work in burst mode, easing scheduling of loaded applications.
|
|
It also allows more reliable communication with UART devices sensitive to variation of inter-frames delays.
|
|
In RX, FIFO reduces overrun occurrences.
|
|
|
|
* SPI
|
|
|
|
* On STM32H7 devices, ``fifo-enable`` property allows using SPI block FIFO. This
|
|
feature is still experimental and requires maturation.
|
|
* On STM32 devices impacted by BSY bit erratum, a workaround was implemented.
|
|
|
|
* USB
|
|
|
|
* On STM2G0 devices, property ``crs-usb-sof`` in ``clk_hsi48`` node enables support
|
|
for Clock Recovery System, allowing a more stable HSI48 clock and hence resilient USB
|
|
connection.
|
|
* On compatible STM32 devices, isochronous endpoints are now functional thanks to the
|
|
use of double buffering.
|
|
* Added new UDC driver for DWC2 controller.
|
|
* Added support for Nuvoton NuMaker series USBD controllers.
|
|
|
|
* W1
|
|
|
|
* Added 1-Wire GPIO master driver. See the :dtcompatible:`zephyr,w1-gpio`
|
|
devicetree binding for more information.
|
|
|
|
* Wi-Fi
|
|
|
|
* Added Infineon airoc driver.
|
|
* Fixed esp32 driver. Decreased minimum heap size, disabled automatic reconnection on leaving.
|
|
* Fixed esp_at driver. Allow building without IPv4 support. Passive Receive mode fixes. Depend on UART runtime configuration.
|
|
* Fixed winc1500 driver. Disconnect result event was not returned when disconnecting.
|
|
|
|
Networking
|
|
**********
|
|
|
|
* CoAP:
|
|
|
|
* Added support for Echo and Request-Tag CoAP options (RFC 9175).
|
|
* Changed :c:func:`coap_remove_observer` API function return type to bool.
|
|
* Introduced CoAP service library, which simplifies implementation of CoAP
|
|
server functionality.
|
|
* Updated CoAP server example to use CoAP service library.
|
|
* Added shell module for CoAP server.
|
|
* Fixed NULL pointer dereference in :c:func:`coap_packet_remove_option`.
|
|
* Added CoAP observer/service network events using the Network Event subsystem.
|
|
* Changed :c:func:`coap_pending_init` API function to take
|
|
:c:struct:`coap_transmission_parameters` instead of retry count.
|
|
* Added new API functions:
|
|
|
|
* :c:func:`coap_get_transmission_parameters`
|
|
* :c:func:`coap_set_transmission_parameters`
|
|
* :c:func:`coap_handle_request_len`
|
|
* :c:func:`coap_well_known_core_get_len`
|
|
* :c:func:`coap_uri_path_match`
|
|
* :c:func:`coap_packet_is_request`
|
|
* :c:func:`coap_find_observer`
|
|
* :c:func:`coap_find_observer_by_token`
|
|
* :c:func:`coap_pendings_count`
|
|
* :c:func:`coap_header_set_code`
|
|
|
|
* Connection Manager:
|
|
|
|
* Added a generic Wi-Fi connectivity backend.
|
|
|
|
* DHCP:
|
|
|
|
* Added missing DHCPv6 state structure initialization when initializing
|
|
network interface.
|
|
* DHCP-assigned IPv4 address is now removed when interface goes down.
|
|
* Added DHCPv4 server implementation.
|
|
* Rearranged DHCPv4 file structure. All DHCPv4 related files are now grouped
|
|
within ``subsys/net/lib/dhcpv4``.
|
|
* Moved DHCPv6 files to ``subsys/net/lib/dhcpv6`` to align with DHCPv4.
|
|
|
|
* DNS:
|
|
|
|
* Added support for enabling mDNS listener on all network interfaces.
|
|
* Added VLAN support to the ``mdns_responder`` sample.
|
|
* Fixed TTL/hop limit set on DNS packets.
|
|
* Added :kconfig:option:`CONFIG_DNS_RESOLVER_AUTO_INIT` which allows to disable
|
|
automatic initialization of the default DNS context on boot.
|
|
|
|
* Ethernet:
|
|
|
|
* Manual registration of ARP entries is now supported.
|
|
* Added PHY mode selection to device tree.
|
|
* Added TX-Injection mode support.
|
|
|
|
* gPTP:
|
|
|
|
* The local port identity is now used when forwarding sync messages.
|
|
* Fixed double converted byte order of BMCA info.
|
|
* GM PRIO root system id is now always used for announce messages.
|
|
* Created gPTP handler thread stack size Kconfig option.
|
|
* Inverted the priority of outgoing packets.
|
|
|
|
* ICMP:
|
|
|
|
* Fixed an error being emitted when unhandled ICMP message was received.
|
|
* Fixed a bug where ICMP Echo Reply could be sent without proper source IP
|
|
address set.
|
|
* Fixed a packet leak in ICMP Echo Request handlers in case priority check
|
|
failed.
|
|
* Improved thread safety of the module handling Neighbor Discovery.
|
|
* Added support for IPv6 Neighbor reachability hints, allowing to reduce
|
|
ICMPv6 traffic for active connections.
|
|
|
|
* IP:
|
|
|
|
* Fixed L3/L4 checksum calculation/validation for IP-fragmented packets on
|
|
interfaces that support checksum offload.
|
|
* Fixed net_context not being set on IP fragmented packets, preventing send
|
|
callback from being called.
|
|
* It is now possible to have separate IPv4 TTL value and IPv6 hop limit value for
|
|
unicast and multicast packets. This can be controlled in each socket via
|
|
:c:func:`setsockopt` API.
|
|
* Improved source IP address verification in the IP stack. Addresses received
|
|
to/from loopback address on non-loopback interfaces are dropped.
|
|
* Added new functions to verify if IPv6 address is site local or global.
|
|
* Added support for setting peer IP address in :c:struct:`net_pkt` structure
|
|
for offloaded interfaces. This allows for :c:func:`recvfrom` to return a
|
|
valid address in offloaded case.
|
|
|
|
* LwM2M:
|
|
|
|
* Added :kconfig:option:`CONFIG_LWM2M_UPDATE_PERIOD` which configures the LwM2M
|
|
Update period regardless of the lifetime value.
|
|
* Fixed composite read/write access rights check.
|
|
* Added shell command to delete object and resource instances.
|
|
* Fixed a bug in block-wise transfer where block-wise ACKs were sent with
|
|
wrong response code.
|
|
* Fixed object version reporting for LwM2M version 1.1.
|
|
* Added support for DTLS Connection Identifier in the LwM2M engine.
|
|
* Added support for LwM2M Server Disable executable resource.
|
|
* Implemented fallback mechanism for LwM2M server selection during registration
|
|
phase. The engine will now try to choose a different server if the current one
|
|
becomes unavailable or disabled.
|
|
* Added support for storing LwM2M error list in settings.
|
|
* Fixed pmin observer attribute handling in tickless mode.
|
|
* Added support for notifying the application about ongoing CoAP transmissions
|
|
with ``set_socket_state()`` callback.
|
|
* Deprecated unsigned 64-bit integer value type, as it's not represented in the spec.
|
|
Use signed 64-bit integer instead.
|
|
* Added a callback for LwM2M Gateway object, which allows to handle LwM2M messages
|
|
with prefixed path.
|
|
* Added LwM2M-specific macros for object initialization during boot.
|
|
* Several other minor bugfixes ans improvements.
|
|
|
|
* Misc:
|
|
|
|
* Added support for compile time network event handlers using the macro
|
|
:c:macro:`NET_MGMT_REGISTER_EVENT_HANDLER`.
|
|
* Added the :kconfig:option:`CONFIG_NET_MGMT_EVENT_WORKER` choice to
|
|
allow emitting network events using the system work queue or synchronously.
|
|
* Removed redundant Network Connectivity API documentation page.
|
|
* Improved thread safety of the network connections subsystem.
|
|
* Removed ``eth_native_posix`` sample.
|
|
* Removed redundant ``arb`` and ``fv2015`` fields from
|
|
``struct net_pkt_cb_ieee802154``.
|
|
* Introduced a separate mutex for TX at the network interface level to prevent
|
|
concurrent access on TX to drivers that are not re-entrant.
|
|
* Fixed netmask not being registered for loopback address.
|
|
* Added support for binding to a specific network interface at the net_context
|
|
level.
|
|
* Added IGMPv3 support.
|
|
* Added a new network event, ``NET_EVENT_HOSTNAME_CHANGED``, triggered upon
|
|
hostname change.
|
|
* Refactored net_context option getters/setters to reduce code duplication.
|
|
* Fixed a possible packet leak at the ARP level, in case of errors during ARP
|
|
packet creation.
|
|
* Added support for analyzing SNTP time uncertainty.
|
|
* Fixed network interface being brought up even when underlying device is not
|
|
ready.
|
|
* Added start/stop functions for dummy interfaces.
|
|
* Added a detailed :ref:`network configuration <network_configuration_guide>`
|
|
guide to the documentation.
|
|
* Added :kconfig:option:`CONFIG_NET_HOSTNAME_DYNAMIC` option, which allows to
|
|
enable setting hostname at runtime.
|
|
|
|
* MQTT-SN:
|
|
|
|
* Added :c:func:`mqtt_sn_get_topic_name` API function.
|
|
* Fixed handling of incoming Register messages when wildcard subscription is used.
|
|
|
|
* OpenThread:
|
|
|
|
* Implemented the following OpenThread platform APIs:
|
|
|
|
* ``otPlatRadioSetRxOnWhenIdle()``
|
|
* ``otPlatResetToBootloader()``
|
|
* ``otPlatCryptoPbkdf2GenerateKey()``
|
|
|
|
* Updated OpenThread platform UART driver so that it no longer waits for
|
|
communication with a host to start during boot.
|
|
* Added BLE TCAT implementation in OpenThread platform.
|
|
* Updated Crypto PSA backend for OpenThread with additional algorithms.
|
|
* Fixed ``otPlatAssertFail()`` so that it prints the location of the actual
|
|
assert instead of the function itself.
|
|
|
|
* PPP:
|
|
|
|
* Fixed PPP connection termination when interface goes down.
|
|
|
|
* Shell:
|
|
|
|
* Refactored networking shell module so that instead of large single file, it
|
|
is split into submodules, on a per command basis.
|
|
* Fixed unexpected timeout message when executing loopback ping.
|
|
* Added ``net sockets`` command to print information about open sockets and
|
|
socket services.
|
|
* Join IPv4/IPv6 multicast groups, if needed, when adding IPv4/IPv6 multicast
|
|
addresses via shell.
|
|
* Fixed ``tcp connect`` command operation (TCP context released prematurely).
|
|
* Added support for Echo option in telnet shell backend.
|
|
* Fixed unnecessary connection close in telnet shell backend in case of
|
|
non-fatal EAGAIN or ENOBUFS errors.
|
|
* Fixed double packet dereference in ping reply handler.
|
|
* Fixed possible deadlock when executing ``net arp`` command.
|
|
* Added more detailed Ethernet statistics printout for ``net stats`` command.
|
|
* Added ``net dhcpv4 server`` commands for DHCPv4 server management.
|
|
* Added shell module to manage TLS credentials.
|
|
|
|
* Sockets:
|
|
|
|
* Added support for v4-mapping-to-v6, which allows IPv4 and IPv6 to share the
|
|
same port space.
|
|
* Added support for :c:macro:`IPV6_V6ONLY` socket option.
|
|
* Added support for :c:macro:`SO_ERROR` socket option.
|
|
* Fixed :c:func:`select` not setting ``writefds`` in case of errors.
|
|
* Added support for object core, which allows to track networks sockets and
|
|
their statistics.
|
|
* Added support for :c:func:`recvmsg`.
|
|
* Added support for :c:macro:`IP_PKTINFO` and :c:macro:`IPV6_RECVPKTINFO`
|
|
socket options.
|
|
* Added support for :c:macro:`IP_TTL` socket option.
|
|
* Added support for IPv4 multicast :c:macro:`IP_ADD_MEMBERSHIP` and
|
|
:c:macro:`IP_DROP_MEMBERSHIP` socket options.
|
|
* Added support for IPv6 multicast :c:macro:`IPV6_ADD_MEMBERSHIP` and
|
|
:c:macro:`IPV6_DROP_MEMBERSHIP` socket options.
|
|
* Improved doxygen documentation of BSD socket API.
|
|
* Fixed POLLERR error reporting in TLS sockets.
|
|
* Fixed DTLS handshake processing during :c:func:`poll`.
|
|
* Aligned DTLS socket :c:func:`connect` behavior with regular TLS (handshake
|
|
during connect call).
|
|
* Added Socket Service library, which allows registering multiple socket-based
|
|
network services and processing them within a single thread.
|
|
* Added a new ``echo_service`` sample for Socket Service.
|
|
* Added support for :c:macro:`SO_DOMAIN` socket option.
|
|
* Fixed DTLS connection timeout when monitoring socket with :c:func:`poll`.
|
|
* Fixed NULL link layer address pointer dereference on packet socket, in case
|
|
of packet loopback.
|
|
* Several other minor bugfixes and improvements.
|
|
|
|
* TCP:
|
|
|
|
* TCP stack now replies with RST packet in response to connection attempt on
|
|
a closed port.
|
|
* Fixed remote address passed in :c:func:`accept` call.
|
|
* Fixed reference counting during active handshake to prevent TCP context
|
|
being released prematurely.
|
|
* Fixed compilation with :kconfig:option:`CONFIG_NET_TCP_CONGESTION_AVOIDANCE`
|
|
disabled.
|
|
* Reworked TCP data queueing API to prevent TCP stack from overflowing TX window.
|
|
* Fixed possible race condition between TCP workqueue and other threads when
|
|
releasing TCP context.
|
|
* Fixed possible race condition between input thread and TCP workqueue.
|
|
* Added support for TCP Keep-Alive feature.
|
|
* Fixed a bug where TCP state machine could get stuck in LAST_ACK state
|
|
during passive connection close.
|
|
* Fixed a bug where TCP state machine could get stuck in FIN_WAIT_1 state
|
|
in case peer did not respond.
|
|
* Several other minor bugfixes ans improvements.
|
|
|
|
* TFTP:
|
|
|
|
* Fixed potential buffer overflow when copying TFTP error message.
|
|
* Improved logging in case of errors.
|
|
|
|
* Wi-Fi:
|
|
|
|
* Added Wi-Fi driver version information to Wi-Fi shell.
|
|
* Added AP (Access Point) mode support to Wi-Fi shell.
|
|
* Added Regulatory channel information.
|
|
* Added Wi-Fi bindings to connection manager.
|
|
* Fixed Wi-Fi shell. SSID print fixes. Help text fixes. Channel validation fixes.
|
|
* Fixed TWT functionality. Teardown status was not updated. Powersave fixes.
|
|
|
|
* zperf:
|
|
|
|
* Improved IP address binding. Zperf will now bind to any address by default and
|
|
allow to override this with Kconfig/API provided address.
|
|
* Fixed TCP packet counting when transmitting.
|
|
* Refactored UDP/TCP received to use Socket Service to save memory.
|
|
* Fixed zperf session leak on interrupted downloads.
|
|
* Fixed the calculation ratio between Mbps, Kbps and bps.
|
|
* The zperf sample now supports relocating network code to RAM.
|
|
|
|
USB
|
|
***
|
|
|
|
* Device support:
|
|
|
|
* Introduced new USB Audio 2 implementation that uses devicetree for
|
|
instantiation, hiding descriptor complexity from the application. The initial
|
|
implementation is limited to full speed only and provides the absolute
|
|
minimum set of features required for basic implicit and explicit feedback.
|
|
Interrupt notification is not supported.
|
|
* Added support for SetFeature(TEST_MODE).
|
|
|
|
Devicetree
|
|
**********
|
|
|
|
Bindings
|
|
========
|
|
|
|
* Introduced new SPI properties ``spi-cpol``, ``spi-cpha``, and ``spi-hold-cs`` to be used by
|
|
the macro :c:macro:`SPI_CONFIG_DT` in order to set SPI mode in a Devicetree file.
|
|
|
|
Libraries / Subsystems
|
|
**********************
|
|
|
|
* Management
|
|
|
|
* Fixed an issue in MCUmgr image management whereby erasing an already erased slot would return
|
|
an unknown error. It now returns success.
|
|
|
|
* Fixed MCUmgr UDP transport structs being statically initialised. This results in about a
|
|
~5KiB flash saving.
|
|
|
|
* Fixed an issue in MCUmgr which would cause a user data buffer overflow if the UDP transport was
|
|
enabled on IPv4 only but IPv6 support was enabled in the kernel.
|
|
|
|
* Implemented datetime functionality in MCUmgr OS management group. This makes use of the RTC
|
|
driver API.
|
|
|
|
* Fixed an issue in MCUmgr console UART input whereby the FIFO would be read outside of an ISR,
|
|
which is not supported in the next USB stack.
|
|
|
|
* Fixed an issue whereby the ``mcuboot erase`` DFU shell command could be used to erase the
|
|
MCUboot or currently running application slot.
|
|
|
|
* Fixed an issue whereby messages that were too large to be sent over the UDP transport would
|
|
wrongly return :c:enumerator:`MGMT_ERR_EINVAL` instead of :c:enumerator:`MGMT_ERR_EMSGSIZE`.
|
|
|
|
* Fixed an issue where confirming an image in Direct XIP mode would always confirm the image in
|
|
the primary slot even when executing from the secondary slot. Now the currently active image is
|
|
always confirmed.
|
|
|
|
* Added support for retrieving registered command groups, to support registering and deregistering
|
|
default command groups at runtime, allowing an application to support multiple implementations
|
|
for the same command group.
|
|
|
|
* Fixed an issue in MCUmgr FS management whereby the semaphore lock would not be given if an
|
|
error was returned, leading to a possible deadlock.
|
|
|
|
* Added support for custom payload MCUmgr handlers. This can be enabled with
|
|
:kconfig:option:`CONFIG_MCUMGR_MGMT_CUSTOM_PAYLOAD`.
|
|
|
|
* Fixed an issue in MCUmgr image management whereby an error would be returned if a command was
|
|
sent to erase the slot which was already erased.
|
|
|
|
* Added support for image slot size checking to ensure an update can be utilised by MCUboot.
|
|
This can be performed by using sysbuild when building both application and MCUboot by enabling
|
|
:kconfig:option:`CONFIG_MCUMGR_GRP_IMG_TOO_LARGE_SYSBUILD` or by use of bootloader information
|
|
sharing from MCUboot by enabling
|
|
:kconfig:option:`CONFIG_MCUMGR_GRP_IMG_TOO_LARGE_BOOTLOADER_INFO`.
|
|
|
|
* Logging
|
|
|
|
* Added an option to remove string literals from the binary when dictionary-based logging is used.
|
|
|
|
* Optimized the most common logging messages (strings with up to 2 numeric arguments). Optimization
|
|
is done for code size (significant gain seen on riscv32) and performance.
|
|
|
|
* Extended logging frontend API to optionally implement dedicated functions for optimized messages.
|
|
Optional API is enabled by :kconfig:option:`CONFIG_LOG_FRONTEND_OPT_API`.
|
|
|
|
* Added support for runtime message filtering for the logging frontend.
|
|
|
|
* Added option to support multiple instances of the UART logging backend.
|
|
|
|
* Fixed userspace issue for :c:func:`printk` when :kconfig:option:`CONFIG_LOG_PRINTK` is enabled.
|
|
|
|
* Added compile time detection of logging messages that use character pointers for ``%p``.
|
|
It must be avoided when dictionary-based logging is used and strings are stripped from the
|
|
binary. When an erroneous case is detected, the user message is replaced with an error message
|
|
that suggests pointer casting must be added.
|
|
|
|
* Removed remaining references to v2 logging. Renamed :c:func:`log2_generic` to :c:func:`log_generic`.
|
|
|
|
* Modem modules
|
|
|
|
* Added ``TRANSMIT_IDLE`` event to the ``modem_pipe`` module which notifies the user of the pipe
|
|
that the backend has transmitted all bytes placed in its buffer using
|
|
:c:func:`modem_pipe_transmit()`.
|
|
The event greatly increases the efficiency of transmitting large quantities of data if used to
|
|
dynamically manage the delay between calls to :c:func:`modem_pipe_transmit()`.
|
|
|
|
* Implemented ``TRANSMIT_IDLE`` event in all modem backends.
|
|
|
|
* Extended all modem modules to utilize the ``TRANSMIT_IDLE`` event to dynamically manage the delay
|
|
between calls to :c:func:`modem_pipe_transmit()`. This addition reduced the utilization of the
|
|
system workqueue while transmitting large, continuous quantities of data, by 86%, while only
|
|
reducing the throughput by 12%. This optimization additionally allows lower priority threads,
|
|
like the deferred logging thread, to run during the transmission (it was blocked by the
|
|
relentless, continuous calls to :c:func:`modem_pipe_transmit()`).
|
|
|
|
* Improved ``modem_pipe`` event dispatching. The ``modem_pipe`` module now invokes the
|
|
``RECEIVE_READY`` event every time the pipe is attached using :c:func:`modem_pipe_attach()`
|
|
if it has data ready to be read, and always invokes ``TRANSMIT_IDLE`` when the pipe is
|
|
either opened or attached. This ensures event driven users of the modem pipe module can
|
|
rely solely on the events to start read/transmit work. A test suite has been added to
|
|
complement the improvements.
|
|
|
|
* Extended ``modem_cmux`` module to support acting both as DTE (user application) and DCE (modem).
|
|
With this addition, two Zephyr applications can communicate with each other through their
|
|
respective ``modem_cmux`` instances.
|
|
|
|
* Picolibc
|
|
|
|
* Updated to version 1.8.6. This removes the :c:macro:`_POSIX_C_SOURCE` definition from the build
|
|
system, so applications will need to add this if they use APIs outside of the Zephyr
|
|
requirements.
|
|
|
|
* Added new :c:func:`printf` modes, :kconfig:option:`CONFIG_PICOLIBC_IO_LONG_LONG` and
|
|
:kconfig:option:`CONFIG_PICOLIBC_IO_MINIMAL`. These provide applications with finer grained
|
|
control over the level of support provided by the library to control text space usage. By
|
|
default, the correct level of support is selected based upon other configuration parameters.
|
|
|
|
* Added :kconfig:option:`CONFIG_PICOLIBC_ASSERT_VERBOSE`. This option, which is false by default,
|
|
controls whether the :c:func:`assert` function displays verbose information, including the file
|
|
name, line number, function name and failing expression text, when the assertion fails. Leaving
|
|
this disabled saves text space.
|
|
|
|
* :kconfig:option:`CONFIG_THREAD_LOCAL_STORAGE` can now be disabled while using Picolibc. This is
|
|
very helpful in diagnosing issues when using Picolibc as those are often caused by enabling TLS
|
|
and not caused by using the library itself.
|
|
|
|
* Numerous improvements in the library including code-size reductions in areas like printf and
|
|
ctype and various fixes in the math library.
|
|
|
|
* Power management
|
|
|
|
* Introduced Atmel SAM SUPC functions to allow wakeup sources and poweroff.
|
|
* STM32F4 devices now support stop mode thanks to the use of a RTC based idle timer which
|
|
keeps track of tick evolution while cortex systick is off.
|
|
|
|
* :c:func:`pm_device_runtime_put_async()` got a parameter to specify a minimum delay to
|
|
the operation. This is useful to avoid multiple states transitions when a device is used.
|
|
|
|
* Devices that don't need to block when suspending or resuming can now be defined as ISR
|
|
safe (``PM_DEVICE_ISR_SAFE``). For those devices, Zephyr is able to reduce RAM consumption
|
|
and runtime device power management can be safely used from interrupts.
|
|
|
|
* Optimizations in device runtime power management. :c:func:`pm_device_runtime_get` and
|
|
:c:func:`pm_device_runtime_put` no longer wait for a pending operation to be concluded if it is still
|
|
in the work queue. In this case, the pending work is just canceled and the device state updated.
|
|
|
|
* The Kconfig options below were added to customize the initialization priority of different
|
|
power domains.
|
|
|
|
* :kconfig:option:`CONFIG_POWER_DOMAIN_GPIO_INIT_PRIORITY`
|
|
* :kconfig:option:`CONFIG_POWER_DOMAIN_GPIO_MONITOR_INIT_PRIORITY`
|
|
* :kconfig:option:`CONFIG_POWER_DOMAIN_INTEL_ADSP_INIT_PRIORITY`
|
|
|
|
* Crypto
|
|
|
|
* Mbed TLS updated to 3.5.2. Full release notes can be found in:
|
|
https://github.com/Mbed-TLS/mbedtls/releases/tag/v3.5.2
|
|
|
|
* Retention
|
|
|
|
* Fixed issue whereby :kconfig:option:`CONFIG_RETENTION_BUFFER_SIZE` values over 256 would cause
|
|
an infinite loop due to use of 8-bit variables.
|
|
|
|
* SD
|
|
|
|
* Added support for SDIO devices.
|
|
|
|
* Storage
|
|
|
|
* File systems: LittleFS module has been updated to version 2.8.1.
|
|
|
|
* Following Flash Map API macros, marked in 3.2 as deprecated, have been removed:
|
|
``FLASH_AREA_ID``, ``FLASH_AREA_OFFSET``, ``FLASH_AREA_SIZE``,
|
|
``FLASH_AREA_LABEL_EXISTS`` and ``FLASH_AREA_DEVICE``.
|
|
|
|
* POSIX API
|
|
|
|
* Completed support for ``POSIX_THREADS_EXT``, ``XSI_THREADS_EXT``,
|
|
``POSIX_CLOCK_SELECTION``, and ``POSIX_SEMAPHORES`` Option Groups.
|
|
|
|
* Completed support for ``_POSIX_MESSAGE_PASSING`` and
|
|
``_POSIX_PRIORITY_SCHEDULING`` Options.
|
|
|
|
* Fixed Coverity-CID 211585, 334906, 334909, and 340851.
|
|
|
|
* Improved structure and accuracy of POSIX documentation.
|
|
|
|
* Improved navigation and organization of POSIX Kconfig options.
|
|
|
|
* Added support to allocate and free stacks up to 8 MB with pthread_attr_t.
|
|
|
|
* Added support for deferred and asynchronous thread cancellation.
|
|
|
|
* Added dining philosophers sample application.
|
|
|
|
* Added support for named semaphores.
|
|
|
|
* Added a top-level ``posix`` command in the Zephyr shell. Zephyr shell utilities for
|
|
the POSIX API can be added as subcommands (e.g. ``posix uname -a``)
|
|
|
|
* Added support for async thread cancellation and ``SIGEV_THREAD``, ``CLOCK_REALTIME``.
|
|
|
|
* Added compile-time-constant sysconf() implementation.
|
|
|
|
* LoRa/LoRaWAN
|
|
|
|
* Added LoRaWAN remote multicast support with :kconfig:option:`CONFIG_LORAWAN_REMOTE_MULTICAST`
|
|
in preparation for OTA firmware upgrade support.
|
|
|
|
* ZBus
|
|
|
|
* Replaced mutexes with semaphores to lock channels and implement the Highest Locker Protocol (HLP)
|
|
priority boost for the zbus operations. This feature avoids priority inversions and preemptions,
|
|
making the VDED delivery process faster and more consistent. (:github:`63183`)
|
|
|
|
* Fixed documentation for :c:func:`zbus_chan_add` and :c:func:`zbus_chan_rm` adding the timeout
|
|
argument. (:github:`65544`)
|
|
|
|
* Fixed warning when mixing C and C++ files using zbus. (:github:`65222`)
|
|
|
|
* :c:macro:`ZBUS_CHANNEL_DEFINE` macro is now compatible with C++. (:github:`65196`)
|
|
|
|
* Fixed parameter order of net buf pool fixed definition. (:github:`65039`)
|
|
|
|
* Refactored the benchmark sample, adding message subscribers. (:github:`64524`)
|
|
|
|
* Renamed ``CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_DYNAMIC`` and
|
|
``CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_STATIC`` to
|
|
:kconfig:option:`CONFIG_ZBUS_MSG_SUBSCRIBER_BUF_ALLOC_DYNAMIC` and
|
|
:kconfig:option:`CONFIG_ZBUS_MSG_SUBSCRIBER_BUF_ALLOC_STATIC`. (:github:`65632`)
|
|
|
|
HALs
|
|
****
|
|
|
|
* STM32
|
|
|
|
* Updated STM32F1 to cube version V1.8.5.
|
|
* Updated STM32F7 to cube version V1.17.1.
|
|
* Updated STM32H7 to cube version V1.11.1.
|
|
* Updated STM32L4 to cube version V1.18.0.
|
|
* Updated STM32U5 to cube version V1.4.0.
|
|
* Updated STM32WBA to cube version V1.2.0.
|
|
* Updated STM32WB to cube version V1.18.0.
|
|
|
|
MCUboot
|
|
*******
|
|
|
|
* Fixed compatible sector checking in bootutil.
|
|
|
|
* Fixed Kconfig issue with saving encrypted TLVs not depending on encryption being enabled.
|
|
|
|
* Fixed issue with missing condition check for applications in sysflash include file.
|
|
|
|
* Fixed issue with single slot encrypted image listing support in boot_serial.
|
|
|
|
* Fixed issue with allowing MBEDTLS Kconfig selection when tinycrypt is used.
|
|
|
|
* Fixed missing response if echo command was disabled in boot_serial.
|
|
|
|
* Fixed issue with USB configurations not generating usable images.
|
|
|
|
* Added debug logging for boot status write in bootutil.
|
|
|
|
* Added estimated image overhead size to cache in sysbuild.
|
|
|
|
* Added firmware loader operating mode which allows for a dedicated secondary slot image that
|
|
is used to update the primary image.
|
|
|
|
* Added error if main thread is not pre-emptible when USB CDC serial recovery is enabled.
|
|
|
|
* Added error if USB CDC and console are both enabled and set to the same device.
|
|
|
|
* Removed the deprecated ``CONFIG_ZEPHYR_TRY_MASS_ERASE`` Kconfig option.
|
|
|
|
* Updated zcbor to version 0.8.1 and re-generated boot_serial files.
|
|
|
|
* Moved IO functions out of main to separate file.
|
|
|
|
* Made ``align`` parameter of imgtool optional.
|
|
|
|
* Added MCUBoot support for ``mimxrt1010_evk``, ``mimxrt1015_evk``,
|
|
``mimxrt1040_evk``, ``lpcxpresso55s06``, ``lpcxpresso55s16``,
|
|
``lpcxpresso55s28``, ``lpcxpresso55s36``, ``lpcxpresso55s69_cpu0``.
|
|
|
|
* Added :kconfig:option:`CONFIG_MCUBOOT_IMGTOOL_OVERWRITE_ONLY` which passes the --overwrite-only option
|
|
to imgtool to avoid adding the swap status area size when calculating overflow.
|
|
It is used by non-swap update modes.
|
|
|
|
* The MCUboot version in this release is version ``2.1.0+0-dev``.
|
|
|
|
zcbor
|
|
*****
|
|
|
|
zcbor has been updated from 0.7.0 to 0.8.1.
|
|
Full release notes can be found at:
|
|
https://github.com/zephyrproject-rtos/zcbor/blob/0.8.0/RELEASE_NOTES.md and
|
|
https://github.com/zephyrproject-rtos/zcbor/blob/0.8.1/RELEASE_NOTES.md
|
|
|
|
Highlights:
|
|
|
|
* Addded support for unordered maps.
|
|
* Performance improvements.
|
|
* Naming improvements for generated code.
|
|
* Bugfixes.
|
|
|
|
LVGL
|
|
****
|
|
|
|
LVGL has been updated from 8.3.7 to 8.3.11.
|
|
Detailed release notes can be found at:
|
|
https://github.com/zephyrproject-rtos/lvgl/blob/zephyr/docs/CHANGELOG.md
|
|
|
|
Additionally, the following changes in Zephyr were done:
|
|
|
|
* Added the :dtcompatible:`zephyr,lvgl-keypad-input` compatible for keypad input.
|
|
|
|
* Fixed issue with the Zephyr log levels not mapping properly to LVGL log levels.
|
|
|
|
* Fixed issue where setting :kconfig:option:`CONFIG_LV_Z_FULL_REFRESH` did not
|
|
set :kconfig:option:`CONFIG_LV_Z_VDB_SIZE` to 100 percent.
|
|
|
|
Tests and Samples
|
|
*****************
|
|
|
|
* :ref:`native_sim<native_sim>` has replaced :ref:`native_posix<native_posix>` as the default
|
|
test platform.
|
|
:ref:`native_posix<native_posix>` remains supported and used in testing but will be deprecated
|
|
in a future release.
|
|
|
|
* Bluetooth split stacks tests, where the BT host and controller are run in separate MCUs, are
|
|
now run in CI based on the :ref:`nrf5340_bsim<nrf5340bsim>` targets.
|
|
Several other runtime AMP tests based on these targets have been added to CI, including tests
|
|
of OpenAMP, the mbox and IPC drivers/subsystem, and the logger multidomain functionality.
|
|
|
|
* Runtime UART tests have been added to CI based on the :ref:`nrf52_bsim<nrf52_bsim>` target.
|
|
These include tests of the nRFx UART driver and networked BT stack tests with the host and
|
|
controller in separate devices communicating over the HCI UART driver.
|
|
|
|
* Fixed an issue in :zephyr:code-sample:`smp-svr` sample whereby if USB was already initialised,
|
|
application would fail to boot properly.
|
|
|
|
* Added an LVGL sample :zephyr:code-sample:`lvgl-accelerometer-chart` showcasing displaying of live
|
|
sensor data in a chart widget.
|
|
|
|
* Added ESP32-S3 IPM support in :zephyr:code-sample:`ipm-esp32`.
|
|
|
|
* Added ESP32 memory-mapped flash access sample in :zephyr:code-sample:`esp32-flash-memory-mapped`.
|
|
|
|
* Added ESP32 PWM loopback test case.
|
|
|
|
* Added support in the mbox sample for NXP boards ``MIMXRT1160-EVK``, ``MIMXRT1170-EVK``,
|
|
``MIMXRT1170-EVKB``, ``LPCXpresso55S69``.
|
|
|
|
* Added a sample ``flexram-magic-addr`` for ``mimxrt11xx_cm7`` to show how to use flexram magic
|
|
address functionality when using memc flexram driver.
|