releases/release-notes-3.4.html · releases/release-notes-3.4.rst 공식 원문 ↗

Zephyr 3.7.0 · Historical Release

Zephyr 3.4.0 릴리스 노트

Zephyr 3.4.0의 kernel·architecture·board·driver·network·USB·library·storage 변경과 API 수명주기를 공식 원문 구조대로 설명합니다.

Official pathreleases/release-notes-3.4.html
Source filereleases/release-notes-3.4.rst
Source versionZephyr 3.7.0
TranslationFull · reviewed

본문 기준: Zephyr 3.7.0 LTS3 · 이후 유지보수 패치는 별도입니다.

Part 1

요약·해설

1,446줄 공식 원문 전체, 본문 목록 624개, Kconfig·MCUboot 표 3개, YAML 코드 블록 2개와 CVE 2건을 빠짐없이 번역합니다.

Core

Input · Barrier · USB UDC · RTC · Retention

Connectivity

USB-C PD · PAwR · SMBus · Networking

Tooling

Twister · pytest · GoogleTest · Robot Framework · Snippets

Part 2

접을 수 있는 영어 원문 전체

영어 원문 전체 펼치기
원문 SHA-256 AFDE627D90F42F855466980E780E0E69DD9DD5030CF1BC0DADB834FDB82E7582
: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.

Part 3

한국어 전문 번역

Zephyr 3.4.0

Zephyr 3.4.0 릴리스를 발표합니다.

이번 릴리스의 주요 개선 사항은 다음과 같습니다.

  • Input subsystem은 여러 종류의 input device에서 event를 받아 application의 다른 thread로 전달합니다.
  • Data-memory barrier를 위한 architecture 독립적인 Barrier API를 추가했습니다.
  • USB Device 지원:
    • USB device controller API(UDC API)와 nRF USBD controller driver를 추가했습니다.
    • 새 UDC API를 사용하는 USB device stack을 구현했습니다.
  • USB-C stack에 Power Delivery Source 지원을 추가했습니다.
  • Bluetooth에 PAwR(Periodic Advertising with Responses) 지원을 추가했습니다.
  • Compiler가 Cache API function을 완전히 inline하도록 변경했습니다.
  • RTC(Real-Time Clock) API를 추가했습니다.
  • Retention subsystem을 추가했습니다.
  • Xtensa의 MMU 초기 지원을 추가했습니다.
  • SMBus(System Management Bus) API를 추가했습니다.
  • framework 및 트위스터 테스트에 대한 다양한 개선:
    • Twister에 pytest, GoogleTest, Robot Framework를 지원하는 test harness 3개를 추가했습니다.
    • 새 Ztest API로의 전환을 완료했고 legacy Ztest는 폐기 예정으로 지정했습니다.
  • Platform 전반에서 공통 configuration을 재사용할 수 있는 Snippet 기능을 추가했습니다.

다음 절은 구성요소별 상세 변경 목록입니다.

보안 취약점 관련

이 릴리스에서는 다음 CVE를 해결했습니다.

더 자세한 정보는 Zephyr 보안 취약점 문서에서 확인할 수 있습니다: https://docs.zephyrproject.org/latest/security/vulnerabilities.html

  • CVE-2023-1901: 2023년 7월 4일까지 embargo가 적용된 문제입니다.
  • CVE-2023-1902: 2023년 7월 4일까지 embargo가 적용된 문제입니다.

API 변경

이 릴리스의 변경 사항

  • CONFIG_MCUBOOT_IMG_MANAGER를 사용하는 application은 이제 CONFIG_FLASH_MAP과 CONFIG_STREAM_FLASH도 선택해야 합니다. Image manager Kconfig만 수동으로 켰을 때 생길 수 있는 CMake dependency loop를 방지합니다.
  • Application에서 Hawkbit을 사용하려면 아래 Kconfig dependency를 직접 선택해야 합니다. 이전에는 Kconfig의 select가 자동 선택했지만 이제 depends on으로 바뀌었습니다:
CONFIG_NVS
CONFIG_FLASH
CONFIG_FLASH_MAP
CONFIG_STREAM_FLASH
CONFIG_REBOOT
CONFIG_HWINFO
CONFIG_NET_TCP
CONFIG_NET_SOCKETS
CONFIG_IMG_MANAGER
CONFIG_NETWORKING
CONFIG_HTTP_CLIENT
CONFIG_DNS_RESOLVER
CONFIG_JSON_LIBRARY
CONFIG_NET_SOCKETS_POSIX_NAMES
CONFIG_BOOTLOADER_MCUBOOT
  • Application에서 UpdateHub를 사용하려면 아래 Kconfig dependency를 직접 선택해야 합니다. 이전에는 Kconfig의 select가 자동 선택했지만 이제 depends on으로 바뀌었습니다:
CONFIG_FLASH
CONFIG_STREAM_FLASH
CONFIG_FLASH_MAP
CONFIG_REBOOT
CONFIG_MCUBOOT_IMG_MANAGER
CONFIG_IMG_MANAGER
CONFIG_IMG_ENABLE_IMAGE_CHECK
CONFIG_BOOTLOADER_MCUBOOT
CONFIG_MPU_ALLOW_FLASH_WRITE
CONFIG_NETWORKING
CONFIG_NET_UDP
CONFIG_NET_SOCKETS
CONFIG_NET_SOCKETS_POSIX_NAMES
CONFIG_COAP
CONFIG_DNS_RESOLVER
CONFIG_JSON_LIBRARY
CONFIG_HWINFO
  • Sensor driver API 문서는 sensor_trigger_set()에 넘긴 user-allocated trigger를 복사하지 않고 pointer로 저장한 뒤 handler에 다시 전달한다고 명확히 했습니다. 큰 structure 안에 trigger를 넣으면 handler가 CONTAINER_OF로 context pointer를 얻을 수 있지만, trigger를 stack에 할당하면 안 됩니다. Stack에 trigger를 두던 application은 수정해야 합니다.
  • 일부 driver를 Input subsystem으로 전환했습니다.
    • gpio_keys를 GPIO에서 Input subsystem으로 옮기고 custom API 대신 input event를 사용합니다. zephyr,gpio-keys binding은 유지되지만 zephyr,code를 설정해야 합니다.
    • ft5336를 Kscan API에서 Input subsystem으로 옮기고 관련 Kconfig option을 CONFIG_INPUT_FT5336* 이름으로 변경했습니다.
    • kscan_sdl을 Kscan API에서 Input subsystem으로 옮겼습니다. Kconfig option은 CONFIG_INPUT_SDL_TOUCH로, compatible은 zephyr,input-sdl-touch로 변경했습니다.
    • nuvoton,npcx-kscan을 Input subsystem으로 옮겼습니다. Kconfig 이름은 INPUT_NPCX_KBD...로, compatible은 nuvoton,npcx-kbd로 변경했습니다.
    • Input API로 전환한 touchscreen driver는 zephyr,kscan-input driver를 사용해 Kscan 호환성을 유지할 수 있습니다.
  • main 선언을 void main(void)에서 int main(void)로 변경했습니다. main은 0을 반환해야 하며 다른 반환값은 예약돼 있습니다. C/C++ hosted 환경의 규격과 맞춰 compiler warning·error를 피하기 위한 변경입니다. 현재 -ffreestanding을 사용하지 않는 Picolibc application이 주로 영향을 받습니다.
  • 다음 network-interface API는 추가로 struct net_if *iface parameter를 받습니다:
    • net_if_ipv4_maddr_join
    • net_if_ipv4_maddr_leave
    • net_if_ipv6_maddr_join
    • net_if_ipv6_maddr_leave
  • MCUmgr transport는 등록 전에 handler function pointer를 설정해야 하며, 이 pointer들은 smp_transport_api_t type의 functions object로 이동했습니다. Legacy registration function과 object는 제거됐고 새 registration function은 성공 시 0, 실패 시 음수 error code를 반환합니다.
  • DAC channel output buffer를 설정하는 dac_channel_cfg.buffered flag를 추가했습니다. 해석은 hardware에 따라 다르며 현재 STM32 DAC driver에 구현돼 있습니다. 이 driver의 기본 동작은 buffered에서 unbuffered로 바뀝니다.
  • MCUmgr fs_mgmt file-access hook을 file status와 hash/checksum을 포함한 모든 group function에서 호출합니다. File-access state가 유지되면 command마다가 아니라 한 번만 호출합니다. Notification structure의 upload boolean은 어떤 function을 쓰는지 나타내는 enum으로 바뀌었으며 새 정의는 fs_mgmt_file_access를 참조하십시오.
  • Iterable Sections API는 include/zephyr/sys/iterable_sections.h에서 제공하며 LD linker snippet은 include/zephyr/linker/iterable_sections.h에서 제공합니다.
  • 캐시 API 기능은 이제 컴파일러에 의해 완전히 직렬되어 있습니다.
  • Bluetooth HCI header를 재구성했습니다. hci.h에는 function prototype만 남기고 HCI macro와 structure는 새 hci_types.h에 정의합니다. 기존 hci_err.h도 hci_types.h에 통합했습니다.

