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