994558ef8e
Use the new code-sample directive and roles to document the networking samples so that they show up as "Related samples" when browsing the various relevant networking APIs. Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
1447 lines
57 KiB
ReStructuredText
1447 lines
57 KiB
ReStructuredText
: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 identifers.
|
|
* 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.
|