이 릴리스에서 제거된 API

  • Pinmux API를 제거했습니다. 대신 Pin Control API를 사용해야 하며 자세한 내용은 pinctrl guide를 참조하십시오.

이 릴리스에서 폐기 예정으로 지정된 항목

  • prj_<board>.conf로 application을 구성하는 방식은 폐기 예정입니다. 공통 설정은 prj.conf에 두고 board별 설정은 application의 boards directory에 Kconfig fragment로 둬야 합니다.
  • nRF51·nRF52 board에서 sys_reboot()의 reset reason을 GPREGRET register에 저장하던 동작을 제거했습니다. 이제 register를 바꾸지 않고 reboot합니다. 새 방식은 Retention subsystem의 Boot Mode API를 사용하며, 이전 동작이 필요하면 CONFIG_NRF_STORE_REBOOT_TYPE_GPREGRET를 활성화하십시오.
  • PTHREAD_BARRIER_DEFINE을 폐기 예정으로 지정했습니다. 표준 pthread_barrier_init()을 사용하십시오.
  • STM32F2를 제외한 STM32 target에서 STM32Cube Ethernet API V1 기반 driver를 폐기 예정으로 지정했습니다. 더 안정적이고 성능이 좋은 API V2 기반 구현을 사용하십시오.
  • Legacy Ztest API를 폐기 예정으로 지정했습니다. 새 test는 모두 새 Ztest API를 사용해야 합니다.

이 릴리스의 안정 API 변경

  • bt_set_oob_data_flag를 제거하고 SC pairing용 bt_le_oob_set_sc_flag()와 legacy pairing용 bt_le_oob_set_legacy_flag()로 대체했습니다.
    • SC pairing의 OOB flag를 설정하거나 해제하는 bt_le_oob_set_sc_flag()입니다.
    • Legacy pairing의 OOB flag를 설정하거나 해제하는 bt_le_oob_set_legacy_flag()입니다.
  • SYS_INIT callback은 더 이상 device argument를 받지 않으며 새 signature는 int f(void)입니다. scripts/utils/migrate_sys_init.py로 기존 project를 자동 이전할 수 있습니다.
  • spi_config.cs를 pointer에서 spi_cs_control structure member로 바꿔 C++에서도 기존 SPI dt-spec macro를 사용할 수 있습니다. GPIO 기반 CS인지 확인하려고 cs를 NULL과 비교하던 driver는 spi_cs_is_gpio() 또는 spi_cs_is_gpio_dt()를 사용해야 합니다.

이 릴리스의 새 API

  • Flash device의 추가 operation을 수행하는 flash_ex_op()을 도입했습니다. Operation은 Zephyr Flash API나 vendor-specific header에 정의하며 CONFIG_FLASH_HAS_EX_OP을 driver가 선택하고 사용자는 CONFIG_FLASH_EX_OP_ENABLED를 활성화합니다.
  • RTC API를 도입해 real-time clock device를 experimental로 지원합니다. 필수 rtc_set_time()·rtc_get_time()과 alarm, update callback, calibration용 optional function을 각각 CONFIG_RTC_ALARM, CONFIG_RTC_UPDATE, CONFIG_RTC_CALIBRATION으로 활성화합니다.
  • 문자 기반 보조 display를 위한 Auxdisplay API를 도입했습니다.
  • Memory barrier operation을 위한 Barrier API를 도입했습니다.
  • CAN-FD Error State Indicator를 나타내는 CAN_FRAME_ESI flag를 추가했습니다.

Kernel

  • 제거된 절대자호___cpu_t_SIZEOF,_STRUCT_KERNEL_SIZE,K_THREAD_SIZEOF 및_DEVICE_STRUCT_SIZEOF

Architecture

  • ARC
    • 추가된 MPUv8 지원
    • ARC 호스트링크 채널에서 가상 UART의 지원을 추가합니다
    • 개선된 ARCv2 HS4x 프로세서 처리 - 기본 mcpu를 제공하여 적절한 Kconfig 옵션을 추가
    • 향상된 ARCMWDT toolchain 조작:
      • ARCMWDT_TOOLCHAIN_PATH가 없으면 METAWARE_ROOT를 확인하는 fallback을 추가했습니다.
      • TWISTER에서 처리하여 ARCMWDT와 함께 사용할 수 있도록
      • 기본으로 사용된 64bit MDB 바이너리
    • 수정: 과도한 ROM memory 소비, MPU가 활성화되어 있고 ROM & RAM는 memory의 다른 지역에서 위치하고 있는 경우
    • ARCMWDT의 경우 수정: DSP 처리 레지스터
    • 향상된 SMP 조작:
      • thread의 수정: 잠재적인 라이브 블록은 예외로 인해 중단됩니다
      • 수정: IDU 마스크 설정
    • 제거된 절대자호___callee_saved_t_SIZEOF 및_K_THREAD_NO_FLOAT_SIZEOF
  • ARM
    • 제거된 절대자호___basic_sf_t_SIZEOF,_K_THREAD_NO_FLOAT_SIZEOF,___cpu_context_t_SIZEOF 및___thread_stack_info_t_SIZEOF
    • Cortex-M55에 fp16를 활성화
    • 램 클랜과 트러스트존으로 컴파일 문제가 해결되었습니다
    • 새로운 캐시 관리 API를 구현
    • zImage 헤더를 생성하는 데 추가 지원
    • 새로운z_arm_on_enter_cpu_idle 해킹이 도입되었습니다
  • ARM64
    • 제거된 절대자호___callee_saved_t_SIZEOF
    • FPU 및 FPU_SHARING를 v8r aarch64에 대해 활성화
    • 리셋 중 STACK_INIT 로직을 수정
    • 도입 및 허용된 안전 예외 stack
    • SMP에서 FPU 공유로 가능한 정지 상태가 고정되었습니다
    • SCTLR 변경 후 ISBs가 추가되었습니다
  • NIOS2
    • 제거된 절대자호_K_THREAD_NO_FLOAT_SIZEOF
  • POSIX:
    • Z_SPIN_DELAY를 추가하여 k_busy_wait() 및 tests에서 이 아치에 대한 k_busy_wait()을 조건적으로 컴파일 할 수 있습니다.
  • RISC-V
    • CONFIG_PMP_NO_TOR,CONFIG_PMP_NO_NA4,CONFIG_PMP_NO_NAPOT를 추가하여 지원되지 않은 PMP 범위 모드를 비활성화 할 수 있습니다.
    • 사용되지 않은 상징:_thread_offset_to_tp,_thread_offset_to_priv_stack_start,_thread_offset_to_user_sp
    • PMP와CONFIG_PMP_GRANULARITY의 미분성 설정에 대한 추가 지원
    • 인라인 어셈블리에서 CSRs에 액세스하는 것에서csr_read 보조 기능을 사용하는 것으로 전환되었습니다.
    • 단일 스레드 지원이 가능했습니다.
  • SPARC
    • 제거된 절대자호_K_THREAD_NO_FLOAT_SIZEOF
  • Xtensa
    • stack의 크로스 호출 메커니즘을 고정시켜 stack가 특정 조건에서 손상될 경우 둥지를 틀어 놓은 인터럽트 중에 수정했습니다.
    • Xtensa의 MMU 초기 지원을 추가했습니다.
    • 이제CONFIG_MULTITHREADING를 비활성화한 빌딩을 지원합니다. 그래서 타겟은 단일 thread 운영에서만 실행될 수 있습니다.
    • 디버깅에 도움이 되는 interrupt 프레임을 표현하기 위해 C structure을 추가했습니다.

Bluetooth

  • 일반
    • 새로운 Kconfig.logging 파일에 모든 logging 상징을 함께 옮겼습니다.
    • BT_DEBUG_LOG 옵션이 비하되었습니다. 대신 BT_LOG를 사용해야합니다.
    • BT_LOG와 BT_LOG_LEGACY 옵션을 숨겼습니다.
    • BT_DEBUG를 완전히 제거했습니다.
  • Audio
    • CAP 시범 broadcast audio 시작, 중지 및 메타데이터 업데이트 절차를 구현했습니다.
    • CAP 유니캐스트 audio 시작, 중지 및 메타데이터 업데이트 절차를 구현했습니다.
    • 전화 및 미디어 Audio 서비스 (TMAS) 를 구현하였다.
    • MCC 및 MCS에 대한 추가 검증, 오프코드, 값 등을 포함하여
    • broadcast 싱크와 통합을 포함하여 스캔 대리원 구현을 재조정 및 확장했습니다.
    • PA 싱크에서 broadcast 싱크를 만드는 데 추가 지원
    • CSIP에서 선택적 특성에 대한 추가 지원
    • UUID에 의해 구현된 발견, 여러 가지 특성을 위해 UUID에 의해 읽지 않고
    • 여러 프로필을 위한 긴 읽기 및 쓰기 지원이 추가되었습니다.
    • 긴 BAP ASE 알림 및 최적화된 긴 알림 읽기 위한 추가 지원.
    • 시스템 작업열에 Offloaded MCS 알림
    • CAP 시범 취소 절차가 추가되었습니다.
  • Direction Finding
  • Host
    • Host를 v5.4 사양에 업데이트
    • GATT DB Hash은 이제 로딩 설정을 통해 다시 계산됩니다.
    • SMP 키프레스 알림에 대한 실험 지원이 추가되었습니다.
    • 로그 홍수를 피하기 위해 선택된 로그 message의 심각성을 낮추었습니다.
    • LE SC OOB 짝짓기를 기존의 OOB 논리에서 분리했습니다.
    • 암호화된 광고 데이터 기능을 구현했습니다.
    • 광고주와 스캐너로서 새로운 주기적인 광고와 응답 (PAwR) 에 대한 지원이 추가되었습니다.
    • PAwR에서 연결을 시작하고 동기화 중 연결을 수신하는 데 추가된 지원
    • BT_PRIVACY Kconfig 옵션에 의해 활성화 된 행동을 명확히 했습니다.
    • 새로운 seg_recv L2CAP API를 도입하여 application이 직접 세그먼트를 수신하고 크레딧을 명시적으로 관리할 수 있습니다.
  • Mesh
    • 새로운 구성 옵션으로 게이트 된 Mesh 프로토콜 d1.1r18 사양에 대한 실험 지원이 추가되었습니다. 여기에는 다음과 같습니다:
      • 강화된 인증 지원 제공
      • Mesh 다음을 포함한 원격 제공 지원
        • 원격 공급 서버 및 클라이언트 모델
        • 구성 데이터 페이지 128 및 모델 메타데이터 페이지 128 지원
      • 다음을 포함한 큰 구성 데이터 지원:
        • 대형 구성 데이터 서버 및 클라이언트 모델
        • 모델 메타데이터 페이지 0 지원
      • 다음을 포함한 새로운 교통 세그먼트 및 재조합 (SAR) 구현
        • SAR 구성 서버 및 클라이언트 모델
      • Mesh 개인 Beacons 지원은 다음을 포함한다:
        • Mesh 개인 Beacon 서버 및 클라이언트 모델
      • Opcodes Aggregator 지원
        • Opcodes Aggregator 서버 및 클라이언트 모델
      • Proxy 다음을 포함한 요청 지원
        • 요청 PDU RPL 구성 서버 및 클라이언트 모델
        • 주문형 개인 Proxy 서버 및 클라이언트 모델
      • 구성 데이터 페이지 1 지원
      • 다른 Mesh 프로필 개선
    • Mesh 바이너리 대형 객체 전송 모델 d1.0r04_PRr00 사양에 대한 실험 지원이 추가되었습니다.
    • Mesh Device 펌웨어 업데이트 모델 d1.0r04_PRr00 사양에 대한 실험 지원이 추가되었습니다.
    • 복수 프로필 오류가 수정되었습니다.
    • PSA crypto APIs에 대한 실험 지원이 추가되었습니다.
    • mesh 설정을 저장하기 위해 새로운 work queue을 추가, 사용자 데이터를 저장하기 위해 새로운 API를 포함합니다.
    • C++에 대한 모델 초기화 매크로를 비활성화하여 C99에서 복합 문자 기능을 사용합니다.
    • 폐기 예정인 건강 클라이언트 및 구성 클라이언트 API가 제거되었습니다.
  • Controller
    • 여러 개의 CIS 사용 케이스를 가진 중앙에 대한 지원이 구현되었습니다.
    • 여러 주변 CIS 시설을 위한 지원이 시행되었습니다.
    • Controller를 v5.4 사양에 업데이트
    • 다른 송신기와 공존을 위한 추가 지원
    • 여러 CIS/CIG setup/connect 및 순차적으로 해체 절차에 대한 추가 지원
    • 유효기간 정보를 반환하기 위해 API 틱을 확장했습니다.
    • 새로운 티켓 만료 정보 기능을 사용하여 재시행 및 연장 광고, 그리고 Broadcast ISO.
    • ticks_slot_window를 사용하는 예약되지 않은 틱을 재계정하기 위해 틱링 구현을 수정했습니다.
    • SDU 간격을 고려하기 위한 추가 지원, packet 순서 번호와 시간표와 함께, SDU 분화.
    • 새로운 BT_CTRL_TX_PWR_DBM 옵션이 추가되어 TX 전력을 직접 dBm로 설정합니다.
    • 이미 할당된 RX 노드에서 돼지 백팅 알림을 지원하는 RX 경로를 최적화했습니다.
  • HCI Driver

Board 및 SoC 지원

  • 이러한 SoC 시리즈에 대한 추가 지원:
    • STM32C0 시리즈는 이제 지원되고 있습니다 (STM32C031 SoC의 도입과 함께).
    • STM32H5 시리즈는 이제 지원되고 있습니다 (STM32H503 및 STM32H573 SoC의 도입과 함께).
    • STM32U599 SoC 변종에 대한 추가 지원
    • Nordic 반도체 nRF9161
  • 이 SoC 시리즈에 대한 지원이 제거되었습니다:
  • 다른 SoC 시리즈에서 다음과 같은 변경 사항을 수행했습니다:
  • 이 ARC boards에 대한 추가 지원:
    • 디자인웨어 ARC HS4x/HS4xD 개발 Kit (HSDK4xD) - ARCv2 HS47D, SMP 4 핵
    • nsim_hs3x_hostlink - 호스트링크 UART를 가진 시뮬레이션 (nSIM 기반) 플랫폼
  • 이 ARM boards에 대한 추가 지원:
    • 아코노 ACN52832
    • Alientek STM32L475 판도라
    • Arduino GIGA R1 와이파이
    • BeagleConnect 자유
    • 인파이온 PSoCTM 6 BLE 프로토타입 제작 Kit (CY8CPROTO-063-BLE)
    • 인피네온 PSoCTM 6 와이파이 BT 프로토타입 Kit (CY8CPROTO-062-4343W)
    • 인피네온 XMC4700 휴식 Kit
    • MXChip AZ3166 IoT DevKit
    • Nordic 반도체 nRF9161 DK
    • NXP MIMXRT1040-EVK
    • 제1항 제1항 제2항 제1항 제1항
    • PHYTEC 피보드 폴리스 (NXP i.MX8M 미니)
    • PHYTEC 피보드 폴럭스 (NXP i.MX8M 플러스)
    • 라즈베리 피 피코 W
    • 레이타크 MDBT50Q-DB-33
    • 레이타크 MDBT50Q-DB-40
    • Seeedstudio 비오 터미널
    • Seeedstudio XIAO BLE 감각
    • 실리콘 연구소 BRD2601B
    • 실리콘 연구소 BRD4187C
    • 실리콘 랩즈 EFR32 Thunderboard 스타일의 boards
    • ST Nucleo C031C6
    • ST Nucleo F042K6
    • ST Nucleo H563ZI
    • ST STM32H573I-DK 발견
    • Xilinx KV260 (Cortex-R5)
  • 이 ARM64 boards에 대한 추가 지원:
    • PHYTEC 피코어-AM62x A53
    • NXP i.MX93 EVK A55 (SOF 변형)
  • 이 RISC-V boards에 대한 추가 지원:
    • 인텔 FPGA Nios® V/m
    • 제1항 제1항 제2항 제1항 제1항
  • 이 X86 boards에 대한 추가 지원:
  • 이 Xtensa boards에 대한 추가 지원:
    • ESP32S3-DevKitM
  • ARC boards에 대해 다음과 같은 변경 사항을 수행했습니다:
    • 추가 된 ARC MWDT toolchain 지원
    • 향상된 emsdp 플랫폼 지원:
      • 추가 된 DFSS driver 지원
      • 추가된 pinctrl 지원
  • ARM boards에 대해 다음과 같은 변경 사항을 수행했습니다:
    • atsamc21n_xpro: CAN에 대한 지원을 활성화하십시오.
    • atsame54_xpro: Ethernet MAC에서 I2C를 읽으십시오.
    • 노르딕 boards nrf9160dk_nrf9160 및 nrf9160dk_nrf52840의 기본 board 개정에서 0.14.0로 변경되었습니다. nRF9160 DK의 외부 flash 없이 오래된 개정에서 build로 build로 변경되었습니다.
    • nrf9160dk_nrf52840: 기본으로 external_flash_pins_routing 스위치를 활성화합니다.
    • nrf9160dk_nrf9160: GPIO 확장자에 있는 버튼과 스위치의 순서를 변경하여 GPIO를 nRF9160 SoC에 직접 사용할 때 순서에 일치합니다.
    • STM32H747i_disco: ST B-LCD40-DSI1 디스플레이 확장자를 지원하는 것이 가능
    • qemu_cortex_m0: 시스템 타이머의 수정: 전등등기, 따라서 그 주파수는 실제로 1 MHz, 2 MHz이 아닙니다.
  • ARM64 boards에 대해 다음과 같은 변경 사항을 수행했습니다:
    • FVP revc_2xaemv8a / aemv8r: ethernet, PHY 및 MDIO 노드가 추가되었습니다
  • POSIX boards에 다음과 같은 변경 사항을 수행했습니다:
    • nrf52_bsim는 이제 다음과 같은 지원 및 모델을 포함합니다.
      • 802.15.4의 RADIO
      • EGU
      • FLASH (NVMC & UICR)
      • TEMP
      • UART는 host ptty에 연결되어 있습니다.
      • 더 많은 소형 CMSIS API 및 nRF APIs 및 drivers
  • RISC-V boards에 대해 다음과 같은 변경 사항을 수행했습니다:
    • gd32vf103: 더 이상 특별한 OpenOCD 버전이 필요하지 않습니다.
  • X86 boards에 대해 다음과 같은 변경 사항을 수행했습니다:
  • 이 변경 사항은 Xtensa boards에 대해 변경되었습니다:
  • 이 ARC boards에 대한 지원이 제거되었습니다:
  • 이 ARM boards에 대한 지원이 제거되었습니다:
  • 이 RISC-V boards에 대한 지원이 제거되었습니다:
    • 비글V 스타라이트 JH7100
  • 이 X86 boards에 대한 지원이 제거되었습니다:
  • 이 Xtensa boards에 대한 지원이 제거되었습니다:
  • 다른 boards에서 다음과 같은 변경 사항을 수행했습니다:
  • 다음 shields에 대한 추가 지원:
    • Adafruit 데이터 로거 Shield
    • nPM1300 EK (Power Management 통합 회로)
    • 파나소닉 그리드-EYE Shields
    • ST B_LCD40_DSI1_MB1166

