blob: 85dbe6bec2af46d88eb9259cca571b47fd004127 [file] [log] [blame]
: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: