1001 lines
42 KiB
ReStructuredText
1001 lines
42 KiB
ReStructuredText
:orphan:
|
|
|
|
.. _migration_3.7:
|
|
|
|
Migration guide to Zephyr v3.7.0
|
|
################################
|
|
|
|
This document describes the changes required when migrating your application from Zephyr v3.6.0 to
|
|
Zephyr v3.7.0.
|
|
|
|
Any other changes (not directly related to migrating applications) can be found in
|
|
the :ref:`release notes<zephyr_3.7>`.
|
|
|
|
.. contents::
|
|
:local:
|
|
:depth: 2
|
|
|
|
Build System
|
|
************
|
|
|
|
* Completely overhauled the way SoCs and boards are defined. This requires all
|
|
out-of-tree SoCs and boards to be ported to the new model. See the
|
|
:ref:`hw_model_v2` for more detailed information. (:github:`69607`)
|
|
|
|
* The following build-time generated headers:
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
|
|
* - Affected header files
|
|
* - ``app_version.h``
|
|
* - ``autoconf.h``
|
|
* - ``cmake_intdef.h``
|
|
* - ``core-isa-dM.h``
|
|
* - ``devicetree_generated.h``
|
|
* - ``driver-validation.h``
|
|
* - ``kobj-types-enum.h``
|
|
* - ``linker-kobject-prebuilt-data.h``
|
|
* - ``linker-kobject-prebuilt-priv-stacks.h``
|
|
* - ``linker-kobject-prebuilt-rodata.h``
|
|
* - ``mcuboot_version.h``
|
|
* - ``offsets.h``
|
|
* - ``otype-to-size.h``
|
|
* - ``otype-to-str.h``
|
|
* - ``strerror_table.h``
|
|
* - ``strsignal_table.h``
|
|
* - ``syscall_list.h``
|
|
* - ``version.h``
|
|
* - ``zsr.h``
|
|
|
|
as well as syscall headers & sources are now namespaced into the ``zephyr/`` folder. The change is largely
|
|
automated, and the script can be found in :github:`63973`.
|
|
For the time being, the compatibility Kconfig (:kconfig:option:`CONFIG_LEGACY_GENERATED_INCLUDE_PATH`)
|
|
is enabled by default so that downstream applications will continue to compile, a warning message
|
|
will be generated during CMake configuration time.
|
|
This Kconfig will be deprecated and eventually removed in the future, developers are advised to
|
|
update the include paths of these affected headers as soon as possible.
|
|
|
|
Kernel
|
|
******
|
|
|
|
* All architectures are now required to define the new ``struct arch_esf``, which describes the members
|
|
of a stack frame. This new struct replaces the named struct ``z_arch_esf_t``. (:github:`73593`)
|
|
|
|
* The named struct ``z_arch_esf_t`` is now deprecated. Use ``struct arch_esf`` instead. (:github:`73593`)
|
|
|
|
* The header file :zephyr_file:`include/zephyr/arch/arch_interface.h` has been moved from
|
|
``include/zephyr/sys/`` into ``include/zephyr/arch/``. Out-of-tree source files will need to
|
|
update the include path. (:github:`64987`)
|
|
|
|
Boards
|
|
******
|
|
|
|
* Reordered D1 and D0 in the ``pro_micro`` connector gpio-map for SparkFun Pro Micro RP2040 to match
|
|
original Pro Micro definition. Out-of-tree shields must be updated to reflect this change. (:github:`69994`)
|
|
* ITE: Rename all SoC variant Kconfig options, e.g., ``CONFIG_SOC_IT82202_AX`` is renamed to
|
|
:kconfig:option:`CONFIG_SOC_IT82202AX`.
|
|
All symbols are renamed as follows: ``SOC_IT81202BX``, ``SOC_IT81202CX``, ``SOC_IT81302BX``,
|
|
``SOC_IT81302CX``, ``SOC_IT82002AW``, ``SOC_IT82202AX``, ``SOC_IT82302AX``.
|
|
And, rename the ``SOC_SERIES_ITE_IT8XXX2`` to ``SOC_SERIES_IT8XXX2``. (:github:`71680`)
|
|
* For native_sim/posix: :kconfig:option:`CONFIG_EMUL` is no longer enabled by default when
|
|
:kconfig:option:`CONFIG_I2C` is set. Users who need this setting enabled should set it in
|
|
their project config file. (:github:`73067`)
|
|
|
|
* LiteX: Renamed the ``compatible`` of the LiteX VexRiscV interrupt controller node from
|
|
``vexriscv-intc0`` to :dtcompatible:`litex,vexriscv-intc0`. (:github:`73211`)
|
|
|
|
* ``lairdconnect`` boards are now ``ezurio`` boards. Laird Connectivity has rebranded to `Ezurio <https://www.ezurio.com/laird-connectivity>`_.
|
|
|
|
Modules
|
|
*******
|
|
|
|
Mbed TLS
|
|
========
|
|
|
|
* TLS 1.2, RSA, AES, DES, and all the hash algorithms except SHA-256
|
|
(SHA-224, SHA-384, SHA-512, MD5 and SHA-1) are not enabled by default anymore.
|
|
Their respective Kconfig options now need to be explicitly enabled to be able to use them.
|
|
(:github:`72078`)
|
|
* The Kconfig options previously named ``CONFIG_MBEDTLS_MAC_*_ENABLED`` have been renamed.
|
|
The ``_MAC`` and ``_ENABLED`` parts have been removed from their names. (:github:`73267`)
|
|
* The :kconfig:option:`CONFIG_MBEDTLS_HASH_ALL_ENABLED` Kconfig option has been fixed to actually
|
|
enable all the available hash algorithms. Previously, it used to only enable the SHA-2 ones.
|
|
(:github:`73267`)
|
|
* The ``CONFIG_MBEDTLS_HASH_SHA*_ENABLED`` Kconfig options have been removed. They were duplicates
|
|
of other Kconfig options which are now named ``CONFIG_MBEDTLS_SHA*``. (:github:`73267`)
|
|
* The ``CONFIG_MBEDTLS_MAC_ALL_ENABLED`` Kconfig option has been removed. Its equivalent is the
|
|
combination of :kconfig:option:`CONFIG_MBEDTLS_HASH_ALL_ENABLED` and :kconfig:option:`CONFIG_MBEDTLS_CMAC`.
|
|
(:github:`73267`)
|
|
* The Kconfig options ``CONFIG_MBEDTLS_MAC_MD4_ENABLED``, ``CONFIG_MBEDTLS_CIPHER_ARC4_ENABLED``
|
|
and ``CONFIG_MBEDTLS_CIPHER_BLOWFISH_ENABLED`` were removed because they are no more supported
|
|
in Mbed TLS. (:github:`73222`)
|
|
* When there is any PSA crypto provider available in the system
|
|
(i.e. :kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_CLIENT` is set), desired PSA crypto
|
|
features must be explicitly enabled using proper ``CONFIG_PSA_WANT_*``. (:github:`72243`)
|
|
* TLS/X509/PK/MD modules will use PSA crypto APIs instead of legacy ones as soon
|
|
as there is any PSA crypto provider available in the system
|
|
(i.e. :kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_CLIENT` is set). (:github:`72243`)
|
|
|
|
Trusted Firmware-M
|
|
==================
|
|
|
|
* The default MCUboot signature type has been changed from RSA-3072 to EC-P256.
|
|
This affects builds that have MCUboot enabled in TF-M (:kconfig:option:`CONFIG_TFM_BL2`).
|
|
If you wish to keep using RSA-3072, you need to set :kconfig:option:`CONFIG_TFM_MCUBOOT_SIGNATURE_TYPE`
|
|
to ``"RSA-3072"``. Otherwise, make sure to have your own signing keys of the signature type in use.
|
|
|
|
LVGL
|
|
====
|
|
|
|
* :kconfig:option:`CONFIG_LV_Z_POINTER_KSCAN` was removed, you need to convert your kscan based
|
|
driver to the input subsystem and use a :dtcompatible:`zephyr,lvgl-pointer-input` in your
|
|
devicetree instead. (:github:`73800`)
|
|
|
|
|
|
Device Drivers and Devicetree
|
|
*****************************
|
|
|
|
* The :dtcompatible:`nxp,kinetis-pit` pit driver has changed its compatible
|
|
to :dtcompatible:`nxp,pit` and has been updated to support multiple channels.
|
|
To configure the individual channels, you must add a child node with the
|
|
compatible :dtcompatible:`nxp,pit-channel` and configure as below.
|
|
The :kconfig:option:`CONFIG_COUNTER_MCUX_PIT` has also been renamed to
|
|
:kconfig:option:`CONFIG_COUNTER_NXP_PIT` with regards to the renaming
|
|
of the binding for the pit. (:github:`66336`)
|
|
example:
|
|
|
|
.. code-block:: devicetree
|
|
|
|
/ {
|
|
pit0: pit@40037000 {
|
|
/* Other Pit DT Attributes */
|
|
compatible = "nxp,pit";
|
|
status = "disabled";
|
|
num-channels = <1>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
pit0_channel0: pit0_channel@0 {
|
|
compatible = "nxp,pit-channel";
|
|
reg = <0>;
|
|
status = "disabled";
|
|
};
|
|
};
|
|
|
|
* The :dtcompatible:`nxp,kinetis-ethernet` has been deprecated in favor of
|
|
:dtcompatible:`nxp,enet`. All in tree SOCs were converted to use this new schema.
|
|
Thus, all boards using NXP's ENET peripheral will need to align to this binding
|
|
in DT, which also comes with a different version driver. Alternatively,
|
|
the Ethernet node can be deleted and redefined as the old binding to use
|
|
the deprecated legacy driver. The primary advantage of the new binding
|
|
is to be able to abstract an arbitrary phy through the mdio API. (:github:`70400`)
|
|
Example of a basic board level ENET DT definition:
|
|
|
|
.. code-block:: devicetree
|
|
|
|
&enet_mac {
|
|
status = "okay";
|
|
pinctrl-0 = <&pinmux_enet>;
|
|
pinctrl-names = "default";
|
|
phy-handle = <&phy>;
|
|
zephyr,random-mac-address;
|
|
phy-connection-type = "rmii";
|
|
};
|
|
|
|
&enet_mdio {
|
|
status = "okay";
|
|
pinctrl-0 = <&pinmux_enet_mdio>;
|
|
pinctrl-names = "default";
|
|
phy: phy@3 {
|
|
compatible = "ethernet-phy";
|
|
reg = <3>;
|
|
status = "okay";
|
|
};
|
|
};
|
|
|
|
* The :dtcompatible:`nxp,kinetis-lptmr` compatible string has been changed to
|
|
:dtcompatible:`nxp,lptmr`. The old string will be usable for a short time, but
|
|
should be replaced for it will be removed in the future.
|
|
|
|
* Some of the driver API structs have been rename to have the required ``_driver_api`` suffix. (:github:`72182`)
|
|
The following types have been renamed:
|
|
|
|
* ``emul_sensor_backend_api`` to :c:struct:`emul_sensor_driver_api`
|
|
* ``emul_bbram_backend_api`` to :c:struct:`emul_bbram_driver_api`
|
|
* ``usbc_ppc_drv`` to :c:struct:`usbc_ppc_driver_api`
|
|
|
|
* The driver for :dtcompatible:`maxim,max31790` got split up into a MFD and an
|
|
actual PWM driver. (:github:`68433`)
|
|
Previously, an instance of this device could have been defined like this:
|
|
|
|
.. code-block:: devicetree
|
|
|
|
max31790_max31790: max31790@20 {
|
|
compatible = "maxim,max31790";
|
|
status = "okay";
|
|
reg = <0x20>;
|
|
pwm-controller;
|
|
#pwm-cells = <2>;
|
|
};
|
|
|
|
This can be converted to:
|
|
|
|
.. code-block:: devicetree
|
|
|
|
max31790_max31790: max31790@20 {
|
|
compatible = "maxim,max31790";
|
|
status = "okay";
|
|
reg = <0x20>;
|
|
|
|
max31790_max31790_pwm: max31790_max31790_pwm {
|
|
compatible = "maxim,max31790-pwm";
|
|
status = "okay";
|
|
pwm-controller;
|
|
#pwm-cells = <2>;
|
|
};
|
|
};
|
|
|
|
* The driver for :dtcompatible:`invensense,icm42688` now correctly supports device
|
|
tree configuration(:github:`74267`). Prior devicetrees may have tried to use
|
|
the bindings to set sample rate and scale for the accel/gyro without any
|
|
effect. The devicetree usage should now use the provided defines and include
|
|
file along with new bindings which take these values.
|
|
|
|
For example:
|
|
|
|
.. code-block:: devicetree
|
|
|
|
#include <zephyr/dt-bindings/sensor/icm42688.h>
|
|
|
|
icm42688: icm42688@0 {
|
|
accel-pwr-mode = <ICM42688_ACCEL_LN>;
|
|
accel-fs = <ICM42688_ACCEL_FS_16G>;
|
|
accel-odr = <ICM42688_ACCEL_ODR_2000>;
|
|
gyro-pwr-mode= <ICM42688_GYRO_LN>;
|
|
gyro-fs = <ICM42688_GYRO_FS_2000>;
|
|
gyro-odr = <ICM42688_GYRO_ODR_2000>;
|
|
};
|
|
|
|
* :dtcompatible:`st,lis2mdl` property ``spi-full-duplex`` changed to ``duplex =
|
|
SPI_FULL_DUPLEX``. Full duplex is now the default.
|
|
|
|
* The DT property ``nxp,reference-supply`` of :dtcompatible:`nxp,lpc-lpadc` driver has
|
|
been removed, users should remove this property from their devicetree if it is present.
|
|
Added new phandle-array type DT property ``nxp,references``, the user can use this
|
|
property to specify the reference voltage and reference voltage value to be used by
|
|
the lpadc. (:github:`75005`)
|
|
|
|
* The DT properties ``mc,interface-type``, ``mc,reset-gpio``, and ``mc,interrupt-gpio`` of
|
|
the :dtcompatible:`microchip,ksz8081` phy binding have changed to
|
|
``microchip,interface-type``, ``reset-gpios``, and ``int-gpios``, respectively (:github:`73725`)
|
|
|
|
Charger
|
|
=======
|
|
|
|
* Dropped ``constant-charge-current-max-microamp`` property in ``charger_max20335`` driver because
|
|
it did not reflect real chip functionality. (:github:`69910`)
|
|
|
|
* Added enum key to ``constant-charge-voltage-max-microvolt`` property in ``maxim,max20335-charger``
|
|
binding to indicate invalid devicetree values at build time. (:github:`69910`)
|
|
|
|
Controller Area Network (CAN)
|
|
=============================
|
|
|
|
* Removed the following deprecated CAN controller devicetree properties. Out-of-tree boards using
|
|
these properties can switch to using the ``bitrate``, ``sample-point``, ``bitrate-data``, and
|
|
``sample-point-data`` devicetree properties (or rely on
|
|
:kconfig:option:`CONFIG_CAN_DEFAULT_BITRATE` and
|
|
:kconfig:option:`CONFIG_CAN_DEFAULT_BITRATE_DATA`) for specifying the initial CAN bitrate:
|
|
|
|
* ``sjw``
|
|
* ``prop-seg``
|
|
* ``phase-seg1``
|
|
* ``phase-seg2``
|
|
* ``sjw-data``
|
|
* ``prop-seg-data``
|
|
* ``phase-seg1-data``
|
|
* ``phase-seg2-data``
|
|
|
|
The ``bus-speed`` and ``bus-speed-data`` CAN controller devicetree properties have been
|
|
deprecated.
|
|
|
|
(:github:`68714`)
|
|
|
|
* Support for manual bus-off recovery was reworked (:github:`69460`):
|
|
|
|
* Automatic bus recovery will always be enabled upon driver initialization regardless of Kconfig
|
|
options. Since CAN controllers are initialized in "stopped" state, no unwanted bus-off recovery
|
|
will be started at this point.
|
|
* The Kconfig ``CONFIG_CAN_AUTO_BUS_OFF_RECOVERY`` was renamed (and inverted) to
|
|
:kconfig:option:`CONFIG_CAN_MANUAL_RECOVERY_MODE`, which is disabled by default. This Kconfig
|
|
option enables support for the :c:func:`can_recover()` API function and a new manual recovery mode
|
|
(see the next bullet).
|
|
* A new CAN controller operational mode :c:macro:`CAN_MODE_MANUAL_RECOVERY` was added. Support for
|
|
this is only enabled if :kconfig:option:`CONFIG_CAN_MANUAL_RECOVERY_MODE` is enabled. Having
|
|
this as a mode allows applications to inquire whether the CAN controller supports manual
|
|
recovery mode via the :c:func:`can_get_capabilities` API function. The application can then
|
|
either fail initialization or rely on automatic bus-off recovery. Having this as a mode
|
|
furthermore allows CAN controller drivers not supporting manual recovery mode to fail early in
|
|
:c:func:`can_set_mode` during application startup instead of failing when :c:func:`can_recover`
|
|
is called at a later point in time.
|
|
|
|
Crypto
|
|
======
|
|
|
|
* The CSS driver has been deprecated on NXP lpc55s36 (:github:`71173`).
|
|
|
|
Display
|
|
=======
|
|
|
|
* GC9X01 based displays now use the MIPI DBI driver class. These displays
|
|
must now be declared within a MIPI DBI driver wrapper device, which will
|
|
manage interfacing with the display. (:github:`73686`)
|
|
For an example, see below:
|
|
|
|
.. code-block:: devicetree
|
|
|
|
/* Legacy GC9X01 display definition */
|
|
&spi0 {
|
|
gc9a01: gc9a01@0 {
|
|
status = "okay";
|
|
compatible = "galaxycore,gc9x01x";
|
|
reg = <0>;
|
|
spi-max-frequency = <100000000>;
|
|
cmd-data-gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
|
|
reset-gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
|
|
...
|
|
};
|
|
};
|
|
|
|
/* New display definition with MIPI DBI device */
|
|
|
|
#include <zephyr/dt-bindings/mipi_dbi/mipi_dbi.h>
|
|
|
|
...
|
|
|
|
mipi_dbi {
|
|
compatible = "zephyr,mipi-dbi-spi";
|
|
dc-gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
|
|
reset-gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
|
|
spi-dev = <&spi0>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
gc9a01: gc9a01@0 {
|
|
status = "okay";
|
|
compatible = "galaxycore,gc9x01x";
|
|
reg = <0>;
|
|
mipi-max-frequency = <100000000>;
|
|
...
|
|
};
|
|
};
|
|
|
|
|
|
* ST7735R based displays now use the MIPI DBI driver class. These displays
|
|
must now be declared within a MIPI DBI driver wrapper device, which will
|
|
manage interfacing with the display. Note that the ``cmd-data-gpios`` pin has
|
|
changed polarity with this update, to align better with the new
|
|
``dc-gpios`` name. For an example, see below:
|
|
|
|
.. code-block:: devicetree
|
|
|
|
/* Legacy ST7735R display definition */
|
|
&spi0 {
|
|
st7735r: st7735r@0 {
|
|
compatible = "sitronix,st7735r";
|
|
reg = <0>;
|
|
spi-max-frequency = <32000000>;
|
|
reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
|
|
cmd-data-gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
|
|
...
|
|
};
|
|
};
|
|
|
|
/* New display definition with MIPI DBI device */
|
|
|
|
#include <zephyr/dt-bindings/mipi_dbi/mipi_dbi.h>
|
|
|
|
...
|
|
|
|
mipi_dbi {
|
|
compatible = "zephyr,mipi-dbi-spi";
|
|
reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
|
|
dc-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
|
|
spi-dev = <&spi0>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
st7735r: st7735r@0 {
|
|
compatible = "sitronix,st7735r";
|
|
reg = <0>;
|
|
mipi-max-frequency = <32000000>;
|
|
mipi-mode = <MIPI_DBI_MODE_SPI_4WIRE>;
|
|
...
|
|
};
|
|
};
|
|
|
|
* UC81XX based displays now use the MIPI DBI driver class. These displays must
|
|
now be declared within a MIPI DBI driver wrapper device, which will manage
|
|
interfacing with the display. (:github:`73812`) Note that the ``dc-gpios``
|
|
pin has changed polarity with this update, for an example, see below:
|
|
|
|
.. code-block:: devicetree
|
|
|
|
/* Legacy UC81XX display definition */
|
|
&spi0 {
|
|
uc8179: uc8179@0 {
|
|
compatible = "ultrachip,uc8179";
|
|
reg = <0>;
|
|
spi-max-frequency = <4000000>;
|
|
reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
|
|
dc-gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
|
|
...
|
|
};
|
|
};
|
|
|
|
/* New display definition with MIPI DBI device */
|
|
|
|
#include <zephyr/dt-bindings/mipi_dbi/mipi_dbi.h>
|
|
|
|
...
|
|
|
|
mipi_dbi {
|
|
compatible = "zephyr,mipi-dbi-spi";
|
|
reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
|
|
dc-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
|
|
spi-dev = <&spi0>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
uc8179: uc8179@0 {
|
|
compatible = "ultrachip,uc8179";
|
|
reg = <0>;
|
|
mipi-max-frequency = <4000000>;
|
|
...
|
|
};
|
|
};
|
|
|
|
* ST7789V based displays now use the MIPI DBI driver class. These displays
|
|
must now be declared within a MIPI DBI driver wrapper device, which will
|
|
manage interfacing with the display. (:github:`73750`) Note that the
|
|
``cmd-data-gpios`` pin has changed polarity with this update, to align better
|
|
with the new ``dc-gpios`` name. For an example, see below:
|
|
|
|
.. code-block:: devicetree
|
|
|
|
/* Legacy ST7789V display definition */
|
|
&spi0 {
|
|
st7789: st7789@0 {
|
|
compatible = "sitronix,st7789v";
|
|
reg = <0>;
|
|
spi-max-frequency = <32000000>;
|
|
reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
|
|
cmd-data-gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
|
|
...
|
|
};
|
|
};
|
|
|
|
/* New display definition with MIPI DBI device */
|
|
|
|
#include <zephyr/dt-bindings/mipi_dbi/mipi_dbi.h>
|
|
|
|
...
|
|
|
|
mipi_dbi {
|
|
compatible = "zephyr,mipi-dbi-spi";
|
|
reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
|
|
dc-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
|
|
spi-dev = <&spi0>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
st7789: st7789@0 {
|
|
compatible = "sitronix,st7789v";
|
|
reg = <0>;
|
|
mipi-max-frequency = <32000000>;
|
|
mipi-mode = <MIPI_DBI_MODE_SPI_4WIRE>;
|
|
...
|
|
};
|
|
};
|
|
|
|
* SSD16XX based displays now use the MIPI DBI driver class (:github:`73946`).
|
|
These displays must now be declared within a MIPI DBI driver wrapper device,
|
|
which will manage interfacing with the display. Note that the ``dc-gpios``
|
|
pin has changed polarity with this update. For an example, see below:
|
|
|
|
.. code-block:: devicetree
|
|
|
|
/* Legacy SSD16XX display definition */
|
|
&spi0 {
|
|
ssd1680: ssd1680@0 {
|
|
compatible = "solomon,ssd1680";
|
|
reg = <0>;
|
|
spi-max-frequency = <4000000>;
|
|
reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
|
|
dc-gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
|
|
...
|
|
};
|
|
};
|
|
|
|
/* New display definition with MIPI DBI device */
|
|
|
|
#include <zephyr/dt-bindings/mipi_dbi/mipi_dbi.h>
|
|
|
|
...
|
|
|
|
mipi_dbi {
|
|
compatible = "zephyr,mipi-dbi-spi";
|
|
reset-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
|
|
dc-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
|
|
spi-dev = <&spi0>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
ssd1680: ssd1680@0 {
|
|
compatible = "solomon,ssd1680";
|
|
reg = <0>;
|
|
mipi-max-frequency = <4000000>;
|
|
...
|
|
};
|
|
};
|
|
|
|
* The ``orientation-flipped`` property has been removed from the SSD16XX
|
|
display driver, as the driver now supports display rotation. Users should
|
|
drop this property from their devicetree, and set orientation at runtime
|
|
via :c:func:`display_set_orientation` (:github:`73360`)
|
|
|
|
Enhanced Serial Peripheral Interface (eSPI)
|
|
===========================================
|
|
|
|
* The macros ``ESPI_SLAVE_TO_MASTER`` and ``ESPI_MASTER_TO_SLAVE`` were renamed to
|
|
``ESPI_TARGET_TO_CONTROLLER`` and ``ESPI_CONTROLLER_TO_TARGET`` respectively to reflect
|
|
the new terminology in eSPI 1.5 specification.
|
|
The enum values ``ESPI_VWIRE_SIGNAL_SLV_BOOT_STS``, ``ESPI_VWIRE_SIGNAL_SLV_BOOT_DONE`` and
|
|
all ``ESPI_VWIRE_SIGNAL_SLV_GPIO_<NUMBER>`` signals were renamed to
|
|
``ESPI_VWIRE_SIGNAL_TARGET_BOOT_STS``, ``ESPI_VWIRE_SIGNAL_TARGET_BOOT_DONE`` and
|
|
``ESPI_VWIRE_SIGNAL_TARGET_GPIO_<NUMBER>`` respectively to reflect the new terminology
|
|
in eSPI 1.5 specification. (:github:`68492`)
|
|
The Kconfig ``CONFIG_ESPI_SLAVE`` was renamed to :kconfig:option:`CONFIG_ESPI_TARGET`, similarly
|
|
``CONFIG_ESPI_SAF`` was renamed as :kconfig:option:`CONFIG_ESPI_TAF` (:github:`73887`)
|
|
|
|
GNSS
|
|
====
|
|
|
|
* Basic power management support has been added to the ``gnss-nmea-generic`` driver.
|
|
If ``CONFIG_PM_DEVICE=y`` the driver is now initialized in suspended mode and the
|
|
application needs to call :c:func:`pm_device_action_run` with :c:macro:`PM_DEVICE_ACTION_RESUME`
|
|
to start up the driver. (:github:`71774`)
|
|
|
|
Input
|
|
=====
|
|
|
|
* The ``analog-axis`` deadzone calibration value has been changed to be
|
|
relative to the raw ADC values, similarly to min and max. The data structures
|
|
and properties have been renamed to reflect that (from ``out-deadzone`` to
|
|
``in-deadzone``) and when migrating to the new definition the value should be
|
|
scaled accordingly. (:github:`70377`)
|
|
|
|
* The ``holtek,ht16k33-keyscan`` driver has been converted to use the
|
|
:ref:`input` subsystem, callbacks have to be migrated to use the input APIs,
|
|
:dtcompatible:`zephyr,kscan-input` can be used for backward compatibility. (:github:`69875`)
|
|
|
|
Interrupt Controller
|
|
====================
|
|
|
|
* The static auto-generation of the multilevel interrupt controller lookup table has been
|
|
deprecated, and will be compiled only when the new compatibility Kconfig:
|
|
:kconfig:option:`CONFIG_LEGACY_MULTI_LEVEL_TABLE_GENERATION` is enabled, which will eventually
|
|
be removed in the coming releases.
|
|
|
|
Multi-level interrupt controller drivers should be updated to use the newly created
|
|
``IRQ_PARENT_ENTRY_DEFINE`` macro to register itself with the new multi-level interrupt
|
|
architecture. To make the macro easier to use, ``INTC_INST_ISR_TBL_OFFSET`` macro is made to
|
|
deduce the software ISR table offset for a given driver instance, for pseudo interrupt controller
|
|
child, use the ``INTC_CHILD_ISR_TBL_OFFSET`` macro instead. New devicetree macros
|
|
(``DT_INTC_GET_AGGREGATOR_LEVEL`` & ``DT_INST_INTC_GET_AGGREGATOR_LEVEL``) have been added
|
|
for an interrupt controller driver instance to pass its aggregator level into the
|
|
``IRQ_PARENT_ENTRY_DEFINE`` macro.
|
|
|
|
LED Strip
|
|
=========
|
|
|
|
* The property ``in-gpios`` defined in :dtcompatible:`worldsemi,ws2812-gpio` has been
|
|
renamed to ``gpios``. (:github:`68514`)
|
|
|
|
* The ``chain-length`` and ``color-mapping`` properties have been added to all LED strip bindings
|
|
and are now mandatory.
|
|
|
|
* Added a new mandatory ``length`` function which returns the length (number of pixels) of an LED
|
|
strip device.
|
|
|
|
* Made ``update_channels`` function optional and removed unimplemented functions.
|
|
|
|
* The ``CONFIG_WS2812_STRIP_DRIVER`` kconfig option has been removed.
|
|
Previously, when using :kconfig:option:`CONFIG_WS2812_STRIP_SPI`,
|
|
:kconfig:option:`CONFIG_WS2812_STRIP_I2S`, :kconfig:option:`CONFIG_WS2812_STRIP_GPIO`,
|
|
or :kconfig:option:`CONFIG_WS2812_STRIP_RPI_PICO_PIO`, one of them had to be selected with
|
|
``CONFIG_WS2812_STRIP_DRIVER``, but this is no longer necessary. Please set each option directly.
|
|
|
|
MDIO
|
|
====
|
|
|
|
* :kconfig:option:`CONFIG_MDIO_NXP_ENET_TIMEOUT` is now in units of
|
|
microseconds instead of milliseconds. (:github:`75625`)
|
|
|
|
Sensors
|
|
=======
|
|
|
|
* The ``chip`` devicetree property from the :dtcompatible:`sensirion,shtcx` sensor driver has been
|
|
removed. Chip variants are now selected using the matching compatible property (:github:`74033`).
|
|
For an example of the new shtc3 configuration, see below:
|
|
|
|
.. code-block:: devicetree
|
|
|
|
&i2c0 {
|
|
status = "okay";
|
|
|
|
shtc3: shtc3@70 {
|
|
compatible = "sensirion,shtc3", "sensirion,shtcx";
|
|
reg = <0x70>;
|
|
measure-mode = "normal";
|
|
clock-stretching;
|
|
};
|
|
};
|
|
|
|
Serial
|
|
======
|
|
|
|
* The Raspberry Pi UART driver ``uart_rpi_pico`` has been removed.
|
|
Use ``uart_pl011`` (:dtcompatible:`arm,pl011`) instead. (:github:`71074`)
|
|
|
|
Regulator
|
|
=========
|
|
|
|
* The :dtcompatible:`nxp,vref` driver no longer supports the ground selection function,
|
|
as this setting should not be modified by the user. The DT property ``nxp,ground-select``
|
|
has been removed, users should remove this property from their devicetree if it is present.
|
|
(:github:`70642`)
|
|
|
|
W1
|
|
==
|
|
|
|
* The :dtcompatible:`zephyr,w1-gpio` 1-Wire master driver no longer defaults to enabling the
|
|
internal pull-up resistor of the GPIO pin. The configuration is now taken from the pin's
|
|
configuration flags specified in devicetree. (:github:`71789`)
|
|
|
|
Watchdog
|
|
========
|
|
|
|
* The ``nuvoton,npcx-watchdog`` driver has been changed to extend the max timeout period.
|
|
The time of one watchdog count varies with the different pre-scalar settings.
|
|
Removed :kconfig:option:`CONFIG_WDT_NPCX_DELAY_CYCLES` because it is no longer suitable to
|
|
set the leading warning time.
|
|
Instead, added the :kconfig:option:`CONFIG_WDT_NPCX_WARNING_LEADING_TIME_MS` to set
|
|
the leading warning time in milliseconds.
|
|
|
|
Bluetooth
|
|
*********
|
|
|
|
Bluetooth HCI
|
|
=============
|
|
|
|
* A new HCI driver API was introduced (:github:`72323`) and the old one deprecated. The new API
|
|
follows the normal Zephyr driver model, with devicetree nodes, etc. The host now
|
|
selects which driver instance to use as the controller by looking for a ``zephyr,bt-hci``
|
|
chosen property. The devicetree bindings for all HCI drivers derive from a common
|
|
``bt-hci.yaml`` base binding.
|
|
|
|
* As part of the new HCI driver API, the ``zephyr,bt-uart`` chosen property is no longer used,
|
|
rather the UART HCI drivers select their UART by looking for the parent devicetree node of the
|
|
HCI driver instance node.
|
|
* As part of the new HCI driver API, the ``zephyr,bt-hci-ipc`` chosen property is only used for
|
|
the controller side, whereas the HCI driver now relies on nodes with the compatible string
|
|
``zephyr,bt-hci-ipc``.
|
|
* The ``BT_NO_DRIVER`` Kconfig option was removed. HCI drivers are no-longer behind a Kconfig
|
|
choice, rather they can now be enabled and disabled independently, mostly based on their
|
|
respective devicetree node being enabled or not.
|
|
* The ``BT_HCI_VS_EXT`` Kconfig option was deleted and the feature is now included in the
|
|
:kconfig:option:`CONFIG_BT_HCI_VS` Kconfig option.
|
|
* The ``BT_HCI_VS_EVT`` Kconfig option was removed, since vendor event support is implicit if
|
|
the :kconfig:option:`CONFIG_BT_HCI_VS` option is enabled.
|
|
* The bt_read_static_addr() API was removed. This wasn't really a completely public API, but
|
|
since it was exposed by the public hci_driver.h header file the removal is mentioned here.
|
|
Enable the :kconfig:option:`CONFIG_BT_HCI_VS` Kconfig option instead, and use vendor specific
|
|
HCI commands API to get the Controller's Bluetooth static address when available.
|
|
|
|
Bluetooth Mesh
|
|
==============
|
|
|
|
* The model metadata pointer declaration of :c:struct:`bt_mesh_model` has been changed
|
|
to add ``const`` qualifiers. The data pointer of :c:struct:`bt_mesh_models_metadata_entry`
|
|
got ``const`` qualifier too. The model's metadata structure and metadata raw value
|
|
can be declared as permanent constants in the non-volatile memory. (:github:`69679`)
|
|
|
|
* The model metadata pointer declaration of :c:struct:`bt_mesh_model` has been changed
|
|
to a single ``const *`` and redundant metadata pointer from :c:struct:`bt_mesh_health_srv`
|
|
is removed. Consequently, :code:`BT_MESH_MODEL_HEALTH_SRV` definition is changed
|
|
to use variable argument notation. Now, when your implementation
|
|
supports :kconfig:option:`CONFIG_BT_MESH_LARGE_COMP_DATA_SRV` and when you need to
|
|
specify metadata for Health Server model, simply pass metadata as the last argument
|
|
to the :code:`BT_MESH_MODEL_HEALTH_SRV` macro, otherwise omit the last argument. (:github:`71281`)
|
|
|
|
Bluetooth Audio
|
|
===============
|
|
|
|
* :kconfig:option:`CONFIG_BT_ASCS`, :kconfig:option:`CONFIG_BT_PERIPHERAL` and
|
|
:kconfig:option:`CONFIG_BT_ISO_PERIPHERAL` are no longer enabled automatically when
|
|
enabling :kconfig:option:`CONFIG_BT_BAP_UNICAST_SERVER`, and these must now be set explicitly
|
|
in the project configuration file. (:github:`71993`)
|
|
|
|
* The discover callback functions :code:`bt_cap_initiator_cb.unicast_discovery_complete` and
|
|
:code:`bt_cap_commander_cb.discovery_complete` for CAP now contain an additional parameter for
|
|
the set member.
|
|
This needs to be added to all instances of CAP discovery callback functions defined.
|
|
(:github:`72797`)
|
|
|
|
* :c:func:`bt_bap_stream_start` no longer connects the CIS. To connect the CIS,
|
|
the :c:func:`bt_bap_stream_connect` shall now be called before :c:func:`bt_bap_stream_start`.
|
|
(:github:`73032`)
|
|
|
|
* Renamed ``stream_lang`` to just ``lang`` to better fit with the assigned numbers document.
|
|
This affects the ``BT_AUDIO_METADATA_TYPE_LANG`` macro and the following functions:
|
|
|
|
* :c:func:`bt_audio_codec_cap_meta_set_lang`
|
|
* :c:func:`bt_audio_codec_cap_meta_get_lang`
|
|
* :c:func:`bt_audio_codec_cfg_meta_set_lang`
|
|
* :c:func:`bt_audio_codec_cfg_meta_get_lang`
|
|
|
|
(:github:`72584`)
|
|
|
|
* Changed ``lang`` from ``uint32_t`` to ``uint8_t [3]``. This modifies the following functions:
|
|
|
|
* :c:func:`bt_audio_codec_cap_meta_set_lang`
|
|
* :c:func:`bt_audio_codec_cap_meta_get_lang`
|
|
* :c:func:`bt_audio_codec_cfg_meta_set_lang`
|
|
* :c:func:`bt_audio_codec_cfg_meta_get_lang`
|
|
|
|
The result of this is that string values such as ``"eng"`` and ``"deu"`` can now be used to set
|
|
new values, and to prevent unnecessary copies of data when getting the values. (:github:`72584`)
|
|
|
|
* All occurrences of ``set_sirk`` have been changed to just ``sirk`` as the ``s`` in ``sirk`` stands
|
|
for set. (:github:`73413`)
|
|
|
|
* Added ``fallback_to_default`` parameter to :c:func:`bt_audio_codec_cfg_get_chan_allocation`.
|
|
To maintain existing behavior set the parameter to ``false``. (:github:`72090`)
|
|
|
|
* Added ``fallback_to_default`` parameter to
|
|
:c:func:`bt_audio_codec_cap_get_supported_audio_chan_counts`.
|
|
To maintain existing behavior set the parameter to ``false``. (:github:`72090`)
|
|
|
|
* Added ``fallback_to_default`` parameter to
|
|
:c:func:`bt_audio_codec_cap_get_max_codec_frames_per_sdu`.
|
|
To maintain existing behavior set the parameter to ``false``. (:github:`72090`)
|
|
|
|
* Added ``fallback_to_default`` parameter to
|
|
:c:func:`bt_audio_codec_cfg_meta_get_pref_context`.
|
|
To maintain existing behavior set the parameter to ``false``. (:github:`72090`)
|
|
|
|
Bluetooth Classic
|
|
=================
|
|
|
|
* The source files of Host BR/EDR have been moved to ``subsys/bluetooth/host/classic``.
|
|
The Header files of Host BR/EDR have been moved to ``include/zephyr/bluetooth/classic``.
|
|
Removed the :kconfig:option:`CONFIG_BT_BREDR`. It is replaced by new option
|
|
:kconfig:option:`CONFIG_BT_CLASSIC`. (:github:`69651`)
|
|
|
|
Bluetooth Host
|
|
==============
|
|
|
|
* The advertiser options :code:`BT_LE_ADV_OPT_USE_NAME` and :code:`BT_LE_ADV_OPT_FORCE_NAME_IN_AD`
|
|
are deprecated in this release. The application need to include the device name explicitly. One
|
|
way to do it is by adding the following to the advertising data or scan response data passed to
|
|
the host:
|
|
|
|
.. code-block:: c
|
|
|
|
BT_DATA(BT_DATA_NAME_COMPLETE, CONFIG_BT_DEVICE_NAME, sizeof(CONFIG_BT_DEVICE_NAME) - 1)
|
|
|
|
(:github:`71686`)
|
|
|
|
* The field :code:`init_credits` in :c:type:`bt_l2cap_le_endpoint` has been removed as it was no
|
|
longer used in Zephyr 3.4.0 and later. Any references to this field should be removed. No further
|
|
action is needed.
|
|
|
|
* :c:macro:`BT_LE_ADV_PARAM` now returns a :code:`const` pointer.
|
|
Any place where the result is stored in a local variable such as
|
|
:code:`struct bt_le_adv_param *param = BT_LE_ADV_CONN;` will need to
|
|
be updated to :code:`const struct bt_le_adv_param *param = BT_LE_ADV_CONN;` or use it for
|
|
initialization like :code:`struct bt_le_adv_param param = *BT_LE_ADV_CONN;`
|
|
|
|
The change to :c:macro:`BT_LE_ADV_PARAM` also affects all of its derivatives, including but not
|
|
limited to:
|
|
|
|
* :c:macro:`BT_LE_ADV_CONN`
|
|
* :c:macro:`BT_LE_ADV_NCONN`
|
|
* :c:macro:`BT_LE_EXT_ADV_SCAN`
|
|
* :c:macro:`BT_LE_EXT_ADV_CODED_NCONN_NAME`
|
|
|
|
(:github:`75065`)
|
|
|
|
* :kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT` now needs to be larger than
|
|
:kconfig:option:`CONFIG_BT_MAX_CONN`. This was always the case due to the design of the HCI
|
|
interface. It is now being enforced through a build-time assertion.
|
|
|
|
(:github:`75592`)
|
|
|
|
Bluetooth Crypto
|
|
================
|
|
|
|
* :kconfig:option:`CONFIG_BT_USE_PSA_API` was added to explicitly request use
|
|
of PSA APIs instead of TinyCrypt for crypto operations. Of course, this is
|
|
possible only a PSA crypto provider available in the system, i.e.
|
|
:kconfig:option:`CONFIG_PSA_CRYPTO_CLIENT` is set. (:github:`73378`)
|
|
|
|
Networking
|
|
**********
|
|
|
|
* Deprecate the :kconfig:option:`CONFIG_NET_SOCKETS_POSIX_NAMES` option. It is a legacy option
|
|
and was used to allow user to call BSD socket API while not enabling POSIX API.
|
|
This could cause complications when building applications that wanted to enable the
|
|
:kconfig:option:`CONFIG_POSIX_API` option. This means that if the application wants to use
|
|
normal BSD socket interface, then it needs to enable :kconfig:option:`CONFIG_POSIX_API`.
|
|
If the application does not want or is not able to enable that option, then the socket API
|
|
calls need to be prefixed by a ``zsock_`` string.
|
|
All the sample applications that use BSD socket interface are changed to enable
|
|
:kconfig:option:`CONFIG_POSIX_API`. Internally the network stack will not enable POSIX API
|
|
option which means that various network libraries that use sockets, are converted to
|
|
use the ``zsock_*`` API calls. (:github:`69950`)
|
|
|
|
* The zperf zperf_results struct is changed to support 64 bits transferred bytes (total_len)
|
|
and test duration (time_in_us and client_time_in_us), instead of 32 bits. This will make
|
|
the long-duration zperf test show with correct throughput result. (:github:`69500`)
|
|
|
|
* Each IPv4 address assigned to a network interface has an IPv4 netmask
|
|
tied to it instead of being set for the whole interface.
|
|
If there is only one IPv4 address specified for a network interface,
|
|
nothing changes from the user point of view. But, if there is more than
|
|
one IPv4 address / network interface, the netmask must be specified
|
|
for each IPv4 address separately. (:github:`68419`)
|
|
|
|
* Virtual network interface API no longer has the ``input`` callback. The input callback was
|
|
used to read the inner IPv4/IPv6 packets in an IP tunnel. This incoming tunnel read is now
|
|
implemented in the ``recv`` callback. (:github:`70549`)
|
|
|
|
* Virtual LAN (VLAN) implementation is changed to use the Virtual network interfaces.
|
|
There are no API changes, but the type of a VLAN network interface is changed from ``ETHERNET``
|
|
to ``VIRTUAL``. This could require changes to the code that sets the VLAN tags to a network
|
|
interface. For example in the :c:func:`net_eth_is_vlan_enabled()` API, the 2nd interface parameter
|
|
must point to the main Ethernet interface, and not to the VLAN interface. (:github:`70345`)
|
|
|
|
* Modified the ``wifi connect`` command to use key-value format for the arguments. In the
|
|
previous implementation, we were identifying an option using its position in the argument string.
|
|
This made it difficult to deal with optional arguments or extending the support
|
|
for other options. Having this key-value format makes it easier to extend the options that
|
|
can be passed to the connect command.
|
|
``wifi -h`` will give more information about the usage of connect command.
|
|
(:github:`70024`)
|
|
|
|
* The Kconfig :kconfig:option:`CONFIG_NET_TCP_ACK_TIMEOUT` has been deprecated. Its usage was
|
|
limited to TCP handshake only, and in such case the total timeout should depend
|
|
on the total retransmission timeout (as in other cases) making the config
|
|
redundant and confusing. Use :kconfig:option:`CONFIG_NET_TCP_INIT_RETRANSMISSION_TIMEOUT` and
|
|
:kconfig:option:`CONFIG_NET_TCP_RETRY_COUNT` instead to control the total timeout at the
|
|
TCP level. (:github:`70731`)
|
|
|
|
* In LwM2M API, the callback type :c:type:`lwm2m_engine_set_data_cb_t` has now an additional
|
|
parameter ``offset``. This parameter is used to indicate the offset of the data
|
|
during a Coap Block-wise transfer. Any post write, validate or some firmware callbacks
|
|
should be updated to include this parameter. (:github:`72590`)
|
|
|
|
* The DNS resolver and mDNS/LLMNR responders are converted to use socket service API.
|
|
This means that the number of pollable sockets in the system might need to be increased.
|
|
Please check that the values of :kconfig:option:`CONFIG_NET_SOCKETS_POLL_MAX` and
|
|
:kconfig:option:`CONFIG_POSIX_MAX_FDS` are high enough. Unfortunately no exact values
|
|
for these can be given as it depends on application needs and usage. (:github:`72834`)
|
|
|
|
* The packet socket (type ``AF_PACKET``) protocol field in ``socket`` API call has changed.
|
|
The protocol field should be in network byte order so that we are compatible with Linux
|
|
socket calls. Linux expects the protocol field to be ``htons(ETH_P_ALL)`` if it is desired
|
|
to receive all the network packets. See details in
|
|
https://www.man7.org/linux/man-pages/man7/packet.7.html documentation. (:github:`73338`)
|
|
|
|
* TCP now uses SHA-256 instead of MD5 for ISN generation. The crypto support for
|
|
this hash computation was also changed from Mbed TLS to PSA APIs. This was achieved
|
|
by making :kconfig:option:`CONFIG_NET_TCP_ISN_RFC6528` depend on
|
|
:kconfig:option:`PSA_WANT_ALG_SHA_256` instead of legacy ``CONFIG_MBEDTLS_*``
|
|
features. (:github:`71827`)
|
|
|
|
Other Subsystems
|
|
****************
|
|
|
|
Flash map
|
|
=========
|
|
|
|
* The crypto backend for the flash check functions (:kconfig:option:`CONFIG_FLASH_AREA_CHECK_INTEGRITY_BACKEND`),
|
|
previously provided through either TinyCrypt or Mbed TLS, is now provided through either PSA or Mbed TLS.
|
|
The updated Mbed TLS implementation has a slightly smaller footprint than the previous TinyCrypt one,
|
|
and the PSA implementation offers an even greater footprint reduction for devices built with TF-M.
|
|
PSA is the supported way forward, however as of now you may still use Mbed TLS if you cannot afford the
|
|
one-time cost of enabling the PSA API (:kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_C` for devices without TF-M).
|
|
:github:`73511`
|
|
|
|
hawkBit
|
|
=======
|
|
|
|
* :kconfig:option:`CONFIG_HAWKBIT_PORT` is now an int instead of a string.
|
|
:kconfig:option:`CONFIG_SETTINGS` needs to be enabled to use hawkBit, as it now uses the
|
|
settings subsystem to store the hawkBit configuration. (:github:`68806`)
|
|
|
|
MCUmgr
|
|
======
|
|
|
|
* The support for SHA-256 (when using checksum/hash functions), previously provided
|
|
by either TinyCrypt or Mbed TLS, is now provided by either PSA or Mbed TLS.
|
|
PSA is the recommended API going forward, however, if it is not already enabled
|
|
(:kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_CLIENT`) and you have tight code size
|
|
constraints, you may be able to save 1.3 KB by using Mbed TLS instead.
|
|
|
|
Modem
|
|
=====
|
|
|
|
* The ``CONFIG_MODEM_CHAT_LOG_BUFFER`` Kconfig option was
|
|
renamed to :kconfig:option:`CONFIG_MODEM_CHAT_LOG_BUFFER_SIZE`. (:github:`70405`)
|
|
|
|
.. _zephyr_3.7_posix_api_migration:
|
|
|
|
POSIX API
|
|
=========
|
|
|
|
* The :ref:`POSIX API Kconfig deprecations <zephyr_3.7_posix_api_deprecations>` may require
|
|
changes to Kconfig files (``prj.conf``, etc), as outlined in the release notes. A more automated
|
|
approach is available via the provided migration script. Simply run the following:
|
|
|
|
.. code-block:: bash
|
|
|
|
$ python ${ZEPHYR_BASE}/scripts/utils/migrate_posix_kconfigs.py -r root_path
|
|
|
|
State Machine Framework
|
|
=======================
|
|
|
|
* The :c:macro:`SMF_CREATE_STATE` macro now always takes 5 arguments. The amount of arguments is
|
|
now independent of the values of :kconfig:option:`CONFIG_SMF_ANCESTOR_SUPPORT` and
|
|
:kconfig:option:`CONFIG_SMF_INITIAL_TRANSITION`. If the additional arguments are not used, they
|
|
have to be set to ``NULL``. (:github:`71250`)
|
|
* SMF now follows a more UML-like transition flow when the transition source is a parent of the
|
|
state called by :c:func:`smf_run_state`. Exit actions up to (but not including) the Least Common
|
|
Ancestor of the transition source and target state will be executed, as will entry actions from
|
|
(but not including) the LCA down to the target state. (:github:`71675`)
|
|
* Previously, calling :c:func:`smf_set_state` with a ``new_state`` set to NULL would execute all
|
|
exit actions from the current state to the topmost parent, with the expectation the topmost exit
|
|
action would terminate the state machine. Passing ``NULL`` is now not allowed. Instead create a
|
|
'terminate' state at the top level, and call :c:func:`smf_set_terminate` from its entry action.
|
|
|
|
UpdateHub
|
|
=========
|
|
|
|
* The SHA-256 implementation used to perform integrity checks is not chosen with
|
|
:kconfig:option:`CONFIG_FLASH_AREA_CHECK_INTEGRITY_BACKEND` anymore. Instead, the implementation
|
|
used (now either Mbed TLS or PSA) is chosen based on :kconfig:option:`CONFIG_PSA_CRYPTO_CLIENT`.
|
|
It still defaults to using Mbed TLS (with a smaller footprint than previously) unless the
|
|
board is built with TF-M or :kconfig:option:`CONFIG_MBEDTLS_PSA_CRYPTO_C` is enabled. (:github:`73511`)
|
|
|
|
Architectures
|
|
*************
|
|
|
|
* Function :c:func:`arch_start_cpu` has been renamed to :c:func:`arch_cpu_start`. (:github:`64987`)
|
|
|
|
* ``CONFIG_ARM64_ENABLE_FRAME_POINTER`` is deprecated. Use :kconfig:option:`CONFIG_FRAME_POINTER`
|
|
instead. (:github:`72646`)
|
|
|
|
* x86
|
|
|
|
* Kconfigs ``CONFIG_DISABLE_SSBD`` and ``CONFIG_ENABLE_EXTENDED_IBRS``
|
|
are deprecated. Use :kconfig:option:`CONFIG_X86_DISABLE_SSBD` and
|
|
:kconfig:option:`CONFIG_X86_ENABLE_EXTENDED_IBRS` instead. (:github:`69690`)
|
|
|
|
* POSIX arch:
|
|
|
|
* LLVM fuzzing support has been refactored. A test application now needs to provide its own
|
|
``LLVMFuzzerTestOneInput()`` hook instead of relying on a board provided one. Check
|
|
``samples/subsys/debug/fuzz/`` for an example. (:github:`71378`)
|