Build System 및 Infrastructure

  • 최신 버전의 compatible 대신 Zephyr SDK toolchain의 오래된 버전이 사용되었던 문제가 해결되었습니다.
  • sysbuild와 application를 구축하고 mcuboot의 검증을 체크섬으로 지정하는 문제가 해결되었습니다. build는 부팅 가능한 이미지를 제공하지 않았습니다.
  • 문제가 해결되었습니다. 만약 prj.conf 파일이 없는 경우, board 구성 파일은 치명적인 오류를 발생시켜 포함되지 않을 것입니다. 결과적으로, prj.conf 파일은 이제 프로젝트에서 필수적입니다.
  • Zephyr에서 extending/replacing의 서명 메커니즘에 대한 지원이 도입되었으며, 자세한 내용은West extending signing <west-extending-signing> 참조하십시오.
  • Sysbuild와 *_ROOT 변수를 사용할 때 이미지에 손실되는 문제를 해결했습니다.
  • 향상된 zephyr_get CMake 보조 기능으로 선택적으로 범위 변수의 목록에 통합을 지원합니다.
  • setting/updating sysbuild CMake 캐시 변수: sysbuild_cache_set에 새로운 CMake 보조 기능이 추가되었습니다.
  • 향상된 zephyr_get CMake 보조 기능으로 여러 변수를 검색하고 다른 이름의 변수로 결과를 반환합니다.
  • EXTRA_CONF_FILE, EXTRA_DTC_OVERLAY_FILE, EXTRA_ZEPHYR_MODULES를 도입하여 Zephyr 자동 build 설정 검색 외에도 추가 build 설정을 적용하기 위해 더 나은 이름의 일관성과 균일한 동작을 위해 EXTRA_CONF_FILE가 OVERLAY_CONFIG를 대체합니다. EXTRA_ZEPHYR_MODULES는 ZEPHYR_EXTRA_MODULES를 대체합니다. EXTRA_DTC_OVERLAY_FILE는 새로운 것입니다. 자세한 내용은 EXTRA_DTC_OVERLAY_FILE0를 참조하십시오.
  • 트위스터는 이제 gTest으로 작성된 tests를 실행하기 위해 gtest 배너스를 지원합니다.
  • device 초기화 우선 순위를 build 시간에 검증하는 옵션을 추가했습니다. 사용하려면CONFIG_CHECK_INIT_PRIORITIES를 활성화하십시오. 자세한 내용은check_init_priorities.py 참조하십시오.
  • 컴파일 시 매크로 확장 추적을 비활성화하는 새로운 옵션,CONFIG_COMPILER_TRACK_MACRO_EXPANSION를 추가했습니다. 이러한 옵션은 매크로 확장 중에 오류가 발생하면 compiler 말 그대로성을 줄이기 위해 비활성화 될 수 있습니다. 예를 들어, device 정의 매크로에서.
  • 트위스터는 이제 --alt-config-root를 사용하여 대체 루트 folder/s에서 test 구성 요소를 로딩하는 것을 지원합니다. test이 발견되면, 트위스터는 test 구성 파일이 다른 test 구성 루트 폴더 중 하나에 있는지 확인합니다. 예를 들어, $test_root/tests/foo/testcase.yaml을 사용하면, 트위스터는 $alt_config_root/tests/foo/testcase.yaml을 사용할 것입니다.
  • 트위스터는 이제 공간으로 분리된 문자열을 사용하여 이전에 정의된 필드들에 대한 네이티브 YAML 리스트를 사용합니다. 예를 들어:
platform_allow: foo bar

이제 다음과 같이 쓸 수 있습니다.

platform_allow:
  - foo
  - bar

이것은 다음과 같은 특성에 적용됩니다.

  • arch_exclude
  • arch_allow
  • depends_on
  • extra_args
  • extra_sections
  • platform_exclude
  • platform_allow
  • tags
  • toolchain_exclude
  • toolchain_allow

참고로, 오래된 동작은 구제된 상태로 유지됩니다.scripts/utils/twister_to_list.py 스크립트를 사용하여 자동으로 트위스터 구성 파일을 마이그레이션 할 수 있습니다.

  • MCUboot 이미지 서명이 활성화되면, 프로젝트에서 서명 키가 설정되지 않은 경우 cmake에 의해 warning가 발산됩니다. 이 warning는 Zephyr 외부에서 수동적으로 또는 서명하는 경우 안전하게 무시할 수 있습니다. 이 warning는 생성된 이미지가 MCUboot에 의해 시작되지 않을 것이라고 사용자에게 알립니다.
  • Babblesim는 이제 west 매니프트에 포함되어 있습니다. 사용자는 babblesim 그룹을 west 구성으로 활성화함으로써 그것을 얻을 수 있습니다.
  • west sign 이제 DT 라벨을 사용하여 이전에 사용된 DT node 라벨 속성을 대신 application 이미지 슬롯을 식별합니다. MCUboot에 맞춤형 파티션 레이아웃을 사용했다면 MCUboot 슬롯 파티션에 적절한 DT node 라벨을 표시해야합니다. 예를 들어, "image-DT0" 라벨 속성을 가진 파티션에는 ZX11XZ DT2QQQQQQQQQQQQQQ 라벨이 표시되어야합니다. 라벨 속성은 DT4QXXZ에서 표시되지 않아도 됩니다. 그러나 아래에 나열된 QQQX15XZ 라벨은 제거되지 않습니다.
Partition with label propertyRequired DT node label
"image-0"slot0_partition
"image-1"slot1_partition
  • BOARD_ROOT 값에 제공된 상대적인 경로가 warning 디렉토리가 발견되지 않은 것에 대한 warning를 잘못 발송할 수 있는 문제를 해결했습니다.
  • 상대적인 경로가 sysbuild 이미지에서 작동하지 않는 문제를 해결했습니다.

