You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1000 lines
42 KiB
1000 lines
42 KiB
: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`)
|
|
|