| :orphan: |
| |
| .. _zephyr_3.4: |
| |
| Zephyr 3.4.0 |
| ############ |
| |
| We are pleased to announce the release of Zephyr version 3.4.0. |
| |
| Major enhancements with this release include: |
| |
| * Input subsystem: handles input events from various types of input devices and |
| distributes them to other threads in the application. |
| * Barrier API: added architecture agnostic API for data memory barriers. |
| * USB Device support: |
| |
| * USB device controller API (UDC API) and nRF USBD controller driver. |
| * USB device stack implementation using new UDC API. |
| |
| * Added Power Delivery Source Support to the USB-C Stack. |
| * Bluetooth: Added support for Periodic Advertising with Responses (PAwR). |
| * Cache API functions are now fully in-lined by compilers. |
| * Added an API for real-time clocks (RTC). |
| * Added Retention subsystem. |
| * Added initial support for MMU on Xtensa. |
| * SMBus (System Management Bus) API. |
| * Various improvements to the testing framework and twister: |
| |
| - Introduction of 3 new test harnesses into twister supporting pyTest, |
| GoogleTest and Robot Framework. |
| - Transitioning to new Ztest API was completed and legacy Ztest was deprecated. |
| |
| * Added Snippets: Support common configuration settings that can be used across |
| platforms. |
| |
| 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-1901: Under embargo until 2023-07-04 |
| |
| * CVE-2023-1902: Under embargo until 2023-07-04 |
| |
| API Changes |
| *********** |
| |
| Changes in this release |
| ======================= |
| |
| * Any applications using the mcuboot image manager |
| (:kconfig:option:`CONFIG_MCUBOOT_IMG_MANAGER`) will now need to also select |
| :kconfig:option:`CONFIG_FLASH_MAP` and :kconfig:option:`CONFIG_STREAM_FLASH`, |
| this prevents a cmake dependency loop if the image manager Kconfig is enabled |
| manually without also manually enabling the other options. |
| |
| * Including hawkbit in an application now requires additional Kconfig options |
| to be selected, previously these options would have been selected |
| automatically but have changed from ``select`` options in Kconfig files to |
| ``depends on``: |
| |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_NVS` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_FLASH` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_FLASH_MAP` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_STREAM_FLASH` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_REBOOT` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_HWINFO` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_NET_TCP` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_NET_SOCKETS` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_IMG_MANAGER` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_NETWORKING` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_HTTP_CLIENT` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_DNS_RESOLVER` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_JSON_LIBRARY` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_NET_SOCKETS_POSIX_NAMES` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_BOOTLOADER_MCUBOOT` | |
| +--------------------------------------------------+ |
| |
| * Including updatehub in an application now requires additional Kconfig options |
| to be selected, previously these options would have been selected |
| automatically but have changed from ``select`` options in Kconfig files to |
| ``depends on``: |
| |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_FLASH` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_STREAM_FLASH` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_FLASH_MAP` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_REBOOT` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_MCUBOOT_IMG_MANAGER` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_IMG_MANAGER` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_IMG_ENABLE_IMAGE_CHECK` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_BOOTLOADER_MCUBOOT` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_MPU_ALLOW_FLASH_WRITE` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_NETWORKING` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_NET_UDP` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_NET_SOCKETS` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_NET_SOCKETS_POSIX_NAMES` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_COAP` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_DNS_RESOLVER` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_JSON_LIBRARY` | |
| +--------------------------------------------------+ |
| | :kconfig:option:`CONFIG_HWINFO` | |
| +--------------------------------------------------+ |
| |
| * The sensor driver API clarified :c:func:`sensor_trigger_set` to state that |
| the user-allocated sensor trigger will be stored by the driver as a pointer, |
| rather than a copy, and passed back to the handler. This enables the handler |
| to use :c:macro:`CONTAINER_OF` to retrieve a context pointer when the trigger |
| is embedded in a larger struct and requires that the trigger is not allocated |
| on the stack. Applications that allocate a sensor trigger on the stack need |
| to be updated. |
| |
| * Converted few drivers to the :ref:`input` subsystem. |
| |
| * ``gpio_keys``: moved out of ``gpio``, replaced the custom API to use input |
| events instead, the :dtcompatible:`zephyr,gpio-keys` binding is unchanged |
| but now requires ``zephyr,code`` to be set. |
| * ``ft5336``: moved from :ref:`kscan_api` to :ref:`input`, renamed the Kconfig |
| options from ``CONFIG_KSCAN_FT5336``, ``CONFIG_KSCAN_FT5336_PERIOD`` and |
| ``KSCAN_FT5336_INTERRUPT`` to :kconfig:option:`CONFIG_INPUT_FT5336`, |
| :kconfig:option:`CONFIG_INPUT_FT5336_PERIOD` and |
| :kconfig:option:`CONFIG_INPUT_FT5336_INTERRUPT`. |
| * ``kscan_sdl``: moved from :ref:`kscan_api` to :ref:`input`, renamed the Kconfig |
| option from ``KSCAN_SDL`` to :kconfig:option:`CONFIG_INPUT_SDL_TOUCH` and the |
| compatible from ``zephyr,sdl-kscan`` to |
| :dtcompatible:`zephyr,input-sdl-touch`. |
| * ``nuvoton,npcx-kscan`` moved to :ref:`input`, renamed the Kconfig option |
| names from ``KSCAN_NPCX_...`` to ``INPUT_NPCX_KBD...`` and the compatible |
| from ``nuvoton,npcx-kscan`` to :dtcompatible:`nuvoton,npcx-kbd`. |
| * Touchscreen drivers converted to use the input APIs can use the |
| :dtcompatible:`zephyr,kscan-input` driver to maintain Kscan compatibility. |
| |
| * The declaration of :c:func:`main` has been changed from ``void |
| main(void)`` to ``int main(void)``. The main function is required to |
| return the value zero. All other return values are reserved. This aligns |
| Zephyr with the C and C++ language specification requirements for |
| "hosted" environments, avoiding compiler warnings and errors. These |
| compiler messages are generated when applications are built in "hosted" |
| mode (which means without the ``-ffreestanding`` compiler flag). As the |
| ``-ffreestanding`` flag is currently enabled unless the application is |
| using picolibc, only applications using picolibc will be affected by this |
| change at this time. |
| |
| * The following network interface APIs now take additional, |
| ``struct net_if * iface`` parameter: |
| |
| * :c:func:`net_if_ipv4_maddr_join` |
| * :c:func:`net_if_ipv4_maddr_leave` |
| * :c:func:`net_if_ipv6_maddr_join` |
| * :c:func:`net_if_ipv6_maddr_leave` |
| |
| * MCUmgr transports now need to set up the struct before registering it by |
| setting the function pointers to the function handlers, these have been |
| moved to a ``functions`` struct object of type |
| :c:struct:`smp_transport_api_t`. Because of these changes, the legacy |
| transport registration function and object are no longer available. The |
| registration function now returns a value which is 0 for success or a |
| negative error code if an error occurred. |
| |
| * Added a new flag :c:struct:`dac_channel_cfg` ``buffered`` for DAC channels in |
| :c:struct:`dac_channel_cfg` to allow the configuration of the output buffer. |
| The actual interpretation of this depends on the hardware and is so far only |
| implemented for the STM32 DAC driver. Implicitly for this driver this changes |
| the default from being buffered to unbuffered. |
| |
| * MCUmgr fs_mgmt group's file access hook is now called for all fs_mgmt group |
| functions (adding support for file status and file hash/checksum). In |
| addition, if the file access state is not lost, it will now only be called |
| once for the file access instead of each time a command is received. |
| Note that the structure for the notification has changed, the ``upload`` bool |
| has been replaced with an enum to indicate what function is used, see |
| :c:struct:`fs_mgmt_file_access` for the new structure definition. |
| |
| * Iterable sections API is now available at |
| :zephyr_file:`include/zephyr/sys/iterable_sections.h`. LD linker snippets are |
| available at :zephyr_file:`include/zephyr/linker/iterable_sections.h`. |
| |
| * Cache API functions are now fully inlined by compilers. |
| |
| * The Bluetooth HCI headers have been reworked, with ``hci.h`` now containing |
| only the function prototypes and the new ``hci_types.h`` defining all |
| HCI-related macros and structs. The previous ``hci_err.h`` has been merged |
| into ``hci_types.h``. |
| |
| Removed APIs in this release |
| ============================ |
| |
| * Pinmux API has been removed. Pin control needs to be used as its replacement, |
| refer to :ref:`pinctrl-guide` for more details. |
| |
| Deprecated in this release |
| ========================== |
| |
| * Configuring applications with ``prj_<board>.conf`` files has been deprecated, |
| this should be replaced by using a prj.conf with the common configuration and |
| board-specific configuration in board Kconfig fragments in the ``boards`` |
| folder of the application. |
| |
| * On nRF51 and nRF52-based boards, the behavior of the reset reason being |
| provided to :c:func:`sys_reboot` and being set in the GPREGRET register has |
| been dropped. This function will now just reboot the device without changing |
| the register contents. The new method for setting this register uses the boot |
| mode feature of the retention subsystem, see the |
| :ref:`boot mode API <boot_mode_api>` for details. To restore the deprecated |
| functionality, enable |
| :kconfig:option:`CONFIG_NRF_STORE_REBOOT_TYPE_GPREGRET`. |
| |
| * Deprecated :c:macro:`PTHREAD_BARRIER_DEFINE` in favor of the standardized |
| :c:func:`pthread_barrier_init` |
| |
| * On all STM32 targets except STM32F2 series, Ethernet drivers implementation |
| based on STM32Cube Ethernet API V1 (:kconfig:option:`CONFIG_ETH_STM32_HAL_API_V1`) |
| is now deprecated in favor of implementation based on more reliable and performant |
| STM32Cube Ethernet API V2. |
| |
| * Legacy Ztest API was deprecated. All new tests shall use the new Ztest API. |
| |
| Stable API changes in this release |
| ================================== |
| |
| * Removed `bt_set_oob_data_flag` and replaced it with two new API calls: |
| * :c:func:`bt_le_oob_set_sc_flag` for setting/clearing OOB flag in SC pairing |
| * :c:func:`bt_le_oob_set_legacy_flag` for setting/clearing OOB flag in legacy paring |
| |
| * :c:macro:`SYS_INIT` callback no longer requires a :c:struct:`device` argument. |
| The new callback signature is ``int f(void)``. A utility script to |
| automatically migrate existing projects can be found in |
| :zephyr_file:`scripts/utils/migrate_sys_init.py`. |
| |
| * Changed :c:struct:`spi_config` ``cs`` (:c:struct:`spi_cs_control`) from |
| pointer to struct member. This allows using the existing SPI dt-spec macros in |
| C++. SPI controller drivers doing ``NULL`` checks on the ``cs`` field to check |
| if CS is GPIO-based or not, must now use :c:func:`spi_cs_is_gpio` or |
| :c:func:`spi_cs_is_gpio_dt` calls. |
| |
| New APIs in this release |
| ======================== |
| |
| * Introduced :c:func:`flash_ex_op` function. This allows to perform extra |
| operations on flash devices, defined by Zephyr Flash API or by vendor specific |
| header files. Support for extra operations is enabled by |
| :kconfig:option:`CONFIG_FLASH_EX_OP_ENABLED` which depends on |
| :kconfig:option:`CONFIG_FLASH_HAS_EX_OP` selected by driver. |
| |
| * Introduced :ref:`rtc_api` API which adds experimental support for real-time clock |
| devices. These devices previously used the :ref:`counter_api` API combined with |
| conversion between unix-time and broken-down time. The new API adds the mandatory |
| functions :c:func:`rtc_set_time` and :c:func:`rtc_get_time`, the optional functions |
| :c:func:`rtc_alarm_get_supported_fields`, :c:func:`rtc_alarm_set_time`, |
| :c:func:`rtc_alarm_get_time`, :c:func:`rtc_alarm_is_pending` and |
| :c:func:`rtc_alarm_set_callback` are enabled with |
| :kconfig:option:`CONFIG_RTC_ALARM`, the optional function |
| :c:func:`rtc_update_set_callback` is enabled with |
| :kconfig:option:`CONFIG_RTC_UPDATE`, and lastly, the optional functions |
| :c:func:`rtc_set_calibration` and :c:func:`rtc_get_calibration` are enabled with |
| :kconfig:option:`CONFIG_RTC_CALIBRATION`. |
| |
| * Introduced :ref:`auxdisplay_api` for auxiliary (alphanumeric-based) displays. |
| |
| * Introduced :ref:`barriers_api` for barrier operations. |
| |
| * Added :c:macro:`CAN_FRAME_ESI` CAN-FD Error State Indicator flag. |
| |
| Kernel |
| ****** |
| |
| * Removed absolute symbols :c:macro:`___cpu_t_SIZEOF`, |
| :c:macro:`_STRUCT_KERNEL_SIZE`, :c:macro:`K_THREAD_SIZEOF` and |
| :c:macro:`_DEVICE_STRUCT_SIZEOF` |
| |
| Architectures |
| ************* |
| |
| * ARC |
| |
| * Added MPUv8 support |
| * Add support of virtual UART over ARC hostlink channel |
| * Improved ARCv2 HS4x processors handling - added proper Kconfig options, provided default mcpu |
| * Improved ARCMWDT toolchain handling: |
| |
| * added rollback to check METAWARE_ROOT if ARCMWDT_TOOLCHAIN_PATH missing |
| * reworked extra warnings options handling in twister so it can be used with ARCMWDT |
| * used 64bit MDB binary by default |
| |
| * Fixed excessive ROM memory consumption if MPU is enabled and ROM & RAM are located in different |
| memory regions |
| * Fixed DSP registers handling in case of ARCMWDT |
| * Improved SMP handling: |
| |
| * Fixed potential livelock in thread abort due to exception |
| * Fixed IDU mask setup |
| |
| * Removed absolute symbols :c:macro:`___callee_saved_t_SIZEOF` and |
| :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF` |
| |
| * ARM |
| |
| * Removed absolute symbols :c:macro:`___basic_sf_t_SIZEOF`, |
| :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF`, :c:macro:`___cpu_context_t_SIZEOF` |
| and :c:macro:`___thread_stack_info_t_SIZEOF` |
| * Enabled fp16 for Cortex-M55 |
| * Fixed a compilation issue with arm-clang and TrustZone |
| * Implemented a new cache-management API |
| * Added support for generating zImage headers |
| * Introduced a new :c:func:`z_arm_on_enter_cpu_idle` hook on CPU idle |
| |
| * ARM64 |
| |
| * Removed absolute symbol :c:macro:`___callee_saved_t_SIZEOF` |
| * Enabled FPU and FPU_SHARING for v8r aarch64 |
| * Fixed the STACK_INIT logic during the reset |
| * Introduced and enabled safe exception stack |
| * Fixed possible deadlock on SMP with FPU sharing |
| * Added ISBs after SCTLR Modifications |
| |
| * NIOS2 |
| |
| * Removed absolute symbol :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF` |
| |
| * POSIX: |
| |
| * Added :c:macro:`Z_SPIN_DELAY` to allow to conditionally compile a k_busy_wait() for this arch |
| in tests and samples. |
| |
| * RISC-V |
| |
| * Added :kconfig:option:`CONFIG_PMP_NO_TOR`, :kconfig:option:`CONFIG_PMP_NO_NA4`, and |
| :kconfig:option:`CONFIG_PMP_NO_NAPOT` to allow disabling unsupported PMP range modes. |
| * Removed unused symbols: :c:macro:`_thread_offset_to_tp`, |
| :c:macro:`_thread_offset_to_priv_stack_start`, :c:macro:`_thread_offset_to_user_sp`. |
| * Added support for setting PMP granularity with :kconfig:option:`CONFIG_PMP_GRANULARITY`. |
| * Switched from accessing CSRs from inline assembly to using the :c:func:`csr_read` helper |
| function. |
| * Enabled single-threading support. |
| |
| * SPARC |
| |
| * Removed absolute symbol :c:macro:`_K_THREAD_NO_FLOAT_SIZEOF` |
| |
| * Xtensa |
| |
| * Fixed the cross stack call mechanism during nested interrupts where stack would be |
| corrupted under certain conditions. |
| * Added initial support for MMU on Xtensa. |
| * Now supports building with :kconfig:option:`CONFIG_MULTITHREADING` disabled so |
| target can run in single thread only operations. |
| * Added C structs to represent interrupt frames to help with debugging. |
| |
| Bluetooth |
| ********* |
| |
| * General |
| |
| * Moved all logging symbols together in a new ``Kconfig.logging`` file. |
| * Deprecated the ``BT_DEBUG_LOG`` option. Instead ``BT_LOG`` should be used. |
| * Made the ``BT_LOG`` and ``BT_LOG_LEGACY`` options hidden. |
| * Removed ``BT_DEBUG`` entirely. |
| |
| |
| * Audio |
| |
| * Implemented the CAP initiator broadcast audio start, stop and metadata |
| update procedures. |
| * Implemented the CAP unicast audio start, stop and metadata update procedures. |
| * Implemented the Telephony and Media Audio Service (TMAS). |
| * Added additional validation for MCC and MCS, including opcodes, values, etc. |
| * Refactored and extended the scan delegator implementation, including |
| integration with broadcast sink. |
| * Added support for creating a broadcast sink from a PA sink. |
| * Added support for optional characteristics in CSIP. |
| * Implemented discovery by UUID instead of reading by UUID for multiple |
| characteristics. |
| * Added support for long reads and writes for multiple profiles. |
| * Added support for long BAP ASE notifications and optimized long notify |
| reads. |
| * Offloaded MCS notifications to the system workqueue. |
| * Added the CAP initiator cancel procedure. |
| |
| * Direction Finding |
| |
| * Host |
| |
| * Updated the Host to the v5.4 specification. |
| * The GATT DB Hash is now recalculated upon loading settings. |
| * Added experimental support for SMP keypress notifications. |
| * Downgraded the severity of select log messages to avoid log flooding. |
| * Separated the handling of LE SC OOB pairing from the legacy OOB logic. |
| * Implemented the Encrypted Advertising Data feature. |
| * Added support for the new Periodic Advertising with Responses (PAwR), both |
| as an advertiser and as a scanner. |
| * Added support for initiating connections from PAwR, as well as receiving |
| connections while synced. |
| * Clarified the behavior that is enabled by the ``BT_PRIVACY`` Kconfig option. |
| * Introduced a new ``seg_recv`` L2CAP API for an application to receive |
| segments directly and manage credits explicitly. |
| |
| * Mesh |
| |
| * Added experimental support for Mesh Protocol d1.1r18 specification, gated |
| by a new configuration option. This includes: |
| |
| * Enhanced Provisioning Authentication support. |
| * Mesh Remote Provisioning support including: |
| |
| * Remote Provisioning Server and Client models. |
| * Composition Data Page 128 and Models Metadata Page 128 support. |
| |
| * Large Composition Data support including: |
| |
| * Large Composition Data Server and Client models. |
| * Models Metadata Page 0 support. |
| |
| * New Transport Segmentation and Reassembly (SAR) implementation including: |
| |
| * SAR Configuration Server and Client models. |
| |
| * Mesh Private Beacons support including: |
| |
| * Mesh Private Beacon Server and Client models. |
| |
| * Opcodes Aggregator support including: |
| |
| * Opcodes Aggregator Server and Client models. |
| |
| * Proxy Solicitation support including: |
| |
| * Solicitation PDU RPL Configuration Server and Client models. |
| * On-Demand Private Proxy Server and Client models. |
| |
| * Composition Data Page 1 support. |
| * Other Mesh Profile Enhancements. |
| * Added experimental support for Mesh Binary Large Object Transfer Model d1.0r04_PRr00 specification. |
| * Added experimental support for Mesh Device Firmware Update Model d1.0r04_PRr00 specification. |
| * Fixed multiple profile errata. |
| * Added experimental support for the PSA crypto APIs. |
| * Added a new work queue to store mesh settings, including a new API for |
| storing user data. |
| * Disabled the models initialization macros for C++ as they use the compound |
| literal feature from C99. |
| * Deprecated Health Client and Configuration Client API have been removed. |
| |
| * Controller |
| |
| * Implemented support for the central with multiple CIS usecase. |
| * Implemented support for multiple peripheral CIS establishment. |
| * Updated the Controller to the v5.4 specification. |
| * Added support for coexistence with other transceivers. |
| * Added support for multiple CIS/CIG setup/connect and teardown procedures in |
| sequence. |
| * Extended the ticker API to return expiration info. |
| * Re-implemented Extended and Periodic Advertising, as well as and Broadcast |
| ISO, using the new ticket expiration info feature. |
| * Modified the ticker implementation to reschedule unreserved tickers that use |
| ``ticks_slot_window``. Implement continuous scanning with it. |
| * Added support for considering the SDU interval, along with the packet |
| sequence number and time stamps, in SDU fragmentation. |
| * Added a new ``BT_CTRL_TX_PWR_DBM`` option to set the TX power directly in |
| dBm. |
| * Optimized the RX path with support for piggy-backing notifications on |
| already-allocated RX nodes. |
| |
| * HCI Driver |
| |
| Boards & SoC Support |
| ******************** |
| |
| * Added support for these SoC series: |
| |
| * STM32C0 series are now supported (with introduction of STM32C031 SoC). |
| * STM32H5 series are now supported (with introduction of STM32H503 and STM32H573 SoCs). |
| * Added support for STM32U599 SoC variants |
| * Nordic Semiconductor nRF9161 |
| |
| * Removed support for these SoC series: |
| |
| * Made these changes in other SoC series: |
| |
| * Added support for these ARC boards: |
| |
| * DesignWare ARC HS4x/HS4xD Development Kit (HSDK4xD) - ARCv2 HS47D, SMP 4 cores |
| * nsim_hs3x_hostlink - simulation (nSIM-based) platform with hostlink UART |
| |
| * Added support for these ARM boards: |
| |
| * Aconno ACN52832 |
| * Alientek STM32L475 Pandora |
| * Arduino GIGA R1 Wi-Fi |
| * BeagleConnect Freedom |
| * Infineon PSoCâ„¢ 6 BLE Prototyping Kit (CY8CPROTO-063-BLE) |
| * Infineon PSoCâ„¢ 6 Wi-Fi BT Prototyping Kit (CY8CPROTO-062-4343W) |
| * Infineon XMC4700 Relax Kit |
| * MXChip AZ3166 IoT DevKit |
| * Nordic Semiconductor nRF9161 DK |
| * NXP MIMXRT1040-EVK |
| * NXP MIMXRT1062 FMURT6 |
| * PHYTEC PhyBOARD Polis (NXP i.MX8M Mini) |
| * PHYTEC PhyBOARD Pollux (NXP i.MX8M Plus) |
| * Raspberry Pi Pico W |
| * Raytac MDBT50Q-DB-33 |
| * Raytac MDBT50Q-DB-40 |
| * Seeed Studio Wio Terminal |
| * Seeed Studio XIAO BLE Sense |
| * Silicon Labs BRD2601B |
| * Silicon Labs BRD4187C |
| * Silicon Labs EFR32 Thunderboard-style boards |
| * ST Nucleo C031C6 |
| * ST Nucleo F042K6 |
| * ST Nucleo H563ZI |
| * ST STM32H573I-DK Discovery |
| * Xilinx KV260 (Cortex-R5) |
| |
| * Added support for these ARM64 boards: |
| |
| * PHYTEC phyCORE-AM62x A53 |
| * NXP i.MX93 EVK A55 (SOF variant) |
| |
| * Added support for these RISC-V boards: |
| |
| * Intel FPGA Nios® V/m |
| * ITE IT82XX2 EV-Board |
| |
| * Added support for these X86 boards: |
| |
| * Added support for these Xtensa boards: |
| |
| * ESP32S3-DevKitM |
| |
| * Made these changes for ARC boards: |
| |
| * Added ARC MWDT toolchain support for qemu_arc_hs |
| * Improved emsdp platform support: |
| |
| * Added DFSS driver support |
| * Added pinctrl support |
| |
| * Made these changes for ARM boards: |
| |
| * ``atsamc21n_xpro``: Enable support to CAN. |
| * ``atsame54_xpro``: Read Ethernet MAC from I2C. |
| * Changed the default board revision to 0.14.0 for the Nordic boards |
| ``nrf9160dk_nrf9160`` and ``nrf9160dk_nrf52840``. To build for an |
| older revision of the nRF9160 DK without external flash, specify that |
| older board revision when building. |
| * ``nrf9160dk_nrf52840``: Enabled external_flash_pins_routing switch by default. |
| * ``nrf9160dk_nrf9160``: Changed the order of buttons and switches on the GPIO |
| expander to match the order when using GPIO directly on the nRF9160 SoC. |
| * ``STM32H747i_disco``: Enabled support for ST B-LCD40-DSI1 display extension |
| * ``qemu_cortex_m0``: Fixed prescaler of the system timer so that its frequency |
| is actually 1 MHz, not 2 MHz. |
| |
| * Made these changes for ARM64 boards: |
| |
| * FVP revc_2xaemv8a / aemv8r: Added ethernet, PHY and MDIO nodes |
| |
| * Made these changes to POSIX boards: |
| |
| * nrf52_bsim now includes support and models for: |
| |
| * 802.15.4 in the RADIO. |
| * EGU. |
| * FLASH (NVMC & UICR). |
| * TEMP. |
| * UART connected to a host ptty. |
| * Many more minor CMSIS API and nRF APIs and drivers. |
| |
| * Made these changes for RISC-V boards: |
| |
| * ``gd32vf103``: No longer requires special OpenOCD version. |
| |
| * Made these changes for X86 boards: |
| |
| * Made these changes for Xtensa boards: |
| |
| * Removed support for these ARC boards: |
| |
| * Removed support for these ARM boards: |
| |
| * Removed support for these RISC-V boards: |
| |
| * BeagleV Starlight JH7100 |
| |
| * Removed support for these X86 boards: |
| |
| * Removed support for these Xtensa boards: |
| |
| * Made these changes in other boards: |
| |
| * Added support for these following shields: |
| |
| * Adafruit Data Logger Shield |
| * nPM1300 EK (Power Management Integrated Circuit (PMIC)) |
| * Panasonic Grid-EYE Shields |
| * ST B_LCD40_DSI1_MB1166 |
| |
| Build system and infrastructure |
| ******************************* |
| |
| * Fixed an issue whereby older versions of the Zephyr SDK toolchain were used |
| instead of the latest compatible version. |
| |
| * Fixed an issue whereby building an application with sysbuild and specifying |
| mcuboot's verification to be checksum only did not build a bootable image. |
| |
| * Fixed an issue whereby if no prj.conf file was present then board |
| configuration files would not be included by emitting a fatal error. As a |
| result, prj.conf files are now mandatory in projects. |
| |
| * Introduced support for extending/replacing the signing mechanism in zephyr, |
| see :ref:`West extending signing <west-extending-signing>` for further |
| details. |
| |
| * Fixed an issue whereby when using ``*_ROOT`` variables with Sysbuild, these |
| were lost for images. |
| |
| * Enhanced ``zephyr_get`` CMake helper function to optionally support merging |
| of scoped variables into a list. |
| |
| * Added a new CMake helper function for setting/updating sysbuild CMake cache |
| variables: ``sysbuild_cache_set``. |
| |
| * Enhanced ``zephyr_get`` CMake helper function to lookup multiple variables |
| and return the result in a variable of different name. |
| |
| * Introduced ``EXTRA_CONF_FILE``, ``EXTRA_DTC_OVERLAY_FILE``, and |
| ``EXTRA_ZEPHYR_MODULES`` for better naming consistency and uniform behavior |
| for applying extra build settings in addition to Zephyr automatic build |
| setting lookup. |
| ``EXTRA_CONF_FILE`` replaces ``OVERLAY_CONFIG``. |
| ``EXTRA_ZEPHYR_MODULES`` replaces ``ZEPHYR_EXTRA_MODULES``. |
| ``EXTRA_DTC_OVERLAY_FILE`` is new, see |
| :ref:`Set devicetree overlays <set-devicetree-overlays>` for further details. |
| |
| * Twister now supports ``gtest`` harness for running tests written in gTest. |
| |
| * Added an option to validate device initialization priorities at build time. |
| To use it, enable :kconfig:option:`CONFIG_CHECK_INIT_PRIORITIES`, see |
| :ref:`check_init_priorities.py` for more details. |
| |
| * Added a new option to disable tracking of macro expansion when compiling, |
| :kconfig:option:`CONFIG_COMPILER_TRACK_MACRO_EXPANSION`. This option may be |
| disabled to reduce compiler verbosity when errors occur during macro |
| expansions, e.g. in device definition macros. |
| |
| * Twister now supports loading test configurations from alternative root |
| folder/s by using ``--alt-config-root``. When a test is found, Twister will |
| check if a test configuration file exist in any of the alternative test |
| configuration root folders. For example, given |
| ``$test_root/tests/foo/testcase.yaml``, Twister will use |
| ``$alt_config_root/tests/foo/testcase.yaml`` if it exists. |
| |
| * Twister now uses native YAML lists for fields that were previously defined |
| using space-separated strings. For example: |
| |
| .. code-block:: yaml |
| |
| platform_allow: foo bar |
| |
| can now be written as: |
| |
| .. code-block:: yaml |
| |
| platform_allow: |
| - foo |
| - bar |
| |
| This applies to the following properties: |
| |
| - ``arch_exclude`` |
| - ``arch_allow`` |
| - ``depends_on`` |
| - ``extra_args`` |
| - ``extra_sections`` |
| - ``platform_exclude`` |
| - ``platform_allow`` |
| - ``tags`` |
| - ``toolchain_exclude`` |
| - ``toolchain_allow`` |
| |
| Note that the old behavior is kept as deprecated. The |
| :zephyr_file:`scripts/utils/twister_to_list.py` script can be used to |
| automatically migrate Twister configuration files. |
| |
| * When MCUboot image signing is enabled, a warning will now be emitted by cmake |
| if no signing key is set in the project, this warning can be safely ignored |
| if signing is performed manually or outside of zephyr. This warning informs |
| the user that the generated image will not be bootable by MCUboot as-is. |
| |
| * Babblesim is now included in the west manifest. Users can fetch it by enabling |
| the ``babblesim`` group with west config. |
| |
| * `west sign` now uses DT labels, of "fixed-partition" compatible nodes, to identify |
| application image slots, instead of previously used DT node label properties. |
| If you have been using custom partition layout for MCUboot, you will have to label |
| your MCUboot slot partitions with proper DT node labels; for example partition |
| with "image-0" label property will have to be given slot0_partition DT node label. |
| Label property does not have to be removed from partition node, but will not be used. |
| |
| DT node labels used are listed below |
| |
| .. table:: |
| :align: center |
| |
| +---------------------------------+---------------------------+ |
| | Partition with label property | Required DT node label | |
| +=================================+===========================+ |
| | "image-0" | slot0_partition | |
| +---------------------------------+---------------------------+ |
| | "image-1" | slot1_partition | |
| +---------------------------------+---------------------------+ |
| |
| * Fixed an issue whereby relative paths supplied for the ``BOARD_ROOT`` value |
| might wrongly emit a warning about a ``boards`` directory not being found. |
| |
| * Fixed an issue whereby relative paths did not work for sysbuild images. |
| |
| Drivers and Sensors |
| ******************* |
| |
| * Device model |
| |
| * Devices that do not require an initialization routine can now pass ``NULL`` |
| to the ``DEVICE_*_DEFINE()`` macros. |
| |
| * Auxiliary display |
| |
| * New auxiliary display (auxdisplay) peripheral has been added, this allows |
| for interfacing with simple alphanumeric displays that do not feature |
| graphic capabilities. This peripheral is marked as unstable. |
| |
| * HD44780 driver added. |
| |
| * Noritake Itron driver added. |
| |
| * Grove LCD driver added (ported from existing sample). |
| |
| * ADC |
| |
| * MCUX LPADC driver now uses the channel parameter to select a software channel |
| configuration buffer. Use ``zephyr,input-positive`` and |
| ``zephyr,input-negative`` devicetree properties to select the hardware |
| channel(s) to link a software channel configuration to. |
| * MCUX LPADC driver ``voltage-ref`` and ``power-level`` devicetree properties |
| were shifted to match the hardware as described in reference manual instead |
| of matching the NXP SDK enum identifiers. |
| * Added support for STM32C0 and STM32H5. |
| * Added DMA support for STM32H7. |
| * STM32: Resolutions are now listed in the device tree for each ADC instance |
| * STM32: Sampling times are now listed in the device tree for each ADC instance |
| * Added driver for Atmel SAM family ADC. |
| * Added driver for Gecko Incremental ADC. |
| * Added driver for Infineon CAT1 ADC. |
| * Added driver for TI ADS7052. |
| * Added driver for TI ADS114S0x family. |
| * Added drivers for Renesas SmartBond GPADC and SDADC. |
| |
| * Battery-backed RAM |
| |
| * Added MCP7940N battery-backed RTC SRAM driver. |
| |
| * CAN |
| |
| * The CAN statistics are now reset when calling :c:func:`can_start`. |
| |
| * Renamed the NXP FlexCAN devicetree binding compatible from ``nxp,kinetis-flexcan`` to |
| :dtcompatible:`nxp,flexcan`. |
| |
| * Added support for the CAN-FD variant of the NXP FlexCAN controller using devicetree binding |
| :dtcompatible:`nxp,flexcan-fd`. |
| |
| * Added support for the NXP NXP S32 CANEXCEL controller using devicetree binding |
| :dtcompatible:`nxp,s32-canxl`. |
| |
| * Added support for the Atmel SAM0 CAN controller using devicetree binding |
| :dtcompatible:`atmel,sam0-can`. |
| |
| * Refactored the Bosch M_CAN controller driver backend to allow for per-instance configuration via |
| devicetree. |
| |
| * Now supports STM32H5 series. |
| |
| * Clock control |
| |
| * Atmel SAM/SAM0: Introduced peripheral clock control. |
| * Atmel SAM0: Improved ``samd20``/``samd21``/``samr21`` clocking mechanism. |
| * STM32F4: Added support for PLL I2S |
| |
| * Console: |
| |
| * The native_posix and bsim console drivers have been merged into one generic |
| driver usable by all POSIX arch based boards. |
| |
| * Counter |
| |
| * Added support on timer based counter on STM32H7 and STM32H5 |
| * Added support on RTC based counter on STM32C0 and STM32H5 |
| |
| * Crypto |
| |
| * Added support for STM32H5 AES |
| |
| * DAC |
| |
| * Added support on STM32H5 series. |
| |
| * Disk |
| |
| * SDMMC STM32L4+: Now compatible with internal DMA |
| * NVME disks are now supported using FATFS, with a single I/O queue enabled |
| |
| * Display |
| |
| * Improved MCUX ELCDIF and SSD16XX display controller drivers |
| * Added support for ILI9342C display controller |
| * Added support for OTM8009A panel |
| |
| * DMA |
| |
| * STM32C0: Added support for DMA |
| * STM32H5: Added support for GPDMA |
| * STM32H7: Added support for BDMA |
| * Added DMA support for the RP2040 SoC |
| |
| * EEPROM |
| |
| * Switched from :dtcompatible:`atmel,at24` to dedicated :dtcompatible:`zephyr,i2c-target-eeprom` for I2C EEPROM target driver. |
| |
| * Entropy |
| |
| * Added support for STM32H5 series. |
| |
| * Flash |
| |
| * Introduced new flash API call :c:func:`flash_ex_op` which calls |
| :c:func:`ec_op` callback provided by a flash driver. This allows to perform |
| extra operations on flash devices, defined by Zephyr Flash API or by vendor |
| specific header files. :kconfig:option:`CONFIG_FLASH_HAS_EX_OP` should be |
| selected by the driver to indicate that extra operations are supported. |
| To enable extra operations user should select |
| :kconfig:option:`CONFIG_FLASH_EX_OP_ENABLED`. |
| * STM32F4: Now supports write protection and readout protection through |
| new flash API call :c:func:`flash_ex_op`. |
| * nrf_qspi_nor: Replaced custom API function ``nrf_qspi_nor_base_clock_div_force`` |
| with ``nrf_qspi_nor_xip_enable`` which apart from forcing the clock divider |
| prevents the driver from deactivating the QSPI peripheral so that the XIP |
| operation is actually possible. |
| * flash_simulator: |
| |
| * A memory region can now be used as the storage area for the |
| flash simulator. Using the memory region allows the flash simulator to keep |
| its contents over a device reboot. |
| * When building in native_posix, command line options have been added to select |
| if the flash should be cleared at boot, the flash content kept in RAM, |
| or the flash content file be deleted on exit. |
| |
| * spi_flash_at45: Fixed erase procedure to properly handle chips that have |
| their initial sector split into two parts (usually marked as 0a and 0b). |
| * STM32H5 now supports OSPI |
| |
| * GPIO |
| |
| * Converted the ``gpio_keys`` driver to the input subsystem. |
| * Added single-ended IO support for the RP2040 SoC |
| |
| * STM32: Supports newly introduced experimental API to enable/disable interrupts |
| without re-config |
| |
| * I2C |
| |
| * Added support for STM32C0 and STM32H5 series |
| |
| * I2S |
| |
| * STM32: Domain clock should now be configured by device tree. |
| |
| * Input |
| |
| * Introduced the :ref:`input` subsystem. |
| |
| * KSCAN |
| |
| * Added a :dtcompatible:`zephyr,kscan-input` input to kscan compatibility driver. |
| * Converted the ``ft5336`` and ``kscan_sdl`` drivers to the input subsystem. |
| |
| * MIPI-DSI |
| |
| * Added support on STM32H7 |
| |
| * Misc |
| |
| * Added PIO support for the RP2040 SoC |
| |
| * PCIE |
| |
| * Enable filtering PCIe devices by class/revision. |
| |
| * PECI |
| |
| * Retained memory |
| |
| * Retained memory (retained_mem) driver has been added with backends for |
| Nordic nRF GPREGRET, and uninitialised RAM. |
| |
| * Pin control |
| |
| * Added support for Infineon CAT1 |
| * Added support for TI K3 |
| * Added support for ARC emdsp |
| |
| * PWM |
| |
| * Added support for STM32C0. |
| * STM32: Now supports 6-PWM channels |
| * Added PWM driver for Microchip XEC BBLED. |
| |
| * Power domain |
| |
| * Regulators |
| |
| * The regulator API can now be built without thread-safe reference counting |
| by using :kconfig:option:`CONFIG_REGULATOR_THREAD_SAFE_REFCNT`. This |
| feature can be useful in applications that do not enable |
| :kconfig:option:`CONFIG_MULTITHREADING`. |
| * Added support for ADP5360 PMIC |
| * Added support for nPM1300 PMIC |
| * Added support for Raspberry Pi Pico core supply regulator |
| |
| * SDHC |
| |
| * Support was added for using CPOL/CPHA SPI clock modes with SD cards, as |
| some cards require the SPI clock switch to low when not active |
| |
| * Sensor |
| |
| * Added generic voltage measurement sample |
| * Removed STM32 Vbat measurement sample (replaced by a generic one) |
| * Added STM32 Vref sensor driver |
| * Added STM32 Vref/Vbat measurement through the new generic voltage measurement sample |
| * Added temperature measurement driver for STM32C0 and STM32F0x0 |
| * Removed STM32 temperature measurement sample (replaced by a generic one) |
| * Added STM32 temperature measurement through the generic temperature measurement sample |
| |
| * Serial |
| |
| * Added UART3 and UART4 configuration for ``gd32vf103`` SoCs. |
| * uart_altera: added new driver for Altera Avalon UART. |
| * uart_emul: added new driver for emulated UART. |
| * uart_esp32: |
| * Added support for ESP32S3 SoC. |
| * Added support for RS-485 half duplex mode. |
| * uart_hostlink: added new driver for virtual UART via Synopsys ARC hostlink channels. |
| * uart_ifx_cat1: added new driver for Infineon CAT1 UART. |
| * uart_mcux: added power management support. |
| * uart_mcux_flexcomm: added support for asynchronous operations. |
| * uart_mcux_lpuart: added support for parity. |
| * uart_ns16550: now supports per instance hardware access mode instead of |
| one access mode for all instances. |
| * uart_pl011: fixed interrupt support. |
| * uart_rpi_pico_pio: added new driver to support UART via |
| Programmable Input/Output (PIO) on Raspberry Pi Pico. |
| * uart_xmc4xxx: added support for asynchronous operations. |
| * uart_stm32: Now support driver enable mode |
| * Added hardware flow control support for the RP2040 SoC |
| |
| * SPI |
| |
| * Added support on STM32H5 series. |
| |
| * Timer |
| |
| * Support added for stopping Nordic nRF RTC system timer, which fixes an |
| issue when booting applications built in prior version of Zephyr. |
| |
| * STM32: Now supports a prescaler at the input of clock (default not divided). |
| Prescaler allows to achieve higher LPTIM timeout (up to 256s when lptim clocked by LSE) |
| and consequently higher core sleep durations but impacts the tick precision. |
| To be used with caution. |
| |
| * USB |
| |
| * Added remote wakeup support for the RP2040 SoC |
| * Added Battery Charging (BC12) API and PI3USB9201 driver implementation. |
| * Added new USB device controller drivers (using usb_dc API) for ITE IT82xx2 |
| and smartbond platforms. |
| * Added USB device controller driver skeleton for UDC API. |
| * Reworked DWC2 driver and added support for STM32F4 SoC family |
| |
| * W1 |
| |
| * Added DS2482-800 1-Wire master driver. See the :dtcompatible:`maxim,ds2482-800` |
| devicetree binding for more information. |
| * Added :kconfig:option:`CONFIG_W1_NET_FORCE_MULTIDROP_ADDRESSING` which can be |
| enabled force the 1-Wire network layer to use multidrop addressing. |
| |
| * Watchdog |
| |
| * Added support for STM32C0 and STM32H5 series |
| |
| Networking |
| ********** |
| |
| * CoAP: |
| |
| * Added :c:func:`coap_append_descriptive_block_option` and |
| :c:func:`coap_get_block1_option` APIs to facilitate block transfer handling. |
| * Added a :ref:`coap_client_interface` helper library, based on the existing CoAP APIs. |
| * Fixed missing token length validation in :c:func:`coap_header_get_token`. |
| * Fixed missing response check in :c:func:`coap_response_received`. |
| |
| * Connection Manager: |
| |
| * Extended the library with a generic L2 connectivity API. |
| * Refactored library internals significantly. |
| * Improved thread safety in the library. |
| * Reworked how Connection Manager events are notified - they are no longer |
| raised for each interface individually, but instead: |
| |
| * ``NET_EVENT_L4_CONNECTED`` is called only once after the first |
| interface gains connectivity. |
| * ``NET_EVENT_L4_DISCONNECTED`` is called only after connectivity is |
| lost on all interfaces. |
| |
| * Improved Connection Manager test coverage. |
| |
| * DHCPv4: |
| |
| * Fixed a potential packet leak in DHCPv4 input handler. |
| * Fixed a potential NULL pointer dereference in ``dhcpv4_create_message()``. |
| * Added a mechanism to register a callback for handling DHCPv4 options. |
| * Modified ``dhcpv4_client`` sample to trigger DHCP on all network interfaces |
| in the system. |
| |
| * DNS: |
| |
| * Fixed a possible crash on NULL pointer as a query callback. |
| * Added a check on existing DNS servers before reconfigure. |
| * Improved debug logging in DNS SD. |
| * Fixed IPv4/IPv6 address handling in mDNS responder, if both are IPv4 and IPv6 are enabled. |
| * Removed dead code in DNS SD query parsing. |
| |
| * Ethernet: |
| |
| * Fixed double packet dereference in case of ARP request transmission errors. |
| * Fixed a possible slist corruption in case Ethernet interface went up before |
| LLDP initialization. |
| |
| * HTTP: |
| |
| * Added HTTP service and resource iterable sections. |
| |
| * ICMPv6: |
| |
| * Implemented IPv6 RA Recursive DNS Server option handling. |
| |
| * IEEE802154: |
| |
| * Fixed a corner case with 6LoWPAN IP Header Compression and fragmentation, where |
| for a short range of packet sizes, fragmentation did not work correctly after IPHC. |
| * Added new radio API function to start continuous carrier wave transmission. |
| * Several improvements/fixes in IEEE802154 L2 security. |
| * Fixed a packet leak when handling beacon/command frames. |
| * Deprecated :kconfig:option:`CONFIG_IEEE802154_2015` Kconfig option. |
| * Added simple Babblesim echo test over IEEE802154 L2. |
| * Improved IEEE802154 L2 test coverage. |
| * Multiple other minor IEEE802154 L2 and documentation improvements/fixes. |
| |
| * IPv4: |
| |
| * Implemented a fallback to IPv4 Link Local address if no other address is available. |
| * Fixed :c:func:`net_ipv4_is_ll_addr` helper function to correctly identify LL address. |
| * Fixed possible NULL pointer dereference in IPv4 fragmentation. |
| |
| * LwM2M: |
| |
| * Added new :c:macro:`LWM2M_RD_CLIENT_EVENT_REG_UPDATE` event. |
| * Added missing ``const`` qualifier in the APIs, where applicable. |
| * Fixed socket error handling on packet transmission. |
| * Improved LwM2M context cleanup when falling back to regular Registration. |
| * Added possibility to register a callback function for FW update cancel action. |
| * Added possibility to register a callback function for LwM2M send operation. |
| * Added ISPO voltage sensor object support. |
| * Fixed stopping of the LwM2M client when it's suspended. |
| * Fixed a minor CoAP RFC incompatibility, where it should not be assumed that |
| consecutive data blocks in block transfer will carry the same token. |
| * Added block transfer support on TX. |
| * Fixed a possible out-of-bounds memory access when creating FW update object. |
| * Added possibility to override default socket option configuration with a |
| dedicated callback function (``set_socketoptions``). |
| * Improved LwM2M test coverage. |
| * Several other minor improvements and cleanups. |
| |
| * Misc: |
| |
| * Added generic ``OFFLOADED_NETDEV_L2`` for offloaded devices to allow |
| offloaded implementations to detect when interface is brought up/down. |
| * Factored out ``net_buf_simple`` routines to a separate source file. |
| * Fixed possible NULL pointer dereference in ``net_pkt_cursor_operate()``. |
| * Reimplemented ``net_mgmt`` to use message queue internally. This also fixed |
| a possible event loss with the old implementation. |
| * Fixed error handling in ``net ping`` shell command to avoid shell freeze. |
| * Improved Ethernet error statistics logging in ``net stats`` shell command. |
| * Moved SLIP TAP implementation into a separate file, to prevent build warnings |
| about missing sources for Ethernet drivers. |
| * Fixed crashes in ``echo_server`` and ``echo_client`` samples, when |
| userspace is enabled. |
| * Fixed IPv6 support in ``mqtt_sn_publisher`` sample. |
| * Fixed build issues with arm-clang in the networking stack. |
| * Added new ``NET_IF_IPV6_NO_ND`` and ``NET_IF_IPV6_NO_MLD`` interface flags, |
| which allow to disable ND/MLD respectively on an interface. |
| * Reworked network interface mutex protection, to use individual mutex for |
| each interface, instead of a global one. |
| * Added new :zephyr:code-sample:`aws-iot-mqtt`. |
| * Added a few missing NULL pointer checks in network interface functions. |
| |
| * OpenThread: |
| |
| * Implemented the following OpenThread platform APIs: |
| |
| * ``otPlatRadioSetMacFrameCounterIfLarger()``, |
| * ``otPlatCryptoEcdsaGenerateAndImportKey()``, |
| * ``otPlatCryptoEcdsaExportPublicKey()``, |
| * ``otPlatCryptoEcdsaVerifyUsingKeyRef()``, |
| * ``otPlatCryptoEcdsaSignUsingKeyRef()``. |
| |
| * Added :kconfig:option:`CONFIG_OPENTHREAD_CSL_TIMEOUT` option. |
| * Removed no longer needed ``CONFIG_OPENTHREAD_EXCLUDE_TCPLP_LIB``. |
| * Added simple Babblesim echo test over OpenThread. |
| |
| * SNTP: |
| |
| * Switched to use ``zsock_*`` functions internally. |
| |
| * Sockets: |
| |
| * Fixed ``SO_RCVBUF`` and ``SO_SNDBUF`` socket options handling, so that they |
| configure TCP window sizes correctly. |
| * Fixed ``SO_SNDTIMEO`` socket option handling - the timeout value was ignored |
| and socket behaved as in non-blocking mode when used. |
| * Reworked TLS sockets implementation, to allow parallel TX/RX from |
| different threads. |
| * Implemented TLS handshake timeout. |
| * Added support for asynchronous connect for TCP sockets. |
| * Fixed blocking :c:func:`recv` not being interrupted on socket close. |
| * Fixed blocking :c:func:`accept` not being interrupted on socket close. |
| * Improved sockets test coverage. |
| |
| * TCP: |
| |
| * Fixed incorrect TCP stats by improving packet processing result reporting. |
| * Added :kconfig:option:`CONFIG_NET_TCP_PKT_ALLOC_TIMEOUT` to allow to configure |
| packet allocation timeout. |
| * Improved TCP test coverage. |
| * Fixed TCP MSS calculation for IPv6. |
| * Fixed possible double acknowledgment of retransmitted data. |
| * Fixed local address setting for incoming connections. |
| * Fixed double TCP context dereferencing in certain corner cases. |
| |
| * TFTP: |
| |
| * Added ``tftp_put()`` API to support TFTP write request. |
| * Introduced ``tftp_callback_t`` callback to allow to read large files. |
| * Reworked ``struct tftpc`` client context structure, to allow for parallel |
| communication from several contexts. |
| |
| * UDP: |
| |
| * :kconfig:option:`CONFIG_NET_UDP_MISSING_CHECKSUM` is now enabled by default. |
| |
| * Websockets: |
| |
| * Implemented proper timeout handling in :c:func:`websocket_recv_msg`. |
| * Fixed implicit type conversion when parsing length field, which could lead |
| to data loss. |
| |
| * Wi-Fi: |
| |
| * Display TWT (Target Wake Time) configuration response status in Wi-Fi shell. |
| * Added more detailed TWT response parameters printout in Wi-Fi shell. |
| * Added new ``NET_EVENT_WIFI_TWT_SLEEP_STATE`` event to notify TWT sleep status. |
| * Fixed an issue where not all security modes were displayed correctly on scan. |
| * Added connection status and AP capabilities verification before initiating |
| TWT operation. |
| * TWT intervals are changed from milliseconds to microseconds, interval |
| variables are also renamed. |
| * Extended Power Saving configuration parameters with listening interval and |
| wake up mode. |
| * Added :kconfig:option:`CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS` option, which |
| enables providing of RAW (unprocessed) scan results to the application with |
| ``NET_EVENT_WIFI_CMD_RAW_SCAN_RESULT`` event. |
| * Several other minor fixes/cleanups in the Wi-Fi management/shell modules. |
| |
| * zperf |
| |
| * Added an extra parameter to disable Nagle's algorithm with TCP benchmarks. |
| * Added support for handling multiple incoming TCP sessions. |
| * Made zperf thread priority and stack size configurable. |
| * Several minor cleanups in the module. |
| |
| USB |
| *** |
| |
| * USB device support |
| |
| * Fixed control endpoint handling with MPS of 8 bytes. |
| |
| * New experimental USB support |
| |
| * Various improvements for new device support, better string descriptor support, |
| implemented usbd_class_shutdown API. |
| * Added USB Mass Storage class and CDC ECM class implementations for the new |
| device support. |
| |
| Libraries / Subsystems |
| ********************** |
| |
| * File systems |
| |
| * Added :kconfig:option:`CONFIG_FS_FATFS_REENTRANT` to enable the FAT FS reentrant option. |
| * With LittleFS as backend, :c:func:`fs_mount` return code was corrected to ``EFAULT`` when |
| called with ``FS_MOUNT_FLAG_NO_FORMAT`` and the designated LittleFS area could not be |
| mounted because it has not yet been mounted or it required reformatting. |
| * The FAT FS initialization order has been updated to match LittleFS, fixing an issue where |
| attempting to mount the disk in a global function caused FAT FS to fail due to not being registered beforehand. |
| FAT FS is now initialized in POST_KERNEL. |
| * Added :kconfig:option:`CONFIG_FS_LITTLEFS_FMP_DEV` to enable possibility of using LittleFS |
| for block devices only, e.g. without Flash support. The option is set to 'y' by default in |
| order to keep previous behaviour. |
| |
| * IPC |
| |
| * :c:func:`ipc_service_close_instance` now only acts on bounded endpoints. |
| * ICMSG: removed race condition during bonding. |
| * ICMSG: removed internal API for clearing shared memory. |
| * ICMSG: added mutual exclusion access to SHMEM. |
| * Fixed CONFIG_OPENAMP_WITH_DCACHE. |
| |
| * Management |
| |
| * Added optional input expiration to shell MCUmgr transport, this allows |
| returning the shell to normal operation if a complete MCUmgr packet is not |
| received in a specific duration. Can be enabled with |
| :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_SHELL_INPUT_TIMEOUT` and timeout |
| set with |
| :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_SHELL_INPUT_TIMEOUT_TIME`. |
| |
| * MCUmgr fs_mgmt upload and download now caches the file handle to improve |
| throughput when transferring data, the file is no longer opened and closed |
| for each part of a transfer. In addition, new functionality has been added |
| that will allow closing file handles of uploaded/downloaded files if they |
| are idle for a period of time, the timeout is set with |
| :kconfig:option:`MCUMGR_GRP_FS_FILE_AUTOMATIC_IDLE_CLOSE_TIME`. There is a |
| new command that can be used to close open file handles which can be used |
| after a file upload is complete to ensure that the file handle is closed |
| correctly, allowing other transports or other parts of the application |
| code to use it. |
| |
| * A new version of the SMP protocol used by MCUmgr has been introduced in the |
| header, which is used to indicate the version of the protocol being used. |
| This updated protocol allows returning much more detailed error responses |
| per group, see the |
| :ref:`MCUmgr SMP protocol specification <mcumgr_smp_protocol_specification>` |
| for details. |
| |
| * MCUmgr has now been marked as a stable Zephyr API. |
| |
| * The MCUmgr UDP transport has been refactored to resolve some concurrency |
| issues and fixes a potential issue whereby an application might call the |
| open transport function whilst it is already open, causing an endless log |
| output loop. |
| |
| * The MCUmgr fs_mgmt group Kconfig ``Insecure`` text has been replaced with |
| a CMake warning which triggers if fs_mgmt hooks are not enabled, as these |
| hooks can be used to ensure security of file access allowed by MCUmgr |
| clients. |
| |
| * Fixed an issue with MCUmgr fs_mgmt file download not checking if the |
| offset parameter was provided. |
| |
| * Fixed an issue with MCUmgr fs_mgmt file upload notification hook not |
| setting upload to true. |
| |
| * Fixed an issue with MCUmgr img_mgmt image upload ``upgrade`` field wrongly |
| checking if the new image was the same version of the application and |
| allowing it to be uploaded if it was. |
| |
| * MCUmgr img_mgmt group will only verify the SHA256 hash provided by the |
| client against the uploaded image (if support is enabled) if a full SHA256 |
| hash was provided. |
| |
| * MCUmgr Kconfig options have changed from ``select`` to ``depends on`` which |
| means that some additional Kconfig options may now need to be selected by |
| applications. :kconfig:option:`CONFIG_NET_BUF`, |
| :kconfig:option:`CONFIG_ZCBOR` and :kconfig:option:`CONFIG_CRC` are needed |
| to enable MCUmgr support, :kconfig:option:`CONFIG_BASE64` is needed to |
| enable shell/UART/dummy MCUmgr transports, |
| :kconfig:option:`CONFIG_NET_SOCKETS` is needed to enable the UDP MCUmgr |
| transport, :kconfig:option:`CONFIG_FLASH` is needed to enable MCUmgr |
| fs_mgmt, :kconfig:option:`CONFIG_FLASH` and |
| :kconfig:option:`CONFIG_IMG_MANAGER` are needed to enable MCUmgr img_mgmt. |
| |
| * MCUmgr img_mgmt group now uses unsigned integer values for image and slot |
| numbers, these numbers would never have been negative and should have been |
| unsigned. |
| |
| * POSIX API |
| |
| * Improved the locking strategy for :c:func:`eventfd_read()` and |
| :c:func:`eventfd_write()`. This eliminated a deadlock scenario that was |
| present since the initial contribution and increased performance by a |
| factor of 10x. |
| |
| * Reimplemented :ref:`POSIX <posix_support>` threads, mutexes, condition |
| variables, and barriers using native Zephyr counterparts. POSIX |
| synchronization primitives in Zephyr were originally implemented |
| separately and received less maintenance as a result. Unfortunately, this |
| opened POSIX up to unique bugs and race conditions. Going forward, POSIX |
| will benefit from all improvements to Zephyr's synchronization and |
| threading API and race conditions have been mitigated. |
| |
| * Retention |
| |
| * Retention subsystem has been added which adds enhanced features over |
| retained memory drivers allowing for partitioning, magic headers and |
| checksum validation. See :ref:`retention API <retention_api>` for details. |
| Support for the retention subsystem is experimental. |
| |
| * Boot mode retention module has been added which allows for setting/checking |
| the boot mode of an application, initial support has also been added to |
| MCUboot to allow for applications to use this as an entrance method for |
| MCUboot serial recovery mode. See :ref:`boot mode API <boot_mode_api>` for |
| details. |
| |
| * RTIO |
| |
| * Added policy that every ``sqe`` will generate a ``cqe`` (previously an RTIO_SQE_TRANSACTION |
| entry would only trigger a ``cqe`` on the last ``sqe`` in the transaction. |
| |
| * Power management |
| |
| * Added a new policy event API that can be used to register expected events |
| that will wake the system up in the future. This can be used to influence |
| the system on which low power states can be used. |
| |
| * Added a new device tree property ``zephyr,pm-device-runtime-auto`` to |
| automatically enable device runtime power management on a device after its |
| initialization. |
| |
| HALs |
| **** |
| |
| * Nordic |
| |
| * Updated nrfx to version 3.0.0. |
| |
| * STM32 |
| |
| * stm32cube: updated STM32F0 to cube version V1.11.4. |
| * stm32cube: updated STM32F3 to cube version V1.11.4 |
| * stm32cube: updated STM32L0 to cube version V1.12.2 |
| * stm32cube: updated STM32U5 to cube version V1.2.0 |
| * stm32cube: updated STM32WB to cube version V1.16.0 |
| |
| * Raspberry Pi Pico |
| |
| * Updated hal_rpi_pico to version 1.5.0 |
| |
| MCUboot |
| ******* |
| |
| * Relocated the MCUboot Kconfig options from the main ``Kconfig.zephyr`` file to |
| a new ``modules/Kconfig.mcuboot`` module-specific file. This means that, for |
| interactive Kconfig interfaces, the MCUboot options will now be located under |
| ``Modules`` instead of under ``Boot Options``. |
| |
| * Added :kconfig:option:`CONFIG_MCUBOOT_CMAKE_WEST_SIGN_PARAMS` that allows to pass arguments to |
| west sign when invoked from cmake. |
| |
| Storage |
| ******* |
| |
| * Added :kconfig:option:`CONFIG_FLASH_MAP_LABELS`, which will enable runtime access to the labels |
| property of fixed partitions. This option is implied if kconfig:option:`CONFIG_FLASH_MAP_SHELL` |
| is enabled. These labels will be displayed in a separate column when using the ``flash_map list`` |
| shell command. |
| |
| Trusted Firmware-M |
| ****************** |
| |
| * Enable routing of PSA Crypto API calls from NS to S, thanks to separating MbedTLS into three |
| distinct libraries at build time (crypto, TLS, X.509). This also resolves header conflicts with |
| earlier integrations of TF-M and MbedTLS. |
| * Added psa_crypto sample back. |
| |
| zcbor |
| ***** |
| |
| Updated from 0.6.0 to 0.7.0. |
| Among other things, this update brings: |
| |
| * C++ improvements |
| * float16 support |
| * Improved docs |
| * -Wall and -Wconversion compliance |
| |
| Tests and Samples |
| ***************** |
| |
| * Two Babblesim based networking (802.15.4) tests have been added, which are run in Zephyr's CI |
| system. One of them including the OpenThread stack. |
| * For native_posix and the nrf52_bsim: Many tests have been fixed and enabled. |
| * LittleFS sample has been given SPI example configuration for nrf52840dk_nrf52840. |
| * Migrated all tests to new Ztest API and deprecated legacy Ztest. |