| :orphan: |
| |
| .. _zephyr_3.2: |
| |
| Zephyr 3.2.0 (Working Draft) |
| ############################ |
| |
| The following sections provide detailed lists of changes by component. |
| |
| Security Vulnerability Related |
| ****************************** |
| |
| Known issues |
| ************ |
| |
| API Changes |
| *********** |
| |
| Changes in this release |
| ======================= |
| |
| * Zephyr now requires Python 3.8 or higher |
| |
| * Changed :c:struct:`spi_cs_control` to remove anonymous struct. |
| This causes possible breakage for static initialization of the |
| struct. Updated :c:macro:`SPI_CS_CONTROL_PTR_DT` to reflect |
| this change. |
| |
| * The :kconfig:option:`CONFIG_LEGACY_INCLUDE_PATH` option has been disabled by |
| default, all upstream code and modules have been converted to use |
| ``<zephyr/...>`` header paths. The option is still available to facilitate |
| the migration of external applications, but will be removed with the 3.4 |
| release. The :zephyr_file:`scripts/utils/migrate_includes.py` script is |
| provided to automate the migration. |
| |
| * :zephyr_file:`include/zephyr/zephyr.h` no longer defines ``__ZEPHYR__``. |
| This definition can be used by third-party code to compile code conditional |
| to Zephyr. The definition is already injected by the Zephyr build system. |
| Therefore, any third-party code integrated using the Zephyr build system will |
| require no changes. External build systems will need to inject the definition |
| by themselves, if they did not already. |
| |
| * :zephyr_file:`include/zephyr/zephyr.h` has been deprecated in favor of |
| :zephyr_file:`include/zephyr/kernel.h`, since it only included that header. No |
| changes are required by applications other than replacing ``#include |
| <zephyr/zephyr.h>`` with ``#include <zephyr/kernel.h>``. |
| |
| * CAN |
| |
| * The Zephyr SocketCAN definitions have been moved from :zephyr_file:`include/zephyr/drivers/can.h` |
| to :zephyr_file:`include/zephyr/net/socketcan.h`, the SocketCAN ``struct can_frame`` has been |
| renamed to :c:struct:`socketcan_frame`, and the SocketCAN ``struct can_filter`` has been renamed |
| to :c:struct:`socketcan_filter`. The SocketCAN utility functions are now available in |
| :zephyr_file:`include/zephyr/net/socketcan_utils.h`. |
| |
| * The CAN controller ``struct zcan_frame`` has been renamed to :c:struct:`can_frame`, and ``struct |
| zcan_filter`` has been renamed to :c:struct:`can_filter`. |
| |
| * The :c:enum:`can_state` enumerations have been renamed to contain the word STATE in order to make |
| their context more clear: |
| |
| * ``CAN_ERROR_ACTIVE`` renamed to :c:enumerator:`CAN_STATE_ERROR_ACTIVE`. |
| * ``CAN_ERROR_WARNING`` renamed to :c:enumerator:`CAN_STATE_ERROR_WARNING`. |
| * ``CAN_ERROR_PASSIVE`` renamed to :c:enumerator:`CAN_STATE_ERROR_PASSIVE`. |
| * ``CAN_BUS_OFF`` renamed to :c:enumerator:`CAN_STATE_BUS_OFF`. |
| |
| * The error code for :c:func:`can_send` when the CAN controller is in bus off state has been |
| changed from ``-ENETDOWN`` to ``-ENETUNREACH``. A return value of ``-ENETDOWN`` now indicates |
| that the CAN controller is in :c:enumerator:`CAN_STATE_STOPPED`. |
| |
| * The list of valid return values for the CAN timing calculation functions have been expanded to |
| allow distinguishing between an out of range bitrate/sample point, an unsupported bitrate, and a |
| resulting sample point outside the guard limit. |
| |
| Removed APIs in this release |
| ============================ |
| |
| * The following functions, macros, and structures related to the |
| deprecated kernel work queue API have been removed: |
| |
| * ``k_work_pending()`` |
| * ``k_work_q_start()`` |
| * ``k_delayed_work`` |
| * ``k_delayed_work_init()`` |
| * ``k_delayed_work_submit_to_queue()`` |
| * ``k_delayed_work_submit()`` |
| * ``k_delayed_work_pending()`` |
| * ``k_delayed_work_cancel()`` |
| * ``k_delayed_work_remaining_get()`` |
| * ``k_delayed_work_expires_ticks()`` |
| * ``k_delayed_work_remaining_ticks()`` |
| * ``K_DELAYED_WORK_DEFINE`` |
| |
| * Removed support for enabling passthrough mode on MPU9150 to |
| AK8975 sensor. |
| |
| * Removed deprecated SPI :c:struct:`spi_cs_control` fields for GPIO management |
| that have been replaced with :c:struct:`gpio_dt_spec`. |
| |
| * Removed support for configuring the CAN-FD maximum DLC value via Kconfig |
| ``CONFIG_CANFD_MAX_DLC``. |
| |
| Deprecated in this release |
| ========================== |
| |
| * :c:macro:`DT_SPI_DEV_CS_GPIOS_LABEL` and |
| :c:macro:`DT_INST_SPI_DEV_CS_GPIOS_LABEL` are deprecated in favor of |
| utilizing :c:macro:`DT_SPI_DEV_CS_GPIOS_CTLR` and variants. |
| |
| * :c:macro:`DT_GPIO_LABEL`, :c:macro:`DT_INST_GPIO_LABEL`, |
| :c:macro:`DT_GPIO_LABEL_BY_IDX`, and :c:macro:`DT_INST_GPIO_LABEL_BY_IDX`, |
| are deprecated in favor of utilizing :c:macro:`DT_GPIO_CTLR` and variants. |
| |
| * :c:macro:`DT_LABEL`, and :c:macro:`DT_INST_LABEL`, are deprecated |
| in favor of utilizing :c:macro:`DT_PROP` and variants. |
| |
| * :c:macro:`DT_BUS_LABEL`, and :c:macro:`DT_INST_BUS_LABEL`, are deprecated |
| in favor of utilizing :c:macro:`DT_BUS` and variants. |
| |
| * STM32 LPTIM domain clock should now be configured using devicetree. |
| Related Kconfig :kconfig:option:`CONFIG_STM32_LPTIM_CLOCK` option is now |
| deprecated. |
| |
| * 'label' property from devicetree as a base property. The property is still |
| valid for specific bindings to specify like :dtcompatible:`gpio-leds` and |
| :dtcompatible:`fixed-partitions`. |
| |
| * Bluetooth mesh Configuration Client API prefixed with ``bt_mesh_cfg_`` |
| is deprecated in favor of a new API with prefix ``bt_mesh_cfg_cli_``. |
| |
| Stable API changes in this release |
| ================================== |
| |
| New APIs in this release |
| ======================== |
| |
| * CAN |
| |
| * Added :c:func:`can_start` and :c:func:`can_stop` API functions for starting and stopping a CAN |
| controller. Applications will need to call :c:func:`can_start` to bring the CAN controller out |
| of :c:enumerator:`CAN_STATE_STOPPED` before being able to transmit and receive CAN frames. |
| * Added :c:func:`can_get_capabilities` for retrieving a bitmask of the capabilities supported by a |
| CAN controller. |
| * Added :c:enumerator:`CAN_MODE_ONE_SHOT` for enabling CAN controller one-shot transmission mode. |
| * Added :c:enumerator:`CAN_MODE_3_SAMPLES` for enabling CAN controller triple-sampling receive |
| mode. |
| |
| Kernel |
| ****** |
| |
| * Source files using multiple :c:macro:`SYS_INIT` macros with the |
| same initialisation function must now use :c:macro:`SYS_INIT_NAMED` |
| with unique names per instance. |
| |
| Architectures |
| ************* |
| |
| * ARC |
| |
| * ARM |
| |
| * AARCH32 |
| |
| * AARCH64 |
| |
| * Posix |
| |
| * RISC-V |
| |
| * x86 |
| |
| * Xtensa |
| |
| Bluetooth |
| ********* |
| |
| * Audio |
| |
| * Direction Finding |
| |
| * Host |
| |
| * Added a new callback :c:func:`rpa_expired` in the struct :c:struct:`bt_le_ext_adv_cb` |
| to enable synchronization of the advertising payload updates with the Resolvable Private |
| Address (RPA) rotations when the :kconfig:option:`CONFIG_BT_PRIVACY` is enabled. |
| * Added a new :c:func:`bt_le_set_rpa_timeout()` API call to dynamically change the |
| the Resolvable Private Address (RPA) timeout when the :kconfig:option:`CONFIG_BT_RPA_TIMEOUT_DYNAMIC` |
| is enabled. |
| * Added :c:func:`bt_conn_auth_cb_overlay` to overlay authentication callbacks for a Bluetooth LE connection. |
| * Removed ``CONFIG_BT_HCI_ECC_STACK_SIZE``. |
| The Bluetooth long workqueue (:kconfig:option:`CONFIG_BT_LONG_WQ`) is used for processing ECC commands instead of the dedicated thread. |
| * :c:func:`bt_conn_get_security` and `bt_conn_enc_key_size` now take a ``const struct bt_conn*`` argument. |
| |
| * Mesh |
| |
| * Controller |
| |
| * HCI Driver |
| |
| Boards & SoC Support |
| ******************** |
| |
| * Added support for these SoC series: |
| |
| * renesas_smartbond da1469x SoC series |
| |
| * Removed support for these SoC series: |
| |
| * Made these changes in other SoC series: |
| |
| * Changes for ARC boards: |
| |
| * Added support for these ARM boards: |
| |
| * da1469x_dk_pro |
| |
| * Added support for these ARM64 boards: |
| |
| * Removed support for these ARM boards: |
| |
| * Removed support for these X86 boards: |
| |
| * Added support for these RISC-V boards: |
| |
| * Made these changes in other boards: |
| |
| * Added support for these following shields: |
| |
| |
| Drivers and Sensors |
| ******************* |
| |
| * ADC |
| |
| * Audio |
| |
| * CAN |
| |
| * A driver for bridging from :ref:`native_posix` to Linux SocketCAN has been added. |
| * A driver for the Espressif ESP32 TWAI has been added. See the |
| :dtcompatible:`espressif,esp32-twai` devicetree binding for more information. |
| * The STM32 CAN-FD CAN driver clock configurion has been moved from Kconfig to :ref:`devicetree |
| <dt-guide>`. See the :dtcompatible:`st,stm32-fdcan` devicetree binding for more information. |
| * The filter handling of STM32 bxCAN driver has been simplified and made more reliable. |
| * The STM32 bxCAN driver now supports dual intances. |
| * The CAN loopback driver now supports CAN-FD. |
| * The CAN shell module has been rewritten to properly support the additions and changes to the CAN |
| controller API. |
| * The Zephyr network CAN bus driver, which provides raw L2 access to the CAN bus via a CAN |
| controller driver, has been moved to :zephyr_file:`drivers/net/canbus.c` and can now be enabled |
| using :kconfig:option:`CONFIG_NET_CANBUS`. |
| |
| * Clock Control |
| |
| * Coredump |
| |
| * Counter |
| |
| * Crypto |
| |
| * DAC |
| |
| * DAI |
| |
| * Display |
| |
| * Disk |
| |
| * DMA |
| |
| * EEPROM |
| |
| * Added Microchip XEC (MEC172x) on-chip EEPROM driver. See the |
| :dtcompatible:`microchip,xec-eeprom` devicetree binding for more information. |
| |
| * Entropy |
| |
| * ESPI |
| |
| * Ethernet |
| |
| * Flash |
| |
| * Added flash driver for Renesas Smartbond platform |
| |
| * GPIO |
| |
| * Added GPIO driver for Renesas Smartbond platform |
| |
| * HWINFO |
| |
| * I2C |
| |
| * I2S |
| |
| * I3C |
| |
| * IEEE 802.15.4 |
| |
| * All IEEE 802.15.4 drivers have been converted to Devicetree-based drivers. |
| |
| * Interrupt Controller |
| |
| * IPM |
| |
| * LED |
| |
| * LoRa |
| |
| * MBOX |
| |
| * MEMC |
| |
| * MM |
| |
| * Modem |
| |
| * PCIE |
| |
| * PECI |
| |
| * Pinmux |
| |
| * Pin control |
| |
| * Added pin control driver for Renesas Smartbond platform |
| |
| * PWM |
| |
| * Added PWM driver for Renesas R-Car platform |
| |
| * Power Domain |
| |
| * Reset |
| |
| * SDHC |
| |
| * Sensor |
| |
| * Serial |
| |
| * Added serial driver for Renesas Smartbond platform |
| |
| * SPI |
| |
| * Timer |
| |
| * USB |
| |
| * W1 |
| |
| * Watchdog |
| |
| * Added support for Raspberry Pi Pico watchdog. |
| |
| * WiFi |
| |
| Networking |
| ********** |
| |
| * ``CONFIG_NET_CONFIG_IEEE802154_DEV_NAME`` has been removed in favor of |
| using a Devicetree choice given by ``zephyr,ieee802154``. |
| |
| * Added new Wi-Fi offload APIs for retrieving status and statistics. |
| |
| USB |
| *** |
| |
| Build System |
| ************ |
| |
| * Removed deprecated ``GCCARMEMB_TOOLCHAIN_PATH`` setting |
| |
| Devicetree |
| ********** |
| |
| * API |
| |
| * Bindings |
| |
| Libraries / Subsystems |
| ********************** |
| |
| * Console |
| |
| * C Library |
| |
| * C++ Subsystem |
| |
| * Emul |
| |
| * Filesystem |
| |
| * IPC |
| |
| * Management |
| |
| * MCUMGR race condition when using the task status function whereby if a |
| thread state changed it could give a falsely short process list has been |
| fixed. |
| * MCUMGR shell (group 9) CBOR structure has changed, the ``rc`` |
| response is now only used for mcumgr errors, shell command |
| execution result codes are instead returned in the ``ret`` |
| variable instead, see :ref:`mcumgr_smp_group_9` for updated |
| information. Legacy bahaviour can be restored by enabling |
| :kconfig:option:`CONFIG_MCUMGR_CMD_SHELL_MGMT_LEGACY_RC_RETURN_CODE` |
| * MCUMGR img_mgmt erase command now accepts an optional slot number |
| to select which image will be erased, using the ``slot`` input |
| (will default to slot 1 if not provided). |
| * MCUMGR :kconfig:option:`CONFIG_OS_MGMT_TASKSTAT_SIGNED_PRIORITY` is now |
| enabled by default, this makes thread priorities in the taskstat command |
| signed, which matches the signed priority of tasks in Zephyr, to revert |
| to previous behaviour of using unsigned values, disable this Kconfig. |
| * MCUMGR taskstat runtime field support has been added, if |
| :kconfig:option:`CONFIG_OS_MGMT_TASKSTAT` is enabled, which will report the |
| number of CPU cycles have been spent executing the thread. |
| * MCUMgr transport API drops ``zst`` parameter, of :c:struct:`zephyr_smp_transport` |
| type, from :c:func:`zephyr_smp_transport_out_fn` type callback as it has |
| not been used, and the ``nb`` parameter, of :c:struct:`net_buf` type, |
| can carry additional transport information when needed. |
| |
| * Cbprintf and logging |
| |
| * Updated cbprintf static packaging to interpret ``unsigned char *`` as a pointer |
| to a string. See :ref:`cbprintf_packaging_limitations` for more details about |
| how to efficienty use strings. Change mainly applies to the ``logging`` subsystem |
| since it uses this feature. |
| * Added :c:macro:`LOG_RAW` for logging strings without additional formatting. |
| It is similar to :c:macro:`LOG_PRINTK` but do not append ``<cr>`` when new line is found. |
| |
| * LoRaWAN |
| |
| * Modbus |
| |
| * Power management |
| |
| * RTIO |
| |
| * SD Subsystem |
| |
| * Settings |
| |
| * Shell |
| |
| * Storage |
| |
| * Testsuite |
| |
| * Tracing |
| |
| HALs |
| **** |
| |
| * Atmel |
| |
| * Espressif |
| |
| * GigaDevice |
| |
| * NXP |
| |
| * Nordic |
| |
| * RPi Pico |
| |
| * Renesas |
| |
| * ST |
| |
| * STM32 |
| |
| * Silabs |
| |
| * TI |
| |
| * Telink |
| |
| * Wurth Elektronik |
| |
| * Xtensa |
| |
| MCUboot |
| ******* |
| |
| Trusted Firmware-m |
| ****************** |
| |
| Documentation |
| ************* |
| |
| Tests and Samples |
| ***************** |
| |
| Issue Related Items |
| ******************* |
| |
| These GitHub issues were addressed since the previous 3.1.0 tagged |
| release: |