Driver 및 Sensor

  • Device 모델
    • 초기화 루틴이 필요하지 않은 Devices는 이제 NULL를 DEVICE_*_DEFINE() 매크로로 전달할 수 있습니다.
  • 보조 디스플레이
    • 새로운 보조 디스플레이 (auxdisplay) 주변 장치가 추가되어 그래픽 기능이 없는 간단한 알파뉴메릭 디스플레이와 인터페이스를 가능하게 합니다. 이 주변 장치는 불안정으로 표시됩니다.
    • HD44780 driver 추가
    • 또한 Itron driver를 추가했습니다.
    • Grove LCD driver가 추가되었다 (현재 sample에서 가져온).
  • ADC
    • MCUX LPADC driver는 이제 software 채널 구성 buffer를 선택하기 위해 채널 매개 변수를 사용합니다. zephyr,input-positive 및 zephyr,input-negative devicetree 속성을 사용하여 channel(s) 하드웨어를 선택하여 software 채널 구성을 연결합니다.
    • MCUX LPADC driver voltage-ref 및 power-level devicetree 속성은 NXP SDK enum 식별자와 일치하는 대신 참조 설명서에 설명된 하드웨어와 일치하도록 변경되었습니다.
    • STM32C0 및 STM32H5에 대한 추가 지원
    • STM32H7에 대한 DMA 지원이 추가되었습니다.
    • STM32: 이제 각 device 인스턴스에 대한 해상도는 device 트리에 나열되어 있습니다
    • STM32: 이제 각 device 인스턴스의 샘플링 시간은 device 트리에서 나열됩니다
    • Atmel SAM 가족 ADC에 driver가 추가되었습니다.
    • Gecko 인크레멘탈 ADC에 driver가 추가되었습니다.
    • 인피네온 CAT1 ADC에 driver가 추가되었습니다.
    • TI ADS7052에 driver가 추가되었습니다.
    • driver가 TI ADS114S0x 가족에 추가되었습니다.
    • 레네사스 스마트보드 GPADC 및 SDADC에 drivers가 추가되었습니다.
  • 배터리 뒷받침 된 RAM
    • 추가된 MCP7940N 배터리 지원 RTC SRAM driver
  • CAN
    • CAN 통계는can_start에 전화를 할 때 다시 설정됩니다.
    • NXP FlexCAN devicetree binding compatible에서 nxp,kinetis-flexcan로 변경되었습니다.
    • NXP FlexCAN controller의 CAN-FD 변종에 대한 추가 지원은 devicetree bindingnxp,flexcan-fd를 사용하여
    • NXP NXP S32 CANEXCEL controller devicetree bindingnxp,s32-canxl을 사용하는 NXP S32 CANEXCEL controller에 대한 추가 지원
    • devicetree bindingatmel,sam0-can를 사용하는 Atmel SAM0 CAN controller에 대한 추가 지원
    • 보쉬 M_CAN controller driver backend를 재조정하여 devicetree를 통해 인스턴스 구성을 허용합니다.
    • 이제 STM32H5 시리즈를 지원합니다.
  • Clock 제어
    • Atmel SAM/SAM0: 주변 clock 제어 장치가 도입되었습니다.
    • ATMEL SAM0: samd20/samd21/samr21 클럭링 메커니즘을 개선했다.
    • STM32F4: PLL I2S에 추가 지원
  • Console:
    • native_posix 및 bsim console drivers는 driver 전체 POSIX 아치 기반 boards에 사용할 수 있는 하나의 일반 driver로 통합되었습니다.
  • Counter
    • 타이머 기반의 counter에 추가된 지원
    • RTC에 기반한 counter에 대한 추가 지원
  • Crypto
    • STM32H5 AES에 추가 지원
  • DAC
    • STM32H5 시리즈에 추가 지원
  • Disk
    • SDMMC STM32L4+: 이제 compatible 내부 DMA
    • NVME 디스크는 이제 FATFS를 사용하여 지원되며, 단일 I/O 줄을 활성화합니다.
  • Display
    • 향상된 MCUX ELCDIF 및 SSD16XX 디스플레이 controller drivers
    • ILI9342C 디스플레이 controller에 추가 지원
    • OTM8009A 패널에 대한 추가 지원
  • DMA
    • STM32C0: DMA에 대한 추가 지원
    • STM32H5: GPDMA에 대한 추가 지원
    • STM32H7: BDMA에 대한 추가 지원
    • RP2040 SoC에 DMA 지원이 추가되었습니다
  • EEPROM
    • atmel,at24에서zephyr,i2c-target-eeprom에 전용 I2C EEPROM 목표 driver로 전환되었습니다.
  • Entropy
    • STM32H5 시리즈에 대한 추가 지원
  • Flash
    • 새로운 flash API 호출을 소개했습니다.ec_op callback는 flash driver에 의해 제공되는ec_op callback을 호출합니다. 이것은 Zephyr Flash devices에 추가 작업을 수행 할 수 있습니다. Zephyr Flash API0 또는 vendor-specific 헤더 파일에서 정의 된 API3. API1는 추가 작업을 지원한다는 것을 표시하기 위해 API2에 의해 선택해야합니다. 추가 작업을 활성화하려면 API3를 선택해야합니다.
    • STM32F4: 이제 새로운 flash API 호출flash_ex_op를 통해 쓰기 보호 및 읽기 보호를 지원합니다.
    • nrf_qspi_nor: API 사용자 지정 기능을 대체하여 nrf_qspi_nor_base_clock_div_force를 nrf_qspi_nor_xip_enable로 대체하여 clock 분자를 강요하는 것 외에도 driver이 QSPI 주변 장치를 비활성화하지 않도록 XIP 동작이 실제로 가능합니다.
    • flash_simulator:
      • flash 시뮬레이터의 저장 공간으로 memory 영역을 사용할 수 있습니다. memory 영역을 사용하여 flash 시뮬레이터는 device 리부팅에 대한 내용을 유지할 수 있습니다.
      • native_posix에서 구축할 때, flash를 boot에서 클리어해야 하는지, flash에서 보관된 RAM의 flash 컨텐츠를, 또는 출구에 flash 컨텐츠 파일을 삭제해야 하는지 선택하기 위해 명령 줄 옵션이 추가되었습니다.
    • spi_flash_at45: 초기 섹터가 두 부분으로 나뉘어 있는 handle 칩을 적절하게 지우기 위한 수정: 삭제 절차 (일반적으로 0a 및 0b로 표시된다).
    • STM32H5는 이제 OSPI를 지원합니다
  • GPIO
    • gpio_keys driver를 입력 subsystem로 변환했습니다.
    • RP2040 SoC에 대한 단말기 IO 지원이 추가되었습니다
    • STM32: 새로 도입된 실험 API를 enable/disable 인터럽트에 다시 구성하지 않고 지원합니다
  • I2C
    • STM32C0 및 STM32H5 시리즈에 대한 추가 지원
  • I2S
    • STM32: 도메인 clock는 이제 device 트리로 구성되어야 합니다.
  • 입력
    • input subsystem를 소개했습니다.
  • KSCAN
    • kscan 호환성 driver에zephyr,kscan-input 입력을 추가했습니다.
    • ft5336 및 kscan_sdl drivers를 입력 subsystem로 변환했습니다.
  • MIPI-DSI
    • STM32H7에 대한 추가 지원
  • 미스
    • RP2040 SoC에 PIO 지원이 추가되었습니다
  • PCIE
    • PCIe devices를 class/revision.에 의해 필터링할 수 있습니다
  • PECI
  • 보관된 memory
    • 보존된 memory (retained_mem) driver는 Nordic nRF GPREGRET의 백그랜드와 초기화되지 않은 RAM를 추가되었습니다.
  • 핀 컨트롤
    • 인피네온 CAT1에 대한 추가 지원
    • TI K3에 추가 지원
    • ARC emdsp에 대한 추가 지원
  • PWM
    • STM32C0에 대한 추가 지원
    • STM32: 이제 6-PWM 채널을 지원합니다
    • 마이크로칩 XEC BBLED에 PWM driver가 추가되었습니다.
  • 전력 도메인
  • 규제 기관
    • API 조절기는 이제 thread-안전한 참조 카운팅 없이CONFIG_REGULATOR_THREAD_SAFE_REFCNT를 사용하여 만들 수 있습니다. 이 기능은CONFIG_MULTITHREADING를 활성화하지 않는 application에서 유용 할 수 있습니다.
    • ADP5360 PMIC에 추가 지원
    • nPM1300 PMIC에 추가 지원
    • Raspberry Pi Pico core 공급 조절기 위한 추가 지원
  • SDHC
    • CPOL/CPHA SPI clock 모드를 SD 카드로 사용하는 데 대한 지원이 추가되었습니다. 일부 카드에서는 SPI clock이 활성화되지 않을 때 저로 전환해야 하기 때문에
  • Sensor
    • 추가된 일반 전압 측정기 sample
    • 제거된 STM32 Vbat 측정기 sample (일반형으로 대체)
    • 추가된 STM32 Vref sensor driver
    • 새로운 일반 전압 측정 장치 STM32 Vref/Vbat를 통해 추가된 STM32
    • 추가 온도 측정 driver STM32C0 및 STM32F0x0
    • 제거된 STM32 온도 측정기 sample (일반적인 것으로 대체)
    • 일반 온도 측정기 STM32를 통해 추가된 STM32 온도 측정
  • Serial
    • UART3 및 UART4 구성은 gd32vf103 SoC에 추가되었습니다.
    • uart_altera: Altera Avalon UART에 새로운 driver가 추가되었습니다.
    • uart_emul: 에뮬레이션 된 UART에 새로운 driver가 추가되었습니다.
    • uart_esp32:
      • ESP32S3 SoC에 대한 추가 지원
      • RS-485 반 듀플렉스 모드에 대한 추가 지원
    • uart_hostlink: Synopsys ARC 호스트링크 채널을 통해 가상 UART에 새로운 driver를 추가했습니다.
    • uart_ifx_cat1: Infineon CAT1 UART에 새로운 driver가 추가되었습니다.
    • uart_mcux: power management 지원이 추가되었습니다.
    • uart_mcux_flexcomm: 비동기 운용에 대한 추가 지원
    • uart_mcux_lpuart: 평등을 위한 추가 지원
    • uart_ns16550: 이제 모든 경우에 하나의 액세스 모드가 아닌 하드웨어 액세스 모드를 지원합니다.
    • uart_pl011: 수정: interrupt 지원
    • uart_rpi_pico_pio: Raspberry Pi Pico에서 프로그래밍 가능한 Input/Output (PIO) 를 통해 UART를 지원하기 위해 새로운 driver를 추가했습니다.
    • uart_xmc4xxx: 비동기 운용에 대한 추가 지원
    • uart_stm32: 이제 driver 활성화 모드를 지원합니다
    • RP2040 SoC에 대한 하드웨어 흐름 제어 지원이 추가되었습니다
  • SPI
    • STM32H5 시리즈에 추가 지원
  • Timer
    • 노르딕 nRF RTC 시스템 타이머를 중지하는 데 대한 지원이 추가되었습니다. 이는 이전 버전의 Zephyr에 구축된 application을 시작할 때 문제를 해결합니다.
    • STM32: 이제 clock의 입력에서 전등등기를 지원합니다 (전립적으로 분할되지 않습니다). 전등등기는 더 높은 LPTIM timeout (lptim는 LSE에 의해 시계 할 때 256s까지) 를 달성 할 수 있습니다. 결과적으로 더 높은 core 수면 기간이 있지만 틱 정확성에 영향을 미칩니다. 조심스럽게 사용해야합니다.
  • USB
    • RP2040 SoC에 대한 원격 경각지원 지원이 추가되었습니다
    • 추가된 배터리 충전 (BC12) API 및 PI3USB9201 driver 구현
    • 새로운 USB device controller drivers (usb_dc API를 사용하여) 를 추가하여 ITE IT82xx2 및 스마트보드 플랫폼을 사용할 수 있습니다.
    • USB device controller driver 뼈대가 추가되었습니다.
    • DWC2 driver를 재조직하고 STM32F4 SoC 가족에 대한 추가 지원
  • W1
    • 추가 된 DS2482-800 1-Wire 마스터 driver. 자세한 내용은maxim,ds2482-800 devicetree binding 참조하십시오.
    • 추가된CONFIG_W1_NET_FORCE_MULTIDROP_ADDRESSING는 1-Wire network 계층을 멀티 드롭 어드레싱을 사용하도록 강요할 수 있습니다.
  • Watchdog
    • STM32C0 및 STM32H5 시리즈에 대한 추가 지원

