| :orphan: |
| |
| .. _zephyr_3.3: |
| |
| Zephyr 3.3.0 (Working Draft) |
| ############################ |
| |
| We are pleased to announce the release of Zephyr version 3.3.0. |
| |
| Major enhancements with this release include: |
| |
| The following sections provide detailed lists of changes by component. |
| |
| Security Vulnerability Related |
| ****************************** |
| |
| API Changes |
| *********** |
| |
| Changes in this release |
| ======================= |
| |
| * Newlib nano variant is no longer selected by default when |
| :kconfig:option:`CONFIG_NEWLIB_LIBC` is selected. |
| :kconfig:option:`CONFIG_NEWLIB_LIBC_NANO` must now be explicitly selected in |
| order to use the nano variant. |
| |
| * Bluetooth: Add extra options to bt_le_per_adv_sync_transfer_subscribe to |
| allow disabling sync reports, and enable sync report filtering. these two |
| options are mutually exclusive. |
| |
| * Bluetooth: :kconfig:option:`CONFIG_BT_PER_ADV_SYNC_TRANSFER_RECEIVER` |
| and :kconfig:option:`CONFIG_BT_PER_ADV_SYNC_TRANSFER_SENDER` have been |
| added to enable the PAST implementation rather than |
| :kconfig:option:`CONFIG_BT_CONN`. |
| * Flashdisk: :kconfig:option:`CONFIG_DISK_FLASH_VOLUME_NAME`, |
| :kconfig:option:`CONFIG_DISK_FLASH_DEV_NAME`, |
| :kconfig:option:`CONFIG_DISK_FLASH_START`, |
| :kconfig:option:`CONFIG_DISK_FLASH_MAX_RW_SIZE`, |
| :kconfig:option:`CONFIG_DISK_ERASE_BLOCK_SIZE`, |
| :kconfig:option:`CONFIG_DISK_FLASH_ERASE_ALIGNMENT`, |
| :kconfig:option:`CONFIG_DISK_VOLUME_SIZE` and |
| :kconfig:option:`CONFIG_DISK_FLASH_SECTOR_SIZE` Kconfig options have been |
| removed in favor of new :dtcompatible:`zephyr,flash-disk` devicetree binding. |
| |
| * Regulator APIs previously located in ``<zephyr/drivers/regulator/consumer.h>`` |
| are now part of ``<zerphyr/drivers/regulator.h>``. |
| |
| * Starting from this release ``zephyr-`` prefixed tags won't be created |
| anymore. The project will continue using ``v`` tags, for example ``v3.3.0``. |
| |
| * Bluetooth: Deprecate the Bluetooth logging subsystem in favor of the Zephyr |
| standard logging system. To enable debugging for a particular module in the |
| Bluetooth subsystem, enable `CONFIG_BT_(module name)_LOG_LEVEL_DBG` instead of |
| `CONFIG_BT_DEBUG_(module name)`. |
| |
| * MCUmgr img_mgmt now requires that a full sha256 hash to be used when |
| uploading an image to keep track of the progress, where the sha256 hash |
| is of the whole file being uploaded (different to the hash used when getting |
| image states). Use of a truncated hash or non-sha256 hash will still work |
| but will cause issues and failures in client software with future updates |
| to Zephyr/MCUmgr such as image verification. |
| |
| * MCUmgr handlers no longer need to be registered by the application code, |
| handlers just need to use a define which will then call the supplied |
| registration function at boot-up. If applications register this then |
| those registrations should be removed to prevent registering the same |
| handler multiple times. |
| |
| * MCUmgr Bluetooth and UDP transports no longer need to be registered by the |
| application code, these will now automatically be registered at bootup (this |
| feature can be disabled for the UDP transport by setting |
| :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_UDP_AUTOMATIC_INIT`). If |
| applications register transports then those registrations should be removed |
| to prevent registering the same transport multiple times. |
| |
| * MCUmgr transport Kconfigs have changed from ``select`` to ``depends on`` |
| which means that for applications using the Bluetooth transport, |
| applications will now need to enable the following: |
| |
| * :kconfig:option:`CONFIG_BT` |
| * :kconfig:option:`CONFIG_BT_PERIPHERAL` |
| |
| For CDC or serial transports: |
| |
| * :kconfig:option:`CONFIG_CONSOLE` |
| |
| For shell transport: |
| |
| * :kconfig:option:`CONFIG_SHELL` |
| * :kconfig:option:`CONFIG_SHELL_BACKEND_SERIAL` |
| |
| For UDP transport: |
| |
| * :kconfig:option:`CONFIG_NETWORKING` |
| * :kconfig:option:`CONFIG_NET_UDP` |
| |
| * MCUmgr fs_mgmt hash/checksum function, type and variable names have been |
| changed to be prefixed with ``fs_mgmt_`` to retain alignment with other |
| zephyr and MCUmgr APIs. |
| |
| * Python's argparse argument parser usage in Zephyr scripts has been updated |
| to disable abbreviations, any future python scripts or python code updates |
| must also disable allowing abbreviations by using ``allow_abbrev=False`` |
| when setting up ``ArgumentParser()``. |
| |
| This may cause out-of-tree scripts or commands to fail if they have relied |
| upon their behaviour previously, these will need to be updated in order for |
| building to work. As an example, if a script argument had ``--reset-type`` |
| and an out-of-tree script used this by passing ``--reset`` then it will need |
| to be updated to use the full argument name, ``--reset-type``. |
| |
| * Rewrote the CAN API to utilize flag bitfields instead discrete of struct |
| members for indicating standard/extended CAN ID, Remote Transmission Request |
| (RTR), and added support for filtering of CAN-FD format frames. |
| |
| Removed APIs in this release |
| ============================ |
| |
| * Removed :kconfig:option:`CONFIG_COUNTER_RTC_STM32_LSE_DRIVE*` |
| This should now be configured using the ``driving_capability`` property of |
| LSE clock |
| |
| * Removed :kconfig:option:`CONFIG_COUNTER_RTC_STM32_LSE_BYPASS` |
| This should now be configured using the new ``lse_bypass`` property of |
| LSE clock |
| |
| * Removed :kconfig:option:`CONFIG_COUNTER_RTC_STM32_BACKUP_DOMAIN_RESET` |
| |
| * Removed deprecated tinycbor module, code that uses this module should be |
| updated to use zcbor as a replacement. |
| |
| * Removed deprecated GPIO flags used for setting debounce, drive strength and |
| voltage level. All drivers now use vendor-specific flags as needed. |
| |
| * Removed deprecated ``UTIL_LISTIFY`` helper macro. |
| |
| * Removed deprecated ``pwm_pin*`` family of functions from the PWM API. |
| |
| * Removed deprecated ``nvs_init`` function from the NVS filesystem API. |
| |
| * Removed deprecated ``DT_CHOSEN_*_LABEL`` helper macros. |
| |
| Deprecated in this release |
| ========================== |
| |
| * C++ library Kconfig options have been renamed to improve consistency. See |
| below for the list of deprecated Kconfig options and their replacements: |
| |
| .. table:: |
| :align: center |
| |
| +----------------------------------------+------------------------------------------------+ |
| | Deprecated | Replacement | |
| +========================================+================================================+ |
| | :kconfig:option:`CONFIG_CPLUSPLUS` | :kconfig:option:`CONFIG_CPP` | |
| +----------------------------------------+------------------------------------------------+ |
| | :kconfig:option:`CONFIG_EXCEPTIONS` | :kconfig:option:`CONFIG_CPP_EXCEPTIONS` | |
| +----------------------------------------+------------------------------------------------+ |
| | :kconfig:option:`CONFIG_RTTI` | :kconfig:option:`CONFIG_CPP_RTTI` | |
| +----------------------------------------+------------------------------------------------+ |
| | :kconfig:option:`CONFIG_LIB_CPLUSPLUS` | :kconfig:option:`CONFIG_LIBCPP_IMPLEMENTATION` | |
| +----------------------------------------+------------------------------------------------+ |
| |
| * MCUmgr subsystem, specifically the SMP transport API, is dropping `zephyr_` |
| prefix, deprecating prefixed functions and callback type definitions with the |
| prefix and replacing them with with prefix-less variants. |
| The :c:struct:`zephyr_smp_transport` type, representing transport object, |
| is now replaced with :c:struct:`smp_transport`, and the later one is used, |
| instead of the former one, by all prefix-less functions. |
| |
| Deprecated functions and their replacements: |
| |
| .. table:: |
| :align: center |
| |
| +-------------------------------------+---------------------------------------+ |
| | Deprecated | Drop in replacement | |
| +=====================================+=======================================+ |
| | :c:func:`zephyr_smp_transport_init` | :c:func:`smp_transport_init` | |
| +-------------------------------------+---------------------------------------+ |
| | :c:func:`zephyr_smp_rx_req` | :c:func:`smp_rx_req` | |
| +-------------------------------------+---------------------------------------+ |
| | :c:func:`zephyr_smp_alloc_rsp` | :c:func:`smp_alloc_rsp` | |
| +-------------------------------------+---------------------------------------+ |
| | :c:func:`zephyr_smp_free_buf` | :c:func:`smp_free_buf` | |
| +-------------------------------------+---------------------------------------+ |
| |
| Deprecated callback types and their replacements: |
| |
| .. table:: |
| :align: center |
| |
| +---------------------------------------------+---------------------------------------+ |
| | Deprecated | Drop in replacement | |
| +=============================================+=======================================+ |
| | :c:func:`zephyr_smp_transport_out_fn` | :c:func:`smp_transport_out_fn` | |
| +---------------------------------------------+---------------------------------------+ |
| | :c:func:`zephyr_smp_transport_get_mtu_fn` | :c:func:`smp_transport_get_mtu_fn` | |
| +---------------------------------------------+---------------------------------------+ |
| | :c:func:`zephyr_smp_transport_ud_copy_fn` | :c:func:`smp_transport_ud_copy_fn` | |
| +---------------------------------------------+---------------------------------------+ |
| | :c:func:`zephyr_smp_transport_ud_free_fn` | :c:func:`smp_transport_ud_free_fn` | |
| +---------------------------------------------+---------------------------------------+ |
| |
| NOTE: Only functions are marked as ``__deprecated``, type definitions are not. |
| |
| * STM32 Ethernet Mac address Kconfig related symbols (:kconfig:option:`CONFIG_ETH_STM32_HAL_RANDOM_MAC`, |
| :kconfig:option:`CONFIG_ETH_STM32_HAL_MAC4`, ...) have been deprecated in favor |
| of the use of zephyr generic device tree ``local-mac-address`` and ``zephyr,random-mac-address`` |
| properties. |
| |
| * STM32 RTC source clock should now be configured using devicetree. |
| Related Kconfig :kconfig:option:`CONFIG_COUNTER_RTC_STM32_CLOCK_LSI` and |
| :kconfig:option:`CONFIG_COUNTER_RTC_STM32_CLOCK_LSE` options are now |
| deprecated. |
| |
| * STM32 Interrupt controller Kconfig symbols such as :kconfig:option:`CONFIG_EXTI_STM32_EXTI0_IRQ_PRI` |
| are removed. Related IRQ prioritues should now be configured in device tree. |
| |
| * File backend for settings APIs and Kconfig options were deprecated: |
| |
| :c:func:`settings_mount_fs_backend` in favor of :c:func:`settings_mount_file_backend` |
| |
| :kconfig:option:`CONFIG_SETTINGS_FS` in favor of :kconfig:option:`CONFIG_SETTINGS_FILE` |
| |
| :kconfig:option:`CONFIG_SETTINGS_FS_DIR` in favor of creating all parent |
| directories from :kconfig:option:`CONFIG_SETTINGS_FILE_PATH` |
| |
| :kconfig:option:`CONFIG_SETTINGS_FS_FILE` in favor of :kconfig:option:`CONFIG_SETTINGS_FILE_PATH` |
| |
| :kconfig:option:`CONFIG_SETTINGS_FS_MAX_LINES` in favor of :kconfig:option:`CONFIG_SETTINGS_FILE_MAX_LINES` |
| |
| * PCIe APIs :c:func:`pcie_probe` and :c:func:`pcie_bdf_lookup` have been |
| deprecated in favor of a centralized scan of available PCIe devices. |
| |
| * POSIX API |
| |
| * Deprecated :c:macro:`PTHREAD_COND_DEFINE`, :c:macro:`PTHREAD_MUTEX_DEFINE` in favour of the |
| standard :c:macro:`PTHREAD_COND_INITIALIZER` and :c:macro:`PTHREAD_MUTEX_INITIALIZER`. |
| * Deprecated ``<fcntl.h>``, ``<sys/stat.h>`` header files in the minimal libc in favour of |
| ``<zephyr/posix/fcntl.h>`` and ``<zephyr/posix/sys/stat.h>``. |
| |
| * SPI DT :c:func:`spi_is_ready` function has been deprecated in favor of :c:func:`spi_is_ready_dt`. |
| |
| * LwM2M APIs using string references as LwM2M paths has been deprecated in favor of functions |
| using :c:struct:`lwm2m_path_obj` instead. |
| |
| Stable API changes in this release |
| ================================== |
| |
| * MCUmgr events have been reworked to use a single, unified callback system. |
| This allows better customisation of the callbacks with a lower flash size. |
| Applications using the existing callback system will need to be upgraded to |
| use the new API by following the :ref:`migration guide <mcumgr_cb_migration>` |
| |
| * :c:func:`net_pkt_get_frag`, :c:func:`net_pkt_get_reserve_tx_data` and |
| :c:func:`net_pkt_get_reserve_rx_data` functions are now requiring to specify |
| the minimum fragment length to allocate, so that they work correctly also in |
| case :kconfig:option:`CONFIG_NET_BUF_VARIABLE_DATA_SIZE` is enabled. |
| Applications using this APIs will need to be updated to provide the expected |
| fragment length. |
| |
| * Marked the Controller Area Network (CAN) controller driver API as stable. |
| |
| New APIs in this release |
| ======================== |
| |
| Kernel |
| ****** |
| |
| Architectures |
| ************* |
| |
| * ARM |
| |
| * ARM |
| |
| * ARM64 |
| |
| * Implemented ASID support for ARM64 MMU |
| |
| * RISC-V |
| |
| * Xtensa |
| |
| Bluetooth |
| ********* |
| |
| * Audio |
| |
| * Refactored the handling of extended and periodic advertising in the BAP |
| broadcast source. |
| * Implemented the Common Audio Profile initiator role. |
| * Added support for Broadcast source subgroup and BIS codec configuration. |
| * Renamed the CSI and VCP functionality to use the "P" postfix for profile |
| instead of "S" for service. |
| * Added a broadcast source metadata update function. |
| * Added (un)binding of audio ISO structs to Audio Streams. |
| * Added support for encrypted broadcast. |
| * Added the ability to change the supported contexts in PACS. |
| |
| * Host |
| |
| * Added a new ``BT_CONN_INTERVAL_TO_US`` utility macro. |
| * Made the HCI fragmentation logic asynchronous, thus fixing a long-standing |
| potential deadlock between data and control procedures. |
| * Added the local advertising address to :c:func:`bt_le_ext_adv_get_info`. |
| * Improved the implementation of :c:func:`bt_disable` to handle additional |
| edge cases. |
| * Removed all Bluetooth-specific logging macros and functionality, switching |
| instead to the OS-wide ones. |
| * Added a new :c:func:`bt_le_per_adv_sync_lookup_index` function. |
| * Fixed missing calls to bt_le_per_adv_sync_cb.term when deleting a periodic |
| advertising sync object. |
| * Added local advertising address to bt_le_ext_adv_info. |
| * Added the printing of function names by default when logging. |
| * Changed the policy for advertising restart after disconneciton, which is now |
| done only for connections in the peripheral role. |
| * Added a guard to prevent bonding to the same device more than once. |
| * Refactored crypto functionality from SMP into its own folder, and added the |
| h8 crypto function. |
| * Changed the behavior when receiving an L2CAP K-frame larger than the MPS, |
| disconnecting instead of truncating it. |
| * Added a new :kconfig:option:`BT_ID_ALLOW_UNAUTH_OVERWRITE` that allows |
| unauthorized bond overrides with multiple identities. |
| * Added suppor for the object calculate checksum feature in OTS. |
| * Changed back the semantics of :kconfig:option:`BT_PRIVACY` to refer to local |
| RPA address generation. |
| * Modified the SMP behavior when outside a pairing procedure. The stack no |
| longer sends unnecessary Pairing Failed PDUs in that state. |
| |
| * Mesh |
| |
| * Changed the default advertiser to be extended advertiser. |
| * Made the provisioning feature set dynamic. |
| * Made the maximum number of simultaneous Bluetooth connections that the mesh |
| stack can use configurable via :kconfig:option:`BT_MESH_MAX_CONN`. |
| * Changed the advertising duration calculation to avoid imprecise estimations. |
| * Added the :kconfig:option:`BT_MESH_FRIEND_ADV_LATENCY` Kconfig option. |
| |
| * Controller |
| |
| * Implemented the Read/Write Connection Accept Timeout HCI commands. |
| * Implemented the Sleep Clock Accuracy Update procedure. |
| * Implemented additional ISO-related HCI commands. |
| * Implemented ISO-AL SDU buffering and PDU release timeout. |
| * Added support for hanlding fragmented AD without chaining PDUs. |
| * Added support for multiple memory pools for advertising PDUs |
| * Added support for retrying the automatic peripheral connection parameter |
| update. |
| * Added support for deferring anchor points moves using an external hook. |
| * Added a new ``LL_ASSERT_MSG`` macro for verbose assertions. |
| * Added long control PDU support. |
| * Added support for Broadcast ISO encryption. |
| * Added support for central CIS/CIG, including ULL and Nordic LLL. |
| * Added support for peripheral CIS/CIG in the Nordic LLL. |
| * Added the :kconfig:option:`BT_CTLR_SLOT_RESERVATION_UPDATE` Kconfig option. |
| * Integrated ISOAL for ISO broadcast. |
| |
| Boards & SoC Support |
| ******************** |
| |
| * Added support for these SoC series: |
| |
| * GigaDevice GD32L23X |
| * GigaDevice GD32A50X |
| |
| * Removed support for these SoC series: |
| |
| * Made these changes in other SoC series: |
| |
| * Changes for ARC boards: |
| |
| * Added support for these ARM boards: |
| |
| * GigaDevice GD32L233R-EVAL |
| * GigaDevice GD32A503V-EVAL |
| |
| * Added support for these ARM64 boards: |
| |
| * i.MX93 (Cortex-A) EVK board |
| * Khadas Edge-V board |
| * QEMU Virt KVM |
| |
| * Removed support for these ARM boards: |
| |
| * Removed support for these X86 boards: |
| |
| * Added support for these RISC-V boards: |
| |
| * Added LCD support for ``longan_nano`` board. |
| |
| * Added support for these Xtensa boards: |
| |
| * Removed support for these Xtensa boards: |
| |
| * Made these changes in ARM boards: |
| |
| * The scratch partition has been removed for the following Nordic boards and |
| flash used by this area re-assigned to other partitions to free up space |
| and rely upon the swap-using-move algorithm in MCUboot (which does not |
| suffer from the same faults or stuck image issues as swap-using-scratch |
| does): |
| ``nrf21540dk_nrf52840`` |
| ``nrf51dk_nrf51422`` |
| ``nrf51dongle_nrf51422`` |
| ``nrf52833dk_nrf52833`` |
| ``nrf52840dk_nrf52811`` |
| ``nrf52840dk_nrf52840`` |
| ``nrf52840dongle_nrf52840`` |
| ``nrf52dk_nrf52805`` |
| ``nrf52dk_nrf52810`` |
| ``nrf52dk_nrf52832`` |
| ``nrf5340dk_nrf5340`` |
| ``nrf9160dk_nrf52840`` |
| ``nrf9160dk_nrf9160`` |
| |
| Note that MCUboot and MCUboot image updates from pre-Zephyr 3.3 might be |
| incompatible with Zephyr 3.3 onwards and vice versa. |
| |
| * The default console for the ``nrf52840dongle_nrf52840`` board has been |
| changed from physical UART (which is not connected to anything on the |
| board) to use USB CDC instead. |
| |
| * Made these changes in other boards: |
| |
| * The nrf52_bsim (natively simulated nRF52 device with BabbleSim) now models |
| a nRF52833 instead of a nRF52832 device |
| |
| * Added support for these following shields: |
| |
| * nPM6001 EK |
| * nPM1100 EK |
| |
| Build system and infrastructure |
| ******************************* |
| |
| * Code relocation |
| |
| * ``zephyr_code_relocate`` API has changed to accept a list of files to |
| relocate and a location to place the files. |
| |
| * Sysbuild |
| |
| * Issue with duplicate sysbuild image name causing an infinite cmake loop |
| has been fixed. |
| |
| * Issue with board revision not being passed to sysbuild images has been |
| fixed. |
| |
| * Userspace |
| |
| * Userspace option to disable using the ``relax`` linker option has been |
| added. |
| |
| * Tools |
| |
| * Static code analyser (SCA) tool support has been added. |
| |
| Drivers and Sensors |
| ******************* |
| |
| * ADC |
| |
| * CAN |
| |
| * Added RX overflow counter statistics support (STM32 bxCAN, Renesas R-Car, |
| and NXP FlexCAN). |
| * Added support for TWAI on ESP32-C3. |
| * Added support for multiple MCP2515 driver instances. |
| * Added Kvaser PCIcan driver and support for using it under QEMU. |
| * Made the fake CAN test driver generally available. |
| * Added support for compiling the Native Posix Linux CAN driver against Linux |
| kernel headers prior to v5.14. |
| * Removed the CONFIG_CAN_HAS_RX_TIMESTAMP and CONFIG_CAN_HAS_CANFD Kconfig |
| helper symbols. |
| |
| * Clock control |
| |
| * Counter |
| |
| * STM32 RTC based counter should now be configured using device tree. |
| * Added Timer based driver for GigaDevice GD32 SoCs. |
| |
| * Crypto |
| |
| * DAC |
| |
| * DFU |
| |
| * Remove :c:macro:`BOOT_TRAILER_IMG_STATUS_OFFS` in favor a two new functions; |
| :c:func:`boot_get_area_trailer_status_offset` and :c:func:`boot_get_trailer_status_offset` |
| |
| * Disk |
| |
| * STM32 SD host controller clocks are now configured via devicetree. |
| * Zephyr flash disks are now configured using the :dtcompatible:`zephyr,flash-disk` |
| devicetree binding |
| * Flash disks can be marked as read only by setting the ``read-only`` property |
| on the linked flash device partition. |
| |
| * Display |
| |
| * DMA |
| |
| * Adjust incorrect dma1 clock source for GD32 gd32vf103 SoC. |
| * STM32 DMA variable scope cleanups |
| * Intel GPDMA linked list transfer descriptors appropriately aligned to 64 byte addresses |
| * Intel GPDMA fix bug in transfer configuration to initialize cfg_hi and cfg_lo |
| * STM32 DMA Support for the STM32MP1 series |
| * SAM XDMAC fixes to enable usage with SPI DMA transfers |
| * Intel GPDMA fix to return errors on dma stop |
| * Intel GPDMA disable interrupts when unneeded |
| * Intel GPDMA fix for register/ip ownership |
| * STM32U5 GPDMA bug fix for busy flag |
| * STM32U5 Suspend and resume features added |
| * Intel GPDMA Report total bytes read/written (linear link position) in dma status |
| * DMA API get attribute function added, added attributes for scatter/gather blocks available |
| to Intel HDA and Intel GPDMA drivers. |
| * Intel GPDMA Power management functionality added |
| * Intel HDA Power management functionality added |
| * GD32 Slot used for peripheral selection |
| * GD32 memory to memory support added |
| * ESP32C3 GDMA driver added |
| * Intel HDA underrun/overrun (xrun) handling and reporting added |
| * Intel GPDMA underrun/overrun (xrun) handling nad reporting added |
| * DMA API start/stop are defined to be repeatable callable with test cases added. |
| STM32 DMA, Intel HDA, and Intel GPDMA all comply with the contract after patches. |
| * NXP EDMA Unused mutex removed |
| |
| * EEPROM |
| |
| * Added fake EEPROM driver for testing purposes. |
| |
| * Entropy |
| |
| * ESPI |
| |
| * Ethernet |
| |
| * STM32: Default Mac address configuration is now uid based. Optionally, user can |
| configure it to be random or provide its own address using device tree. |
| |
| * Flash |
| |
| * Flash: Moved CONFIG_FLASH_FLEXSPI_XIP into the SOC level due to the flexspi clock initialization occurring in the SOC level. |
| |
| * NRF: Added CONFIG_SOC_FLASH_NRF_TIMEOUT_MULTIPLIER to allow tweaking the timeout of flash operations. |
| |
| * spi_nor: Added property mxicy,mx25r-power-mode to jedec,spi-nor binding for controlling low power/high performance mode on Macronix MX25R* Ultra Low Power flash devices. |
| |
| * spi_nor: Added check if the flash is busy during init. This used to cause |
| the flash device to be unavailable until the system was restarted. The fix |
| waits for the flash to become ready before continuing. In cases where a |
| full flash erase was started before a restart, this might result in several |
| minutes of waiting time (depending on flash size and erase speed). |
| |
| * FPGA |
| |
| * Add preliminary support for the Lattice iCE40. |
| * Add Qomu board sample. |
| |
| * GPIO |
| |
| * Added driver for nPM6001 PMIC GPIOs |
| |
| * I2C |
| |
| * SAM0 Fixed spurious trailing data by moving stop condition from thread into ISR |
| * I2C Shell command adds ability to configure bus speed through `i2c speed` |
| * ITE usage of instruction local memory support |
| * NPCX bus recovery on transaction timeout |
| * ITE log status of registers on transfer failure |
| * ESP32 enable configuring a hardware timeout to account for longer durations of clock stretching |
| * ITE fix bug where an operation was done outside of the driver mutex |
| * STM32 Support 10 bit addressing for target mode |
| * NRFX TWIM Make transfer timeout configurable |
| * STM32 Use devicetree for i2c clock source |
| * DW Bug fix for clearing FIFO on initialization |
| * NPCX simplify smb bank register usage |
| * NXP LPI2C enable target mode |
| * NXP FlexComm Adds semaphore for shared usage of bus |
| * STM32 Power management support added |
| * I2C Allow dumping messages in the log for all transactions, reads and writes |
| |
| * I2S |
| |
| * I3C |
| |
| * IEEE 802.15.4 |
| |
| * Interrupt Controller |
| |
| * STM32: Driver configuration and initialization is now based on device tree |
| |
| * IPM |
| |
| * KSCAN |
| |
| * LED |
| |
| * MBOX |
| |
| * MEMC |
| |
| * PCIE |
| |
| * PECI |
| |
| * Pin control |
| |
| * Common pin control properties are now defined at root level in a single |
| file: :zephyr_file:`dts/bindings/pinctrl/pincfg-node.yaml`. Pin control |
| bindings are expected to include it at the level they need. For example, |
| drivers using the grouping representation approach need to include it at |
| grandchild level, while drivers using the node approach need to include it |
| at the child level. This change will only impact out-of-tree pin control |
| drivers, sinc all in-tree drivers have been updated. |
| * Added NXP S32 SIUL2 driver |
| * Added Nuvoton NuMicro driver |
| * Added Silabs Gecko driver |
| * Added support for i.MX93 in the i.MX driver |
| * Added support for GD32L23x/GD32A50x in the Gigadevice driver |
| |
| * PWM |
| |
| * Power domain |
| |
| * Regulators |
| |
| * Completed an API overhaul so that devices like PMICs can be supported. The |
| API now offers a clear and concise API that allows to perform the following |
| operations: |
| |
| - Enable/disable regulator output (reference counted) |
| - List supported voltages |
| - Get/set operating voltage |
| - Get/set maximum current |
| - Get/set operating mode |
| - Obtain errors, e.g. overcurrent. |
| |
| The devicetree part maintains compatibility with Linux bindings, for example, |
| the following properties are well supported: |
| |
| - ``regulator-boot-on`` |
| - ``regulator-always-on`` |
| - ``regulator-min-microvolt`` |
| - ``regulator-max-microvolt`` |
| - ``regulator-min-microamp`` |
| - ``regulator-max-microamp`` |
| - ``regulator-allowed-modes`` |
| - ``regulator-initial-mode`` |
| |
| A common driver class layer takes care of the common functionality so that |
| driver implementations are kept simple. For example, allowed voltage ranges |
| are verified before calling into the driver. |
| |
| An experimental parent API to configure DVS (Dynamic Voltage Scaling) has |
| also been introduced. |
| |
| * Refactored NXP PCA9420 driver to align with the new API. |
| * Added support for nPM6001 PMIC (LDO and BUCK converters). |
| * Added support for nPM1100 PMIC (allows to dynamically change its mode). |
| * Added a new test that allows to verify regulator output voltage using the |
| ADC API. |
| * Added a new test that checks API behavior provided we have a well-behaved |
| driver. |
| |
| * Reset |
| |
| * SDHC |
| |
| * i.MX RT USDHC: |
| |
| - Support HS400 and HS200 mode. This mode is used with eMMC devices, |
| and will enable high speed operation for those cards. |
| - Support DMA operation on SOCs that do not support noncacheable memory, |
| such as the RT595. DMA will enable higher performance SD modes, |
| such as HS400 and SDR104, to reliably transfer data using the |
| SD host controller |
| |
| * Sensor |
| |
| * Refactored all drivers to use :c:macro:`SENSOR_DEVICE_DT_INST_DEFINE` to |
| enable a new sensor info iterable section and shell command. See |
| :kconfig:option:`CONFIG_SENSOR_INFO`. |
| * Refactored all sensor devicetree bindings to inherit new base sensor device |
| properties in :zephyr_file:`dts/bindings/sensor/sensor-device.yaml`. |
| * Added sensor attribute support to the shell. |
| * Added MCUX and STM32 quadrature encoder drivers. |
| * Added ESP32 and RaspberryPi Pico die temperature sensor drivers. |
| * Added TDK InvenSense ICM42688 six axis IMU driver. |
| * Added TDK InvenSense ICP10125 pressure and temperature sensor driver. |
| * Added AMS AS5600 magnetic angle sensor driver. |
| * Added AMS AS621x temperature sensor driver. |
| * Added HZ-Grow R502A fingerprint sensor driver. |
| * Enhanced FXOS8700, FXAS21002, and BMI270 drivers to support SPI in addition |
| to I2C. |
| * Enhanced ST LIS2DW12 driver to support freefall detection. |
| |
| * Serial |
| |
| * SPI |
| |
| * Added dma support for GD32 driver. |
| |
| * Timer |
| |
| * USB |
| |
| * STM32F1: Clock bus configuration is not done automatically by driver anymore. |
| It is user's responsibility to configure the proper bus prescaler using clock_control |
| device tree node to achieve a 48MHz bus clock. Note that, in most cases, core clock |
| is 72MHz and default prescaler configuration is set to achieve 48MHz USB bus clock. |
| Prescaler only needs to be configured manually when core clock is already 48MHz. |
| |
| * STM32 (non F1): Clock bus configuration is now expected to be done in device tree |
| using ``clocks`` node property. When a dedicated HSI 48MHz clock is available on target, |
| is it configured by default as the USB bus clock, but user has the ability to select |
| another 48MHz clock source. When no HSI48 is available, a specific 48MHz bus clock |
| source should be configured by user. |
| |
| * W1 |
| |
| * Watchdog |
| |
| * Added driver for nPM6001 PMIC Watchdog. |
| * Added free watchdog driver for GigaDevice GD32 SoCs. |
| * Added window watchdog driver for GigaDevice GD32 SoCs. |
| |
| * WiFi |
| |
| Networking |
| ********** |
| |
| * CoAP: |
| |
| * Implemented insertion of a CoAP option at arbitrary position. |
| |
| * Ethernet: |
| |
| * Fixed AF_PACKET/SOCK_RAW/IPPROTO_RAW sockets on top of Ethernet L2. |
| * Added support for setting Ethernet MAC address with net shell. |
| * Added check for return values of the driver start/stop routines when |
| bringing Ethernet interface up. |
| * Added ``unknown_protocol`` statistic for packets with unrecognized protocol |
| field, instead of using ``error`` for this purpose. |
| |
| * HTTP: |
| |
| * Reworked HTTP headers: moved methods to a separate header, added status |
| response codes header and grouped HTTP headers in a subdirectory. |
| * Used :c:func:`zsock_poll` for HTTP timeout instead of a delayed work. |
| |
| * ICMPv4: |
| |
| * Added support to autogenerate Echo Request payload. |
| |
| * ICMPv6: |
| |
| * Added support to autogenerate Echo Request payload. |
| * Fixed stats counting for ND packets. |
| |
| * IEEE802154: |
| |
| * Improved short address support. |
| * Improved IEEE802154 context thread safety. |
| * Decoupled IEEE802154 parameters from :c:struct:`net_pkt` into |
| :c:struct:`net_pkt_cb_ieee802154`. |
| * Multiple other minor fixes/improvements. |
| |
| * IPv4: |
| |
| * IPv4 packet fragmentation support has been added, this allows large packets |
| to be split up before sending or reassembled during receive for packets that |
| are larger than the network device MTU. This is disabled by default but can |
| be enabled with :kconfig:option:`CONFIG_NET_IPV4_FRAGMENT`. |
| * Added support for setting/reading DSCP/ECN fields. |
| * Fixed packet leak in IPv4 address auto-configuration procedure. |
| * Added support for configuring IPv4 addresses with ``net ipv4`` shell |
| command. |
| * Zephyr now adds IGMP all systems 224.0.0.1 address to all IPv4 network |
| interfaces by default. |
| |
| * IPv6: |
| |
| * Made it possible to add route to router's link local address. |
| * Added support for setting/reading DSCP/ECN fields. |
| * Improved test coverage for IPv6 fragmentation. |
| * Added support for configuring IPv6 addresses with ``net ipv6`` shell |
| command. |
| * Added support for configuring IPv6 routes with ``net route`` shell |
| command. |
| |
| * LwM2M: |
| |
| * Renamed ``LWM2M_RD_CLIENT_EVENT_REG_UPDATE_FAILURE`` to |
| :c:macro:`LWM2M_RD_CLIENT_EVENT_REG_TIMEOUT`. This event is now used in case |
| of registration timeout. |
| * Added new LwM2M APIs for historical data storage for LwM2M resource. |
| * Updated LwM2M APIs to use ``const`` pointers when possible. |
| * Added shell command to lock/unlock LwM2M registry. |
| * Added shell command to enable historical data cache for a resource. |
| * Switched to use ``zsock_*`` functions internally. |
| * Added uCIFI LPWAN (ID 3412) object implementation. |
| * Added BinaryAppDataContainer (ID 19) object implementation. |
| * Deprecated :kconfig:option:`CONFIG_LWM2M_RD_CLIENT_SUPPORT`, as it's now |
| considered as an integral part of the LwM2M library. |
| * Added support for SenML Object Link data type. |
| * Fixed a bug causing incorrect ordering of the observation paths. |
| * Deprecated string based LwM2M APIs. LwM2M APIs now use |
| :c:struct:`lwm2m_obj_path` to represent object/resource paths. |
| * Refactored ``lwm2m_client`` sample by splitting specific functionalities |
| into separate modules. |
| * Multiple other minor fixes within the LwM2M library. |
| |
| * Misc: |
| |
| * Updated various networking test suites to use the new ztest API. |
| * Added redirect support for ``big_http_download`` sample and updated the |
| server URL for TLS variant. |
| * Fixed memory leak in ``net udp`` shell command. |
| * Fixed cloning of LL address for :c:struct:`net_pkt`. |
| * Added support for QoS and payload size setting in ``net ping`` shell |
| command. |
| * Added support for aborting ``net ping`` shell command. |
| * Introduced carrier and dormant management on network interfaces. Separated |
| interface administrative state from operational state. |
| * Improved DHCPv4 behavior with multiple DHCPv4 servers in the network. |
| * Fixed net_mgmt event size calculation. |
| * Added :kconfig:option:`CONFIG_NET_LOOPBACK_MTU` option to configure loopback |
| interface MTU. |
| * Reimplemented the IP/UDP/TCP checksum calculation to speed up the |
| processing. |
| * Removed :kconfig:option:`CONFIG_NET_CONFIG_SETTINGS` use from test cases to |
| improve test execution on real platforms. |
| * Added MQTT-SN library and sample. |
| * Fixed variable buffer length configuration |
| (:kconfig:option:`CONFIG_NET_BUF_VARIABLE_DATA_SIZE`). |
| * Fixed IGMPv2 membership report destination address. |
| * Added mutex protection for the connection list handling. |
| * Separated user data pointer from FIFO reserved space in |
| :c:struct:`net_context`. |
| * Added input validation for ``net pkt`` shell command. |
| |
| * OpenThread: |
| |
| * Implemented PSA support for ECDSA API. |
| * Fixed :c:func:`otPlatRadioSetMacKey` when asserts are disabled. |
| * Depracated :c:func:`openthread_set_state_changed_cb` in favour of more |
| generic :c:func:`openthread_state_changed_cb_register`. |
| * Implemented diagnostic GPIO commands. |
| |
| * SNTP: |
| |
| * Switched to use ``zsock_*`` functions internally. |
| * Fixed the library operation with IPv4 disabled. |
| |
| * Sockets: |
| |
| * Fixed a possible memory leak on failed TLS socket creation. |
| |
| * TCP: |
| |
| * Extended the default TCP out-of-order receive queue timeout to 2 seconds. |
| * Reimplemented TCP ref counting, to prevent situation, where TCP connection |
| context could be released prematurely. |
| |
| * Websockets: |
| |
| * Reimplemented websocket receive routine to fix several issues. |
| * Implemented proper websocket close procedure. |
| * Fixed a bug where websocket would overwrite the mutex used by underlying TCP |
| socket. |
| |
| * Wi-Fi: |
| |
| * Added support for power save configuration. |
| * Added support for regulatory domain configuration. |
| * Added support for power save timeout configuration. |
| |
| * zperf |
| |
| * Added option to set QoS for zperf. |
| * Fixed out of order/lost packets statistics. |
| * Defined a public API for the library to allow throughput measurement without shell enabled. |
| * Added an option for asynchronous upload. |
| |
| USB |
| *** |
| |
| Devicetree |
| ********** |
| |
| * Bindings |
| |
| * New: |
| |
| * :dtcompatible:`zephyr,flash-disk` |
| |
| * STM32 SoCs: |
| |
| * :dtcompatible: `st,stm32-lse-clock`: new ``lse-bypass`` property |
| * :dtcompatible: `st,stm32-ethernet`: now allows ``local-mac-address`` and |
| ``zephyr,random-mac-address`` properties. |
| |
| * GD32 SoCs: |
| |
| * :dtcompatible: `gd,gd322-dma`: Provide some helper macro to easily setup `dma-cells`. |
| |
| Libraries / Subsystems |
| ********************** |
| |
| * C Library |
| |
| * Newlib nano variant is no longer selected by default when |
| :kconfig:option:`CONFIG_NEWLIB_LIBC` is selected. |
| :kconfig:option:`CONFIG_NEWLIB_LIBC_NANO` must now be explicitly selected |
| in order to use the nano variant. |
| * Picolibc now supports all architectures supported by Zephyr. |
| * Added C11 ``aligned_alloc`` support to the minimal libc. |
| |
| * C++ Library |
| |
| * C++ support in Zephyr is no longer considered a "subsystem" because it |
| mainly consists of the C++ ABI runtime library and the C++ standard |
| library, which are "libraries" that are dissimilar to the existing Zephyr |
| subsystems. C++ support components are now located in ``lib/cpp`` as |
| "C++ library." |
| * C++ ABI runtime library components such as global constructor/destructor |
| and initialiser handlers, that were previously located under |
| ``subsys/cpp``, have been moved to ``lib/cpp/abi`` in order to provide a |
| clear separation between the C++ ABI runtime library and the C++ standard |
| library. |
| * C++ minimal library components have been moved to ``lib/cpp/minimal``. |
| * C++ tests have been moved to ``tests/lib/cpp``. |
| * C++ samples have been moved to ``samples/cpp``. |
| * :kconfig:option:`CONFIG_CPLUSPLUS` has been renamed to |
| :kconfig:option:`CONFIG_CPP`. |
| * :kconfig:option:`CONFIG_EXCEPTIONS` has been renamed to |
| :kconfig:option:`CONFIG_CPP_EXCEPTIONS`. |
| * :kconfig:option:`CONFIG_RTTI` has been renamed to |
| :kconfig:option:`CONFIG_CPP_RTTI`. |
| * :kconfig:option:`CONFIG_LIB_CPLUSPLUS` is deprecated. A toolchain-specific |
| C++ standard library Kconfig option from |
| :kconfig:option:`CONFIG_LIBCPP_IMPLEMENTATION` should be selected instead. |
| * Zephyr subsystems and modules that require the features from the full C++ |
| standard library (e.g. Standard Template Library) can now select |
| :kconfig:option:`CONFIG_REQUIRES_FULL_LIBC`, which automatically selects |
| a compatible C++ standard library. |
| * Introduced :kconfig:option:`CONFIG_CPP_MAIN` to support defining ``main()`` |
| function in a C++ source file. Enabling this option makes the Zephyr kernel |
| invoke ``int main(void)``, which is required by the ISO C++ standards, as |
| opposed to the Zephyr default ``void main(void)``. |
| * Added no-throwing implementation of new operator to the C++ minimal |
| library. |
| * Added support for new operator with alignment request (C++17) to the C++ |
| minimal library. |
| * Added GNU C++ standard library support with Picolibc when using a suitably |
| configured toolchain (e.g. the upcoming Zephyr SDK 0.16.0 release). |
| |
| * Cache |
| |
| * Introduced new Cache API |
| * ``CONFIG_HAS_ARCH_CACHE`` has been renamed to |
| :kconfig:option:`CONFIG_ARCH_CACHE` |
| * ``CONFIG_HAS_EXTERNAL_CACHE`` has been renamed to |
| :kconfig:option:`CONFIG_EXTERNAL_CACHE` |
| |
| * File systems |
| |
| * Added new API call `fs_mkfs`. |
| * Added new sample `samples/subsys/fs/format`. |
| * FAT FS driver has been updated to version 0.15 w/patch1. |
| * Added the option to disable CRC checking in :ref:`fcb_api` by enabling the |
| Kconfig option :kconfig:option:`CONFIG_FCB_ALLOW_FIXED_ENDMARKER` |
| and setting the `FCB_FLAGS_CRC_DISABLED` flag in the :c:struct:`fcb` struct. |
| |
| * IPC |
| |
| * Added :c:func:`ipc_rpmsg_deinit`, :c:func:`ipc_service_close_instance` and |
| :c:func:`ipc_static_vrings_deinit` functions |
| * Added deregister API support for icmsg backend |
| * Added a multi-endpoint feature to icmsg backend |
| * Added no-copy features to icmsg backend |
| |
| * ISO-TP |
| |
| * Rewrote the ISO-TP API to not reuse definitions from the CAN controller API. |
| |
| * Management |
| |
| * MCUmgr functionality deprecated in 3.1 has been removed: |
| CONFIG_FS_MGMT_UL_CHUNK_SIZE, CONFIG_IMG_MGMT_UL_CHUNK_SIZE, |
| CONFIG_OS_MGMT_ECHO_LENGTH |
| * MCUmgr fs_mgmt issue with erasing a file prior to writing the first block |
| of data has been worked around by only truncating/deleting the file data |
| if the file exists. This can help work around an issue whereby logging is |
| enabled and the command is sent on the same UART as the logging system, in |
| which a filesystem error was emitted. |
| * A MCUmgr bug when using the smp_svr sample with Bluetooth transport that |
| could have caused a stack overflow has been fixed. |
| * A MCUmgr issue with Bluetooth transport that could cause a deadlock of the |
| mcumgr thread if the remote device disconnected before the output message |
| was sent has been fixed. |
| * A MCUmgr img_mgmt bug whereby the state of an image upload could persist |
| when it was no longer valid (e.g. after an image erase command) has been |
| fixed. |
| * MCUmgr fs_mgmt command has been added that allows querying/listing the |
| supported hash/checksum types. |
| * MCUmgr Bluetooth transport will now clear unprocessed commands sent if a |
| remote device disconnects instead of processing them. |
| * A new MCUmgr transport function pointer has been added which needs |
| registering in ``smp_transport_init`` for removing invalid packets for |
| connection-orientated transports. If this is unimplemented, the function |
| pointer can be set to NULL. |
| * MCUmgr command handler definitions have changed, the ``mgmt_ctxt`` struct |
| has been replaced with the ``smp_streamer`` struct, the zcbor objects need |
| to replace ``cnbe`` object access with ``writer`` and ``cnbd`` object |
| access with ``reader`` to successfully build. |
| * MCUmgr callback system has been reworked with a unified singular interface |
| which supports status passing to the handler (:ref:`mcumgr_callbacks`). |
| * MCUmgr subsystem directory structure has been flattened and contents of the |
| lib subdirectory has been redistributed into following directories: |
| |
| .. table:: |
| :align: center |
| |
| +----------------+-------------------------------------------+ |
| | Subdirectory | MCUmgr area | |
| +================+===========================================+ |
| | mgmt | MCUmgr management functions, group | |
| | | registration, and so on; | |
| +----------------+-------------------------------------------+ |
| | smp | Simple Management Protocol processing; | |
| +----------------+-------------------------------------------+ |
| | transport | Transport support and transport API; | |
| +----------------+-------------------------------------------+ |
| | grp | Command groups, formerly lib/cmd; | |
| | | each group, which has Zephyr built in | |
| | | support has its own directory here; | |
| +----------------+-------------------------------------------+ |
| | util | Utilities used by various subareas of | |
| | | MCUmgr. | |
| +----------------+-------------------------------------------+ |
| |
| Public API interfaces for above areas are now exported through zephyr_interface, |
| and headers for them reside in ``zephyr/mgmt/mcumgr/<mcumgr_subarea>/``. |
| For example to access mgmt API include ``<zephyr/mgmt/mcumgr/mgmt/mgmt.h>``. |
| |
| Private headers for above areas can be accessed, when required, using paths: |
| ``mgmt/mcumgr/mgmt/<mcumgr_subarea>/``. |
| * MCUmgr os_mgmt info command has been added that allows querying details on |
| the kernel and application, allowing application-level extensibility |
| see :ref:`mcumgr_os_application_info` for details. |
| |
| * MCUMgr :kconfig:option:`CONFIG_APP_LINK_WITH_MCUMGR` has been removed as |
| it has not been doing anything. |
| |
| * MCUmgr Kconfig option names have been standardised. Script |
| :zephyr_file:`scripts/utils/migrate_mcumgr_kconfigs.py` has been provided |
| to make transition to new Kconfig options easier. |
| Below table provides information on old names and new equivalents: |
| |
| .. table:: |
| :align: center |
| |
| +------------------------------------------------+-------------------------------------------------------+ |
| | Old Kconfig option name | New Kconfig option name | |
| +================================================+=======================================================+ |
| | MCUMGR_SMP_WORKQUEUE_STACK_SIZE | MCUMGR_TRANSPORT_WORKQUEUE_STACK_SIZE | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_WORKQUEUE_THREAD_PRIO | MCUMGR_TRANSPORT_WORKQUEUE_THREAD_PRIO | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MGMT_MAX_MAIN_MAP_ENTRIES | MCUMGR_SMP_CBOR_MAX_MAIN_MAP_ENTRIES | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MGMT_MIN_DECODING_LEVELS | MCUMGR_SMP_CBOR_MIN_DECODING_LEVELS | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MGMT_MIN_DECODING_LEVEL_1 | MCUMGR_SMP_CBOR_MIN_DECODING_LEVEL_1 | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MGMT_MIN_DECODING_LEVEL_2 | MCUMGR_SMP_CBOR_MIN_DECODING_LEVEL_2 | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MGMT_MIN_DECODING_LEVEL_3 | MCUMGR_SMP_CBOR_MIN_DECODING_LEVEL_3 | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MGMT_MIN_DECODING_LEVEL_4 | MCUMGR_SMP_CBOR_MIN_DECODING_LEVEL_4 | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MGMT_MIN_DECODING_LEVEL_5 | MCUMGR_SMP_CBOR_MIN_DECODING_LEVEL_5 | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MGMT_MAX_DECODING_LEVELS | MCUMGR_SMP_CBOR_MAX_DECODING_LEVELS | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_CMD_FS_MGMT | MCUMGR_GRP_FS | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | FS_MGMT_MAX_FILE_SIZE_64KB | MCUMGR_GRP_FS_MAX_FILE_SIZE_64KB | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | FS_MGMT_MAX_FILE_SIZE_4GB | MCUMGR_GRP_FS_MAX_FILE_SIZE_4GB | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | FS_MGMT_MAX_OFFSET_LEN | MCUMGR_GRP_FS_MAX_OFFSET_LEN | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | FS_MGMT_DL_CHUNK_SIZE_LIMIT | MCUMGR_GRP_FS_DL_CHUNK_SIZE_LIMIT | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | FS_MGMT_DL_CHUNK_SIZE | MCUMGR_GRP_FS_DL_CHUNK_SIZE | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | FS_MGMT_FILE_STATUS | MCUMGR_GRP_FS_FILE_STATUS | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | FS_MGMT_CHECKSUM_HASH | MCUMGR_GRP_FS_CHECKSUM_HASH | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | FS_MGMT_CHECKSUM_HASH_CHUNK_SIZE | MCUMGR_GRP_FS_CHECKSUM_HASH_CHUNK_SIZE | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | FS_MGMT_CHECKSUM_IEEE_CRC32 | MCUMGR_GRP_FS_CHECKSUM_IEEE_CRC32 | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | FS_MGMT_HASH_SHA256 | MCUMGR_GRP_FS_HASH_SHA256 | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | FS_MGMT_FILE_ACCESS_HOOK | MCUMGR_GRP_FS_FILE_ACCESS_HOOK | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | FS_MGMT_PATH_SIZE | MCUMGR_GRP_FS_PATH_LEN | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_CMD_IMG_MGMT | MCUMGR_GRP_IMG | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | IMG_MGMT_USE_HEAP_FOR_FLASH_IMG_CONTEXT | MCUMGR_GRP_IMG_USE_HEAP_FOR_FLASH_IMG_CONTEXT | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | IMG_MGMT_UPDATABLE_IMAGE_NUMBER | MCUMGR_GRP_IMG_UPDATABLE_IMAGE_NUMBER | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | IMG_MGMT_VERBOSE_ERR | MCUMGR_GRP_IMG_VERBOSE_ERR | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | IMG_MGMT_DUMMY_HDR | MCUMGR_GRP_IMG_DUMMY_HDR | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | IMG_MGMT_DIRECT_IMAGE_UPLOAD | MCUMGR_GRP_IMG_DIRECT_UPLOAD | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | IMG_MGMT_REJECT_DIRECT_XIP_MISMATCHED_SLOT | MCUMGR_GRP_IMG_REJECT_DIRECT_XIP_MISMATCHED_SLOT | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | IMG_MGMT_FRUGAL_LIST | MCUMGR_GRP_IMG_FRUGAL_LIST | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_CMD_OS_MGMT | MCUMGR_GRP_OS | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_GRP_OS_OS_RESET_HOOK | MCUMGR_GRP_OS_RESET_HOOK | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | OS_MGMT_RESET_MS | MCUMGR_GRP_OS_RESET_MS | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | OS_MGMT_TASKSTAT | MCUMGR_GRP_OS_TASKSTAT | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | OS_MGMT_TASKSTAT_ONLY_SUPPORTED_STATS | MCUMGR_GRP_OS_TASKSTAT_ONLY_SUPPORTED_STATS | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | OS_MGMT_TASKSTAT_MAX_NUM_THREADS | MCUMGR_GRP_OS_TASKSTAT_MAX_NUM_THREADS | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | OS_MGMT_TASKSTAT_THREAD_NAME_LEN | MCUMGR_GRP_OS_TASKSTAT_THREAD_NAME_LEN | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | OS_MGMT_TASKSTAT_SIGNED_PRIORITY | MCUMGR_GRP_OS_TASKSTAT_SIGNED_PRIORITY | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | OS_MGMT_TASKSTAT_STACK_INFO | MCUMGR_GRP_OS_TASKSTAT_STACK_INFO | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | OS_MGMT_ECHO | MCUMGR_GRP_OS_ECHO | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | OS_MGMT_MCUMGR_PARAMS | MCUMGR_GRP_OS_MCUMGR_PARAMS | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_CMD_SHELL_MGMT | MCUMGR_GRP_SHELL | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_CMD_SHELL_MGMT_LEGACY_RC_RETURN_CODE | MCUMGR_GRP_SHELL_LEGACY_RC_RETURN_CODE | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_CMD_STAT_MGMT | MCUMGR_GRP_STAT | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | STAT_MGMT_MAX_NAME_LEN | MCUMGR_GRP_STAT_MAX_NAME_LEN | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_GRP_ZEPHYR_BASIC | MCUMGR_GRP_ZBASIC | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_GRP_BASIC_CMD_STORAGE_ERASE | MCUMGR_GRP_ZBASIC_STORAGE_ERASE | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MGMT_VERBOSE_ERR_RESPONSE | MCUMGR_SMP_VERBOSE_ERR_RESPONSE | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_REASSEMBLY | MCUMGR_TRANSPORT_REASSEMBLY | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_BUF_COUNT | MCUMGR_TRANSPORT_NETBUF_COUNT | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_BUF_SIZE | MCUMGR_TRANSPORT_NETBUF_SIZE | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_BUF_USER_DATA_SIZE | MCUMGR_TRANSPORT_NETBUF_USER_DATA_SIZE | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_BT | MCUMGR_TRANSPORT_BT | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_REASSEMBLY_BT | MCUMGR_TRANSPORT_BT_REASSEMBLY | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_REASSEMBLY_UNIT_TESTS | MCUMGR_TRANSPORT_REASSEMBLY_UNIT_TESTS | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_BT_AUTHEN | MCUMGR_TRANSPORT_BT_AUTHEN | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_BT_CONN_PARAM_CONTROL | MCUMGR_TRANSPORT_BT_CONN_PARAM_CONTROL | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_BT_CONN_PARAM_CONTROL_MIN_INT | MCUMGR_TRANSPORT_BT_CONN_PARAM_CONTROL_MIN_INT | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_BT_CONN_PARAM_CONTROL_MAX_INT | MCUMGR_TRANSPORT_BT_CONN_PARAM_CONTROL_MAX_INT | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_BT_CONN_PARAM_CONTROL_LATENCY | MCUMGR_TRANSPORT_BT_CONN_PARAM_CONTROL_LATENCY | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_BT_CONN_PARAM_CONTROL_TIMEOUT | MCUMGR_TRANSPORT_BT_CONN_PARAM_CONTROL_TIMEOUT | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_BT_CONN_PARAM_CONTROL_RESTORE_TIME | MCUMGR_TRANSPORT_BT_CONN_PARAM_CONTROL_RESTORE_TIME | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_BT_CONN_PARAM_CONTROL_RETRY_TIME | MCUMGR_TRANSPORT_BT_CONN_PARAM_CONTROL_RETRY_TIME | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_DUMMY | MCUMGR_TRANSPORT_DUMMY | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_DUMMY_RX_BUF_SIZE | MCUMGR_TRANSPORT_DUMMY_RX_BUF_SIZE | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_SHELL | MCUMGR_TRANSPORT_SHELL | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_SHELL_MTU | MCUMGR_TRANSPORT_SHELL_MTU | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_SHELL_RX_BUF_COUNT | MCUMGR_TRANSPORT_SHELL_RX_BUF_COUNT | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_UART | MCUMGR_TRANSPORT_UART | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_UART_ASYNC | MCUMGR_TRANSPORT_UART_ASYNC | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_UART_ASYNC_BUFS | MCUMGR_TRANSPORT_UART_ASYNC_BUFS | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_UART_ASYNC_BUF_SIZE | MCUMGR_TRANSPORT_UART_ASYNC_BUF_SIZE | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_UART_MTU | MCUMGR_TRANSPORT_UART_MTU | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_UDP | MCUMGR_TRANSPORT_UDP | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_UDP_IPV4 | MCUMGR_TRANSPORT_UDP_IPV4 | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_UDP_IPV6 | MCUMGR_TRANSPORT_UDP_IPV6 | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_UDP_PORT | MCUMGR_TRANSPORT_UDP_PORT | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_UDP_STACK_SIZE | MCUMGR_TRANSPORT_UDP_STACK_SIZE | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_UDP_THREAD_PRIO | MCUMGR_TRANSPORT_UDP_THREAD_PRIO | |
| +------------------------------------------------+-------------------------------------------------------+ |
| | MCUMGR_SMP_UDP_MTU | MCUMGR_TRANSPORT_UDP_MTU | |
| +------------------------------------------------+-------------------------------------------------------+ |
| |
| * MCUmgr responses where ``rc`` (result code) is 0 (no error) will no longer |
| be present in responses and in cases where there is only an ``rc`` result, |
| the resultant response will now be an empty CBOR map. The old behaviour can |
| be restored by enabling |
| :kconfig:option:`CONFIG_MCUMGR_SMP_LEGACY_RC_BEHAVIOUR`. |
| |
| * MCUmgr now has log outputting on most errors from the included fs, img, |
| os, shell, stat and zephyr_basic group commands. The level of logging can be |
| controlled by adjusting: :kconfig:option:`CONFIG_MCUMGR_GRP_FS_LOG_LEVEL`, |
| :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_LOG_LEVEL`, |
| :kconfig:option:`CONFIG_MCUMGR_GRP_OS_LOG_LEVEL`, |
| :kconfig:option:`CONFIG_MCUMGR_GRP_SHELL_LOG_LEVEL`, |
| :kconfig:option:`CONFIG_MCUMGR_GRP_STAT_LOG_LEVEL` and |
| :kconfig:option:`CONFIG_MCUMGR_GRP_ZBASIC_LOG_LEVEL`. |
| |
| * MCUmgr img_mgmt has a new field which is sent in the final packet (if |
| :kconfig:option:`CONFIG_IMG_ENABLE_IMAGE_CHECK` is enabled) named ``match`` |
| which is a boolean and is true if the uploaded data matches the supplied |
| hash, or false otherwise. |
| |
| * MCUmgr img_mgmt will now skip receiving data if the provided hash already |
| matches the hash of the data present (if |
| :kconfig:option:`CONFIG_IMG_ENABLE_IMAGE_CHECK` is enabled) and finish the |
| upload operation request instantly. |
| |
| * MCUmgr img_mgmt structs are now packed, which fixes a fault issue on |
| processors that do not support unaligned memory access. |
| |
| * If MCUmgr is used with the shell transport and ``printk()`` functionality |
| is used, there can be an issue whereby the ``printk()`` calls output during |
| a MCUmgr frame receive, this has been fixed by default in zephyr by routing |
| ``printk()`` calls to the logging system, For user applications, |
| :kconfig:option:`CONFIG_LOG_PRINTK` should be enabled to include this fix. |
| |
| * A bug when MCUmgr shell transport is used (issue was observed over USB CDC |
| but could also occur with UART) whereby the default shell receive ring |
| buffer is insufficient has been fixed by making the default size 256 bytes |
| instead of 64 when the shell MCUmgr transport is selected. |
| |
| * LwM2M |
| |
| * The ``lwm2m_senml_cbor_*`` files have been regenerated using zcbor 0.6.0. |
| |
| * POSIX API |
| |
| * Harmonize posix type definitions across the minimal libc, newlib and picolibc. |
| |
| * Abstract ``pthread_t``, ``pthread_key_t``, ``pthread_cond_t``, |
| ``pthread_mutex_t``, as ``uint32_t``. |
| * Define :c:macro:`PTHREAD_KEY_INITIALIZER`, :c:macro:`PTHREAD_COND_INITIALIZER`, |
| :c:macro:`PTHREAD_MUTEX_INITIALIZER` to align with POSIX 1003.1. |
| |
| * Allow non-prefixed standard include paths with :kconfig:option:`CONFIG_POSIX_API`. |
| |
| * I.e. ``#include <unistd.h>`` instead of ``#include <zephyr/posix/unistd.h>``. |
| * Primarily to ease integration with external libraries. |
| * Internal Zephyr code should continue to use prefixed header paths. |
| |
| * Enable ``eventfd()``, ``getopt()`` by default with :kconfig:option:`CONFIG_POSIX_API`. |
| * Move / rename header files to align with POSIX specifications. |
| |
| * E.g. move ``fcntl.h``, ``sys/stat.h`` from the minimal libc into the |
| ``include/zephyr/posix`` directory. Rename ``posix_sched.h`` to ``sched.h``. |
| * Move :c:macro:`O_ACCMODE`, :c:macro:`O_RDONLY`, :c:macro:`O_WRONLY`, |
| :c:macro:`O_WRONLY`, to ``fcntl.h``. |
| |
| * Added :kconfig:option:`CONFIG_TIMER_CREATE_WAIT`, :kconfig:option:`CONFIG_MAX_PTHREAD_KEY_COUNT`, |
| :kconfig:option:`CONFIG_MAX_PTHREAD_COND_COUNT`, :kconfig:option:`CONFIG_MAX_PTHREAD_MUTEX_COUNT`. |
| * Define :c:macro:`SEEK_SET`, :c:macro:`SEEK_CUR`, :c:macro:`SEEK_END`. |
| |
| * SD Subsystem |
| |
| * Added support for eMMC protocol in Zephyr. |
| |
| - Speed modes up to HS400 are supported using 1.8v operation. |
| - Additional protocol tests have been added to verify eMMC functionality. |
| - Disk subsystem tests have been updated to function with eMMC. |
| |
| * Card and host combinations that cannot utilize UHS (ultra high speed) mode |
| will now use 4 bit bus width when possible. This will greatly improve |
| performance for these systems. |
| |
| * Settings |
| |
| * Replaced all :c:func:`k_panic` invocations within settings backend |
| initialization with returning / propagating error codes. |
| |
| * Utilities |
| |
| * Added the linear range API to map values in a linear range to a range index |
| :zephyr_file:`include/zephyr/sys/linear_range.h`. |
| |
| HALs |
| **** |
| |
| * GigaDevice |
| |
| * Added support for gd32l23x. |
| * Added support for gd32a50x. |
| |
| MCUboot |
| ******* |
| |
| Storage |
| ******* |
| |
| * Flash Map API drops ``fa_device_id`` from :c:struct:`flash_area`, as it |
| is no longer needed by MCUboot, and has not been populated for a long |
| time now. |
| |
| Trusted Firmware-M |
| ****************** |
| |
| zcbor |
| ***** |
| |
| Upgraded zcbor to 0.6.0. Among other things, this brings in a few convenient |
| changes for Zephyr: |
| |
| * In the zcbor codebase, the ``ARRAY_SIZE`` macro has been renamed to |
| ``ZCBOR_ARRAY_SIZE`` to not collide with Zephyr's :c:macro:`ARRAY_SIZE` macro. |
| * The zcbor codebase now better supports being used in C++ code. |
| |
| The entire release notes can be found at |
| https://github.com/zephyrproject-rtos/zcbor/blob/0.6.0/RELEASE_NOTES.md |
| |
| Documentation |
| ************* |
| |
| * Upgraded to Doxygen 1.9.6. |
| * It is now possible to link to Kconfig search results. |
| |
| Tests and Samples |
| ***************** |
| |
| Issue Related Items |
| ******************* |
| |
| Known Issues |
| ============ |
| |
| Addressed issues |
| ================ |