Networking

  • CoAP
    • 블록 전송 처리 편의를 위해coap_append_descriptive_block_option와coap_get_block1_option APIs를 추가했습니다.
    • coap_client_interface 보조 library, 기존 CoAP APIs에 기반하여 추가되었습니다.
    • coap_header_get_token에서 결실된 토큰 길이 검증
    • coap_response_received에서 누락된 response 체크가 수정되었습니다.
  • 연결 관리자:
    • library를 일반 L2 연결 API로 확장했습니다.
    • library 내부가 크게 리팩터링되었습니다.
    • library의 안전성 향상
    • 연결 관리자 이벤트가 통지되는 방식이 재개정되었습니다. 그들은 더 이상 각 인터페이스에 개별적으로 제기되지 않습니다. 대신:
      • NET_EVENT_L4_CONNECTED는 첫 번째 인터페이스가 연결성을 얻은 후에 한 번만 호출됩니다.
      • NET_EVENT_L4_DISCONNECTED는 모든 인터페이스에서 연결이 손실된 후에야 호출됩니다.
    • 연결 관리자 test의 커버리가 향상되었습니다.
  • DHCPv4
    • DHCPv4 입력 핸들러에서 잠재적인 packet 누출을 수정했습니다.
    • dhcpv4_create_message()에서 잠재적인 NULL 포인터 디레퍼런스를 수정했습니다.
    • callback 옵션을 처리하기 위해 callback를 등록하는 메커니즘을 추가했습니다.
    • 시스템 내 모든 dhcpv4_client 인터페이스에서 DHCP를 활성화하기 위해 수정된 dhcpv4_client sample
  • DNS
    • NULL 포인터에서 가능한 충돌을 해결했습니다
    • 재구성하기 전에 기존 DNS 서버에 체크를 추가했습니다.
    • DNS SD에서 디버깅 로깅을 개선했습니다.
    • mDNS 응답자에서 IPv4/IPv6 주소 처리 장치가 고정되어 있는 경우, IPv4 및 IPv6 모두 활성화되어 있습니다.
    • DNS SD 쿼리 파싱에서 죽은 code를 제거했습니다.
  • Ethernet:
    • ARP 요청 전송 오류의 경우 수정: 이중 packet 소추
    • LLDP 초기화 전에 Ethernet 인터페이스가 올라갔을 경우 가능한 slist 부패를 수정했습니다.
  • HTTP
    • HTTP 서비스 및 리소스 반복 가능한 섹션이 추가되었습니다.
  • ICMPv6:
    • 구현된 IPv6 RA 반복적인 DNS 서버 옵션 처리
  • IEEE802154:
    • 6LoWPAN IP 헤더 압축 및 분해로 코너 케이스를 고정했습니다. 짧은 범위의 packet 크기의 경우, 분해는 IPHC 이후 제대로 작동하지 않았습니다.
    • 새로운 라디오 API 기능이 추가되어 지속적인 운반파 전송을 시작합니다.
    • IEEE802154 L2 보안에 있는 improvements/fixes의 몇 개
    • packet 프레임을 처리할 때 packet 누출을 수정했습니다.
    • 저하된CONFIG_IEEE802154_2015 Kconfig 옵션
    • IEEE802154 L2에 대한 간단한 Babblesim 에코 test를 추가했습니다.
    • 향상된 IEEE802154 L2 test 커버링
    • 다른 여러 소형 IEEE802154 L2 및 문서 improvements/fixes.
  • IPv4
    • IPv4 링크 로컬 주소가 없는 경우,
    • 수정:net_ipv4_is_ll_addr 보조 기능으로 LL 주소를 올바르게 식별합니다.
    • IPv4 분해에서 NULL 포인터 디레퍼런스를 고정합니다.
  • LwM2M
    • 새로운LWM2M_RD_CLIENT_EVENT_REG_UPDATE 이벤트가 추가되었습니다.
    • APIs에 누락된 const 자격증이 추가된 경우
    • packet 전송에서 socket 오류 처리 장치가 수정되었습니다.
    • 정규 등록으로 돌아가는 동안 LwM2M 컨텍스트 클리닝을 개선했습니다.
    • FW 업데이트 취소 동작에 대해 callback 함수를 등록할 수 있는 추가 가능성은 추가되었습니다.
    • LwM2M 전송 작업에 callback 함수를 등록할 수 있는 추가 가능성은 추가되었습니다.
    • 추가된 ISPO 전압 sensor 객체 지원
    • LwM2M 클라이언트가 정지되면 정지합니다.
    • 작은 CoAP RFC 불일치성을 수정하여 블록 전송에서 연속적인 데이터 블록이 동일한 토큰을 가지고 있다고 가정해서는 안됩니다.
    • TX에 블록 전송 지원이 추가되었습니다.
    • FW 업데이트 객체를 생성할 때 memory의 범위를 벗어난 접근이 가능한 것을 수정했습니다.
    • 전용 callback 함수 (set_socketoptions) 를 사용하여 기본 socket 옵션 구성을 취소할 수 있는 추가 가능성은 추가되었습니다.
    • LwM2M test의 커버링이 향상되었습니다.
    • 다른 몇 가지 작은 개선과 정화.
  • 기타
    • offloaded devices에 대한 일반적인 OFFLOADED_NETDEV_L2를 추가하여 offloaded 구현이 up/down. 인터페이스를 가져오면 감지 할 수 있도록합니다
    • net_buf_simple 루틴을 별도의 소스 파일에 파크로링했습니다.
    • net_pkt_cursor_operate()에서 NULL 포인터 디레퍼런스를 수정
    • net_mgmt를 다시 구현하여 message 줄을 내부적으로 사용했습니다. 이것은 또한 이전 구현과 함께 가능한 이벤트 손실을 수정했습니다.
    • net ping shell 명령에서 shell 얼어붙는 것을 피하기 위해 수정: 오류 처리
    • net stats 셸 명령어에서 Ethernet 오류 통계에 대한 로깅을 개선했습니다.
    • SLIP TAP 구현을 별도의 파일로 이동하여 Ethernet drivers에 대한 누락 소스에 대한 build 경고를 방지합니다.
    • echo_server 및 echo_client samples에서 userspace가 활성화되면 수정: 충돌
    • mqtt_sn_publisher sample에 수정: IPv6 지원
    • build 네트워크 stack에서 팔 클랜과 관련된 문제점을 수정했습니다.
    • 새로운 NET_IF_IPV6_NO_ND 및 NET_IF_IPV6_NO_MLD 인터페이스 플래그를 추가하여 인터페이스에서 각각 ND/MLD를 비활성화 할 수 있습니다.
    • network 인터페이스 mutex 보호, 개별 mutex를 사용하여 각 인터페이스, 대신 글로벌.
    • 새로운:zephyr:code-sample:aws-iot-mqtt
    • network 인터페이스 기능에서 몇 가지 부족한 NULL 포인터 체크를 추가했습니다.
  • OpenThread
    • 다음과 같은 OpenThread 플랫폼 APIs를 구현:
      • otPlatRadioSetMacFrameCounterIfLarger(),
      • otPlatCryptoEcdsaGenerateAndImportKey(),
      • otPlatCryptoEcdsaExportPublicKey(),
      • otPlatCryptoEcdsaVerifyUsingKeyRef(),
      • otPlatCryptoEcdsaSignUsingKeyRef()
    • CONFIG_OPENTHREAD_CSL_TIMEOUT 옵션이 추가되었습니다.
    • CONFIG_OPENTHREAD_EXCLUDE_TCPLP_LIB가 더 이상 필요하지 않습니다.
    • OpenThread에 대한 간단한 Babblesim 에코 test를 추가했습니다.
  • SNTP:
    • zsock_* 기능을 내부적으로 사용하기 위해 전환되었습니다.
  • 소켓:
    • 수정: SO_RCVBUF 및 SO_SNDBUF socket 옵션 핸들링, 그래서 그들은 TCP 창 크기를 올바르게 구성.
    • 수정: SO_SNDTIMEO socket 옵션 핸들링 - timeout 값은 무시되었고, socket는 사용되었을 때 차단되지 않는 모드처럼 행동했습니다.
    • TLS 소켓의 구현을 재개하여 다른 threads에서 병렬 TX/RX를 허용합니다.
    • 구현된 TLS handshake timeout
    • TCP 소켓에 대한 비동기 연결 지원이 추가되었습니다.
    • recv가 닫혀있는 socket에서 중단되지 않는 고정 차단
    • accept가 닫혀있는 socket에서 중단되지 않는 고정 차단
    • test 소켓의 커버링이 향상되었습니다.
  • TCP
    • 잘못된 TCP 통계를 개선하여 packet 처리 결과 보고.
    • CONFIG_NET_TCP_PKT_ALLOC_TIMEOUT를 추가하여 packet 할당 timeout를 구성할 수 있습니다.
    • TCP test의 커버링이 향상되었습니다.
    • 수정: TCP MSS 계산
    • 다시 전송된 데이터의 가능한 이중 확인을 고정합니다.
    • 수신 연결의 로컬 주소 설정이 고정되어 있습니다.
    • 특정 코너 경우에 고정 두 배의 TCP 컨텍스트 탈 참조
  • TFTP:
    • tftp_put() API를 추가하여 TFTP 작성 요청을 지원합니다.
    • 큰 파일을 읽을 수 있도록 tftp_callback_t callback를 도입했습니다.
    • struct tftpc 클라이언트 컨텍스트 구조를 재조정하여 여러 컨텍스트에서 병렬 통신을 가능하게 합니다.
  • UDP:
    • CONFIG_NET_UDP_MISSING_CHECKSUM는 이제 기본적으로 활성화되어 있습니다.
  • 웹소켓:
    • websocket_recv_msg에 적절한 timeout 조작이 구현되었습니다.
    • 파싱 길이 필드에서 수정: 암시형 변환, 이는 데이터 손실을 초래할 수 있습니다.
  • 와이파이:
    • Wi-Fi 셸에서 TWT (Target Wake Time) 구성 response 상태를 표시합니다.
    • 더 자세한 TWT response 매개 변수를 Wi-Fi 셸에서 인쇄했습니다.
    • 새로운 NET_EVENT_WIFI_TWT_SLEEP_STATE 이벤트를 추가하여 TWT 잠 상태를 알립니다.
    • 모든 보안 모드가 스캔에서 올바르게 표시되지 않은 문제가 해결되었습니다.
    • TWT 운영을 시작하기 전에 연결 상태 및 AP 기능 검증이 추가되었습니다.
    • TWT 간격은 밀리초에서 마이크로초로 변경되며, 간격 변수는 또한 이름이 변경됩니다.
    • 확장 된 전력 절약 구성 매개 변수는 듣기 간격과 깨어있는 모드로 있습니다.
    • CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS 옵션이 추가되었으며, RAW 이벤트와 함께 application에 NET_EVENT_WIFI_CMD_RAW_SCAN_RESULT (처리되지 않은) 스캔 결과를 제공 할 수 있습니다.
    • Wi-Fi management/shell 모듈의 다른 몇 가지 소형 fixes/cleanups
  • 자퍼프
    • TCP 벤치마크로 나글의 알고리즘을 비활성화하기 위해 추가 매개 변수를 추가했습니다.
    • TCP의 여러 입력 세션들을 처리하는 데 추가된 지원
    • Zperf thread 우선 순위와 stack 크기를 구성할 수 있도록 만들었습니다.
    • 모듈에 몇 가지 작은 청소가 있습니다.

USB

  • USB device 지원
    • MPS의 8 바이트의 MPS의 고정 제어 엔드포인트 처리
  • 새로운 실험 USB 지원
    • 새로운 device 지원에 대한 다양한 개선, 더 나은 문자열 설명기 지원, usbd_class_shutdown API 구현.
    • 새로운 device 지원에 USB 대량 저장 클래스 및 CDC ECM 클래스 구현이 추가되었습니다.

Library 및 Subsystem

  • 파일 시스템
    • CONFIG_FS_FATFS_REENTRANT를 추가하여 FAT FS 재입전 옵션을 활성화합니다.
    • LittleFS가 backend로fs_mount로fs_mount 반환된 code는 EFAULT로 FS_MOUNT_FLAG_NO_FORMAT로 호출되었을 때 EFAULT로 수정되었으며 지정된 LittleFS 영역은 아직 설치되지 않았거나 재편이 필요했기 때문에 설치할 수 없었습니다.
    • FAT FS 초기화 순서는 LittleFS와 일치하도록 업데이트되었으며, 글로벌 함수에서 디스크를 설치하려는 시도가 FAT FS를 이전에 등록하지 않았기 때문에 실패한 문제를 해결했습니다. FAT FS는 이제 POST_KERNEL에서 초기화되었습니다.
    • CONFIG_FS_LITTLEFS_FMP_DEV를 추가하여 devices 블록에서만 LittleFS를 사용할 수 있는 가능성을 가능하게 합니다. 예를 들어 Flash 지원 없이. 이전 동작을 유지하기 위해 옵션은 기본적으로 'y'로 설정됩니다.
  • IPC
    • ipc_service_close_instance()는 이제 bound 상태의 endpoint에만 작동합니다.
    • ICMSG: 결합 중에 경주 상태가 제거되었습니다.
    • ICMSG: 공유된 memory를 클리어하기 위해 내부 API를 제거합니다.
    • ICMSG: SHMEM에 대한 상호 배제 접근이 추가되었습니다.
    • 수정: CONFIG_OPENAMP_WITH_DCACHE
  • Management
    • MCUmgr transport shell에 선택적 입력 유효기간이 추가되어, 특정 기간 내에 완전한 MCUmgr packet이 수신되지 않으면 shell를 정상 작동으로 되돌릴 수 있습니다.CONFIG_MCUMGR_TRANSPORT_SHELL_INPUT_TIMEOUT 및 timeout 세트를 통해CONFIG_MCUMGR_TRANSPORT_SHELL_INPUT_TIMEOUT_TIME로 활성화 할 수 있습니다.
    • MCUmgr fs_mgmt 업로드 및 다운로드 이제 데이터를 전송할 때 처리량을 향상시키기 위해 handle 파일을 캐시합니다. 또한, 새로운 기능이 추가되었습니다. uploaded/downloaded 파일의 파일 핸들을 닫을 수 있도록 허용합니다. 시간이 일정 기간 동안 비동이 있으면 uploaded/downloaded 파일의 파일 핸들, timeout는MCUMGR_GRP_FS_FILE_AUTOMATIC_IDLE_CLOSE_TIME로 설정됩니다. 새로운 명령이 있습니다. 파일을 업로드 완료하면 파일을 닫을 수 있도록 사용할 수있는 오픈 파일 핸들을 닫을 수 있습니다.
    • MCUmgr에 의해 사용되는 SMP 프로토콜의 새로운 버전이 헤더에 도입되었습니다. 이 업데이트 프로토콜은 그룹별로 훨씬 더 상세한 오류 응답을 반환할 수 있습니다. 자세한 내용은MCUmgr SMP protocol specification <mcumgr_smp_protocol_specification>를 참조하십시오.
    • MCUmgr는 이제 안정적인 Zephyr API로 표시되었습니다.
    • MCUmgr UDP transport은 몇 가지 동시성 문제를 해결하기 위해 재조정되었으며 application이 이미 열려있는 동안 개방된 transport 기능을 호출 할 수있는 잠재적 문제를 수정하여 끝없는 로그 출력 루프를 유발합니다.
    • MCUmgr fs_mgmt 그룹 Kconfig Insecure 텍스트는 CMake warning 텍스트로 대체되어 CMake warning 해킹이 활성화되지 않은 경우 활성화됩니다. 이러한 해킹은 fs_mgmt 클라이언트가 허용하는 파일 액세스 보안을 보장하기 위해 사용될 수 있기 때문입니다.
    • MCUmgr fs_mgmt 파일 다운로드 문제가 해결되었습니다. 오프셋 매개 변수가 제공되었는지 확인되지 않았습니다.
    • MCUmgr fs_mgmt 파일 업로드 알림 해킹에서 문제가 해결되었습니다
    • MCUmgr img_mgmt 이미지 업로드 upgrade 필드를 잘못 확인하여 새로운 이미지가 application의 동일한 버전인지 확인하여 업로드 할 수 있도록 허용했습니다.
    • MCUmgr img_mgmt 그룹은 클라이언트가 제공한 SHA256 해시를 업로드된 이미지와 (지원 기능이 가능하다면) 확인하는 경우에만 완전한 SHA256 해시가 제공되었다.
    • MCUmgr Kconfig option은 select에서 depends on으로 변경됐습니다. MCUmgr에는 CONFIG_NET_BUF, CONFIG_ZCBOR, CONFIG_CRC가 필요하고 shell·UART·dummy transport에는 CONFIG_BASE64, UDP transport에는 CONFIG_NET_SOCKETS, fs_mgmt에는 CONFIG_FLASH, img_mgmt에는 CONFIG_FLASH와 CONFIG_IMG_MANAGER가 필요합니다.
    • MCUmgr img_mgmt 그룹은 이제 이미지와 슬롯 번호에 unsigned 정수 값을 사용합니다. 이 숫자는 결코 부정적이거나 서명되지 않았을 것입니다.
  • POSIX API
    • eventfd_read()와 eventfd_write()의 locking 방식을 개선해 초기 구현부터 있던 deadlock 가능성을 제거하고 성능을 약 10배 높였습니다.
    • POSIX <posix_support> threads, mutexes, condition variables, and barriers using native Zephyr counterparts. Zephyr의 POSIX 동기화 원시물은 원래 별도로 구현되었으며 결과적으로 유지보수가 줄어들었다. 불행히도, 이것은 POSIX를 고유의 버그와 경주 조건으로 개방했습니다. 앞으로, POSIX는 Zephyr의 동기화 및 스레드 API에 대한 모든 향상으로부터 혜택을 누릴 것입니다.
  • 보존
    • 저장 subsystem가 추가되었으며, 저장 memory drivers에 대한 향상된 기능을 추가하여 파티션, 마법 헤더 및 체크섬 검증을 허용합니다. 자세한 내용은retention API <retention_api> 참조하십시오. subsystem의 저장 지원은 실험적입니다.
    • Boot 모드 저장 모듈이 추가되어 setting/checking에 application의 boot 모드를 허용하고, MCUboot에 초기 지원이 추가되어 MCUboot 시리즈 복구 모드의 입구 방법으로 application을 사용할 수 있습니다. 자세한 내용은boot mode API <boot_mode_api> 참조하십시오.
  • RTIO
    • 추가 정책은 모든 sqe가 cqe를 생성한다는 것입니다 (전 이전에는 RTIO_SQE_TRANSACTION 항목은 거래의 마지막 sqe에서 cqe를 유발할 것입니다.
  • Power management
    • 새로운 정책 이벤트 API를 추가하여 향후 시스템을 깨울 것으로 예상되는 이벤트를 기록할 수 있습니다. 이것은 낮은 전력 상태가 사용될 수 있는 시스템에 영향을 미칠 수 있습니다.
    • 새로운 device 트리 속성 zephyr,pm-device-runtime-auto를 추가하여 device 실행 시 power management를 device에서 초기화 후 자동으로 활성화합니다.

HAL

  • Nordic
    • nrfx가 3.0.0 버전으로 업데이트되었습니다.
  • STM32
    • stm32cube: STM32F0를 큐브 버전으로 업데이트 V1.11.4
    • stm32cube: STM32F3의 큐브 버전으로 업데이트 된 V1.11.4
    • stm32cube: STM32L0의 큐브 버전으로 업데이트 된 V1.12.2
    • stm32cube: STM32U5의 큐브 버전으로 업데이트 된 V1.2.0
    • stm32cube: STM32WB의 큐브 버전으로 업데이트 된 V1.16.0
  • Raspberry Pi Pico
    • hal_rpi_pico를 1.5.0 버전으로 업데이트

MCUboot

  • MCUboot Kconfig option을 main Kconfig.zephyr에서 module 전용 modules/Kconfig.mcuboot로 옮겼습니다. Interactive Kconfig에서는 이제 Boot Options가 아니라 Modules 아래에 표시됩니다.
  • CMake가 west sign을 호출할 때 추가 argument를 전달하는 CONFIG_MCUBOOT_CMAKE_WEST_SIGN_PARAMS를 추가했습니다.

Storage

  • Fixed partition의 label property에 runtime으로 접근하는 CONFIG_FLASH_MAP_LABELS를 추가했습니다. CONFIG_FLASH_MAP_SHELL을 활성화하면 함께 켜지며 flash_map list command가 label을 별도 column에 표시합니다.

Trusted Firmware-M

  • Build 시 MbedTLS를 crypto, TLS, X.509의 세 library로 분리해 PSA Crypto API call을 Non-Secure에서 Secure 영역으로 routing할 수 있게 했습니다. 기존 TF-M·MbedTLS 통합의 header 충돌도 해결합니다.
  • psa_crypto sample을 다시 추가했습니다.

zcbor

zcbor를 0.6.0에서 0.7.0으로 갱신했습니다.

  • C++ 지원을 개선했습니다.
  • float16을 지원합니다.
  • Documentation을 개선했습니다.
  • -Wall과 -Wconversion warning option을 준수합니다.

Test 및 Sample

  • Zephyr CI에서 실행하는 BabbleSim 기반 802.15.4 networking test 2개를 추가했으며 하나는 OpenThread stack을 포함합니다.
  • native_posix와 nrf52_bsim에서 다수의 test를 수정하고 활성화했습니다.
  • LittleFS sample에 nrf52840dk_nrf52840용 SPI example configuration을 추가했습니다.
  • 모든 test를 새 Ztest API로 이전했고 legacy Ztest는 폐기 예정으로 지정했습니다.

Source

출처

영어 원문에는 문단, 문서 지시문, 표, 코드, 코드 심벌, 경로를 그대로 보존했습니다.