582 lines
24 KiB
ReStructuredText
582 lines
24 KiB
ReStructuredText
:orphan:
|
|
|
|
.. _migration_4.0:
|
|
|
|
Migration guide to Zephyr v4.0.0
|
|
################################
|
|
|
|
This document describes the changes required when migrating your application from Zephyr v3.7.0 to
|
|
Zephyr v4.0.0.
|
|
|
|
Any other changes (not directly related to migrating applications) can be found in
|
|
the :ref:`release notes<zephyr_4.0>`.
|
|
|
|
.. contents::
|
|
:local:
|
|
:depth: 2
|
|
|
|
Build System
|
|
************
|
|
|
|
* Removed the ``CONFIG_MCUBOOT_CMAKE_WEST_SIGN_PARAMS`` Kconfig option as ``west sign`` is no
|
|
longer called by the build system when signing images for MCUboot.
|
|
|
|
* The imgtool part of ``west sign`` has been deprecated, options to be supplied to imgtool when
|
|
signing should be set in :kconfig:option:`CONFIG_MCUBOOT_EXTRA_IMGTOOL_ARGS` instead.
|
|
|
|
Kernel
|
|
******
|
|
|
|
* Removed the deprecated :kconfig:option:`CONFIG_MP_NUM_CPUS`, application should be updated to use
|
|
:kconfig:option:`CONFIG_MP_MAX_NUM_CPUS` instead.
|
|
|
|
Boards
|
|
******
|
|
|
|
* :ref:`native_posix<native_posix>` has been deprecated in favour of
|
|
:ref:`native_sim<native_sim>` (:github:`76898`).
|
|
* Nordic nRF53 and nRF91 based boards can use the common devicetree overlays in ``dts/common/nordic``
|
|
to define default flash and ram partitioning based on TF-M.
|
|
|
|
* STM32WBA: The command used for fetching blobs required to build ble applications is now
|
|
``west blobs fetch hal_stm32`` instead of ``west blobs fetch stm32``.
|
|
|
|
* Board ``qemu_xtensa`` is deprecated. Use ``qemu_xtensa/dc233c`` instead.
|
|
|
|
Devicetree
|
|
**********
|
|
|
|
* The :c:macro:`DT_REG_ADDR` macro and its variants are now expanding into an
|
|
unsigned literals (i.e. with a ``U`` suffix). To use addresses as devicetree
|
|
indexes use the :c:macro:`DT_REG_ADDR_RAW` variants.
|
|
* The :c:macro:`DT_REG_SIZE` macro and its variants are also expanding into
|
|
unsigned literals, no raw variants are provided at this stage.
|
|
|
|
STM32
|
|
=====
|
|
|
|
* On all official STM32 boards, ``west flash`` selects STM32CubeProgrammer as the default west runner.
|
|
If you want to enforce the selection of another runner like OpenOCD or pyOCD for flashing, you should
|
|
specify it using the west ``--runner`` or ``-r`` option. (:github:`75284`)
|
|
* ADC: Domain clock needs to be explicitly defined if property st,adc-clock-source = <ASYNC> is used.
|
|
|
|
Modules
|
|
*******
|
|
|
|
Mbed TLS
|
|
========
|
|
|
|
* The Kconfig options ``CONFIG_MBEDTLS_TLS_VERSION_1_0`` and ``CONFIG_MBEDTLS_TLS_VERSION_1_1``
|
|
have been removed because Mbed TLS doesn't support TLS 1.0 and 1.1 anymore since v3.0. (:github:`76833`)
|
|
* The following Kconfig symbols were renamed (:github:`76408`):
|
|
* ``CONFIG_MBEDTLS_ENTROPY_ENABLED`` is now :kconfig:option:`CONFIG_MBEDTLS_ENTROPY_C`,
|
|
* ``CONFIG_MBEDTLS_ZEPHYR_ENTROPY`` is now :kconfig:option:`CONFIG_MBEDTLS_ENTROPY_POLL_ZEPHYR`.
|
|
|
|
* The Kconfig option ``CONFIG_MBEDTLS_SSL_EXPORT_KEYS`` was removed because the
|
|
corresponding build symbol was removed in Mbed TLS 3.1.0 and is now assumed to
|
|
be enabled. (:github:`77657`)
|
|
|
|
TinyCrypt
|
|
=========
|
|
|
|
Albeit the formal deprecation of TinyCrypt is not started yet, its removal from
|
|
the Zephyr codebase is. Formal deprecation will happen in the next release.
|
|
|
|
Trusted Firmware-M
|
|
==================
|
|
|
|
* The security counter used for the hardware rollback protection now comes explicitly from
|
|
:kconfig:option:`CONFIG_TFM_IMAGE_SECURITY_COUNTER`, instead of being automatically determined from
|
|
the image version. This has been changed as the implicit counter calculation is incompatible with
|
|
versions larger than ``0.0.1024`` (:github:`78128`).
|
|
|
|
LVGL
|
|
====
|
|
|
|
zcbor
|
|
=====
|
|
|
|
* Updated the zcbor library to version 0.9.0.
|
|
Full release notes at https://github.com/NordicSemiconductor/zcbor/blob/0.9.0/RELEASE_NOTES.md
|
|
Migration guide at https://github.com/NordicSemiconductor/zcbor/blob/0.9.0/MIGRATION_GUIDE.md
|
|
Migration guide copied here:
|
|
|
|
* ``zcbor_simple_*()`` functions have been removed to avoid confusion about their use.
|
|
They are still in the C file because they are used by other functions.
|
|
Instead, use the specific functions for the currently supported simple values, i.e.
|
|
``zcbor_bool_*()``, ``zcbor_nil_*()``, and ``zcbor_undefined_*()``.
|
|
If a removed variant is strictly needed, add your own forward declaration in your code.
|
|
|
|
* Code generation naming:
|
|
|
|
* More C keywords are now capitalized to avoid naming collision.
|
|
You might have to capitalize some instances if your code was generated to have those names.
|
|
|
|
* A fix was made to the naming of bstr elements with a .size specifier, which might mean that these elements change name in your code when you regenerate.
|
|
|
|
Device Drivers and Devicetree
|
|
*****************************
|
|
|
|
* The ``compatible`` of the LiteX ethernet controller has been renamed from
|
|
``litex,eth0`` to :dtcompatible:`litex,liteeth`. (:github:`75433`)
|
|
|
|
* The ``compatible`` of the LiteX uart controller has been renamed from
|
|
``litex,uart0`` to :dtcompatible:`litex,uart`. (:github:`74522`)
|
|
|
|
* The devicetree bindings for the Microchip ``mcp23xxx`` series have been split up. Users of
|
|
``microchip,mcp230xx`` and ``microchip,mcp23sxx`` should change their devicetree ``compatible``
|
|
values to the specific chip variant, e.g. :dtcompatible:`microchip,mcp23017`.
|
|
The ``ngpios`` devicetree property has been removed, since it is implied by the model name.
|
|
Chip variants with open-drain outputs (``mcp23x09``, ``mcp23x18``) now correctly reflect this in
|
|
their driver API, users of these devices should ensure they pass appropriate values to
|
|
:c:func:`gpio_pin_set`. (:github:`65797`)
|
|
|
|
* The ``power-domain`` property has been removed in favor of ``power-domains``.
|
|
The new property allows to add more than one power domain.
|
|
``power-domain-names`` is also available to optionally name each entry in
|
|
``power-domains``. The number of cells in the ``power-domains`` property need
|
|
to be defined using ``#power-domain-cells``.
|
|
|
|
Analog Digital Converter (ADC)
|
|
==============================
|
|
|
|
* For all STM32 ADC that selects an asynchronous clock through ``st,adc-clock-source`` property,
|
|
it is now mandatory to also explicitly define a domain clock source using the ``clock`` property.
|
|
|
|
Clock control
|
|
=============
|
|
|
|
* LFXO/HFXO (High/Low Frequency Crystal Oscillator) present in nRF53 series can
|
|
now be configured using devicetree. The Kconfig options
|
|
:kconfig:option:`CONFIG_SOC_ENABLE_LFXO`,
|
|
:kconfig:option:`CONFIG_SOC_LFXO_CAP_EXTERNAL`,
|
|
:kconfig:option:`CONFIG_SOC_LFXO_CAP_INT_6PF`,
|
|
:kconfig:option:`CONFIG_SOC_LFXO_CAP_INT_7PF`,
|
|
:kconfig:option:`CONFIG_SOC_LFXO_CAP_INT_9PF`,
|
|
:kconfig:option:`CONFIG_SOC_HFXO_CAP_DEFAULT`,
|
|
:kconfig:option:`CONFIG_SOC_HFXO_CAP_EXTERNAL`,
|
|
:kconfig:option:`CONFIG_SOC_HFXO_CAP_INTERNAL` and
|
|
:kconfig:option:`CONFIG_SOC_HFXO_CAP_INT_VALUE_X2` have been deprecated.
|
|
|
|
LFXO can now be configured like this:
|
|
|
|
.. code-block:: devicetree
|
|
|
|
/* use external capacitors */
|
|
&lfxo {
|
|
load-capacitors = "external";
|
|
};
|
|
|
|
/* use internal capacitors (value needs to be selected: 6, 7, 9pF)
|
|
&lfxo {
|
|
load-capacitors = "internal";
|
|
load-capacitance-picofarad = <...>;
|
|
};
|
|
|
|
HFXO can now be configured like this:
|
|
|
|
.. code-block:: devicetree
|
|
|
|
/* use external capacitors */
|
|
&hfxo {
|
|
load-capacitors = "external";
|
|
};
|
|
|
|
/* use internal capacitors (value needs to be selected: 7pF...20pF in 0.5pF
|
|
* steps, units: femtofarads)
|
|
*/
|
|
&hfxo {
|
|
load-capacitors = "internal";
|
|
load-capacitance-femtofarad = <...>;
|
|
};
|
|
|
|
Crypto
|
|
======
|
|
|
|
* Following the deprecation of the TinyCrypt library (:github:`79566`), the
|
|
TinyCrypt-based shim driver was marked as deprecated (:github:`79653`).
|
|
|
|
Disk
|
|
====
|
|
|
|
* The SDMMC subsystem driver now requires a ``disk-name`` property be supplied
|
|
with the definition of the disk, which is used when registering the
|
|
SD device with the disk subsystem. This permits multiple SD devices to be
|
|
registered simultaneously. If unsure, ``disk-name = "SD"`` may be used
|
|
as a sane default.
|
|
|
|
* The MMC subsystem driver now requires a ``disk-name`` property be supplied
|
|
with the definition of the disk, which is used when registering the
|
|
MMC device with the disk subsystem. This permits multiple MMC devices to be
|
|
registered simultaneously. If unsure, ``disk-name = "SD2"`` may be used
|
|
as a sane default.
|
|
|
|
|
|
Enhanced Serial Peripheral Interface (eSPI)
|
|
===========================================
|
|
|
|
GNSS
|
|
====
|
|
|
|
* The u-blox M10 driver has been renamed to M8 as it only supports M8 based devices.
|
|
Existing devicetree compatibles should be updated to :dtcompatible:`u-blox,m8`, and Kconfig
|
|
symbols swapped to :kconfig:option:`CONFIG_GNSS_U_BLOX_M8`.
|
|
|
|
* The APIs :c:func:`gnss_set_periodic_config` and :c:func:`gnss_get_periodic_config` have
|
|
been removed. (:github:`76392`)
|
|
|
|
Input
|
|
=====
|
|
|
|
* :c:macro:`INPUT_CALLBACK_DEFINE` has now an extra ``user_data`` void pointer
|
|
argument that can be used to reference any user data structure. To restore
|
|
the current behavior it can be set to ``NULL``. A ``void *user_data``
|
|
argument has to be added to the callback function arguments.
|
|
|
|
* The :dtcompatible:`analog-axis` ``invert`` property has been renamed to
|
|
``invert-input`` (there's now an ``invert-output`` available as well).
|
|
|
|
PWM
|
|
===
|
|
|
|
* The Raspberry Pi Pico PWM driver now configures frequency adaptively.
|
|
This has resulted in a change in how device tree parameters are handled.
|
|
If the :dtcompatible:`raspberry,pico-pwm`'s ``divider-int-0`` or variations
|
|
for each channel are specified, or if these are set to 0,
|
|
the driver dynamically configures the division ratio by specified cycles.
|
|
The driver will operate at the specified division ratio if a non-zero value is
|
|
specified for ``divider-int-0``.
|
|
This is unchanged from previous behavior.
|
|
Please specify ``divider-int-0`` explicitly to make the same behavior as before.
|
|
|
|
SDHC
|
|
====
|
|
|
|
* The NXP USDHC driver now assumes a card is present if no card detect method
|
|
is configured, instead of using the peripheral's internal card detect signal
|
|
to check for card presence. To use the internal card detect signal, the
|
|
devicetree property ``detect-cd`` should be added to the USDHC node in use.
|
|
|
|
Sensors
|
|
=======
|
|
|
|
* The existing driver for the Microchip MCP9808 temperature sensor transformed and renamed
|
|
to support all JEDEC JC 42.4 compatible temperature sensors. It now uses the
|
|
:dtcompatible:`jedec,jc-42.4-temp` compatible string instead to the ``microchip,mcp9808`` string.
|
|
* The :dtcompatible:`current-sense-amplifier` sense resistor is now specified in milli-ohms
|
|
(``sense-resistor-milli-ohms``) instead of micro-ohms in order to increase the maximum representable
|
|
resistor from 4.2k to 4.2M.
|
|
* The :dtcompatible:`current-sense-amplifier` properties ``sense-gain-mult`` and ``sense-gain-div``
|
|
are now limited to a maximum value of ``UINT16_MAX`` to enable smaller rounding errors in internal
|
|
calculations.
|
|
|
|
* The ``nxp,`` prefixed properties in :dtcompatible:`nxp,kinetis-acmp` have been deprecated in favor
|
|
of properties without the prefix. The sensor based driver for the :dtcompatible:`nxp,kinetis-acmp`
|
|
has been updated to support both the new and deprecated property names. Uses of the deprecated
|
|
property names should be updated to the new property names.
|
|
|
|
Serial
|
|
======
|
|
|
|
* Users of :c:func:`uart_irq_tx_ready` now need to check for ``ret > 0`` to ensure that the FIFO
|
|
can accept data bytes, instead of ``ret == 1``. The function now returns a lower bound on the
|
|
number of bytes that can be provided to :c:func:`uart_fifo_fill` without truncation.
|
|
|
|
* LiteX: ``CONFIG_UART_LITEUART`` has been renamed to :kconfig:option:`CONFIG_UART_LITEX`.
|
|
|
|
Regulator
|
|
=========
|
|
|
|
* Internal regulators present in nRF52/53 series can now be configured using
|
|
devicetree. The Kconfig options :kconfig:option:`CONFIG_SOC_DCDC_NRF52X`,
|
|
:kconfig:option:`CONFIG_SOC_DCDC_NRF52X_HV`,
|
|
:kconfig:option:`CONFIG_SOC_DCDC_NRF53X_APP`,
|
|
:kconfig:option:`CONFIG_SOC_DCDC_NRF53X_NET` and
|
|
:kconfig:option:`CONFIG_SOC_DCDC_NRF53X_HV` selected by board-level Kconfig
|
|
options have been deprecated.
|
|
|
|
Example for nRF52 series:
|
|
|
|
.. code-block:: devicetree
|
|
|
|
/* configure REG/REG1 in DC/DC mode */
|
|
®/reg1 {
|
|
regulator-initial-mode = <NRF5X_REG_MODE_DCDC>;
|
|
};
|
|
|
|
/* enable REG0 (HV mode) */
|
|
®0 {
|
|
status = "okay";
|
|
};
|
|
|
|
Example for nRF53 series:
|
|
|
|
.. code-block:: devicetree
|
|
|
|
/* configure VREGMAIN in DC/DC mode */
|
|
&vregmain {
|
|
regulator-initial-mode = <NRF5X_REG_MODE_DCDC>;
|
|
};
|
|
|
|
/* configure VREGRADIO in DC/DC mode */
|
|
&vregradio {
|
|
regulator-initial-mode = <NRF5X_REG_MODE_DCDC>;
|
|
};
|
|
|
|
/* enable VREGH (HV mode) */
|
|
&vregh {
|
|
status = "okay";
|
|
};
|
|
|
|
Bluetooth
|
|
*********
|
|
|
|
Bluetooth HCI
|
|
=============
|
|
|
|
* The ``bt-hci-bus`` and ``bt-hci-quirks`` devicetree properties for HCI bindings have been changed
|
|
to use lower-case strings without the ``BT_HCI_QUIRK_`` and ``BT_HCI_BUS_`` prefixes.
|
|
* The Kconfig option :kconfig:option:`BT_SPI` is now automatically selected based on devicetree
|
|
compatibles and can be removed from board ``.defconfig`` files.
|
|
|
|
Bluetooth Audio
|
|
===============
|
|
|
|
* The Volume Renderer callback functions :code:`bt_vcp_vol_rend_cb.state` and
|
|
:code:`bt_vcp_vol_rend_cb.flags` for VCP now contain an additional parameter for
|
|
the connection.
|
|
This needs to be added to all instances of VCP Volume Renderer callback functions defined.
|
|
(:github:`76992`)
|
|
|
|
* The Unicast Server has a new registration function :c:func:`bt_bap_unicast_server_register` which
|
|
takes a :c:struct:`bt_bap_unicast_server_register_param` as argument. This allows the Unicast
|
|
Server to dynamically register Source and Sink ASE count at runtime. The old
|
|
:kconfig:option:`CONFIG_BT_ASCS_ASE_SRC_COUNT` and :kconfig:option:`CONFIG_BT_ASCS_ASE_SNK_COUNT`
|
|
has been renamed to :kconfig:option:`CONFIG_BT_ASCS_MAX_ASE_SRC_COUNT` and
|
|
:kconfig:option:`CONFIG_BT_ASCS_MAX_ASE_SNK_COUNT` to reflect that they now serve as a
|
|
compile-time maximum configuration of ASEs to be used.
|
|
:c:func:`bt_bap_unicast_server_register` needs to be called once before using the Unicast Server,
|
|
and more specifically prior to calling :c:func:`bt_bap_unicast_server_register_cb` for the first
|
|
time. It does not need to be called again until the new function
|
|
:c:func:`bt_bap_unicast_server_unregister` has been called.
|
|
(:github:`76632`)
|
|
|
|
* The Coordinated Set Coordinator functions :c:func:`bt_csip_set_coordinator_lock` and
|
|
:c:func:`bt_csip_set_coordinator_release` now require that :kconfig:option:`CONFIG_BT_BONDABLE`
|
|
is enabled and that all members are bonded, to comply with the requirements from the CSIP spec.
|
|
(:github:`78877`)
|
|
|
|
* The callback structure provided to :c:func:`bt_bap_unicast_client_register_cb` is no longer
|
|
:code:`const`, and now multiple callback structures can be registered.
|
|
(:github:`78999`)
|
|
|
|
* The Broadcast Audio Scan Service (BASS) shall now be registered and unregistered dynamically
|
|
at runtime within the scan delegator. Two new APIs, :c:func:`bt_bap_scan_delegator_register()`
|
|
and :c:func:`bt_bap_scan_delegator_unregister()`, have been introduced to manage both BASS and
|
|
scan delegator registration and initialization dynamically. It should also be mentioned that
|
|
the previous callback registration function, :c:func:`bt_bap_scan_delegator_register_cb()` has
|
|
now been removed and merged with :c:func:`bt_bap_scan_delegator_register()`.
|
|
This change allows more flexibility when registering or unregistering scan delegator and BASS
|
|
related functionality without requiring build-time configuration. Existing need to be updated
|
|
to use these new APIs.
|
|
(:github:`78751`)
|
|
|
|
* The Telephone Bearer Service (TBS) and Generic Telephone Bearer Service (GTBS) shall now be
|
|
registered dynamically at runtime with :c:func:`bt_tbs_register_bearer`. The services can also be
|
|
unregistered with :c:func:`bt_tbs_unregister_bearer`.
|
|
(:github:`76108`)
|
|
|
|
* There has been a rename from ``bt_audio_codec_qos`` to ``bt_bap_qos_cfg``. This effects all
|
|
structs, enums and defines that used the ``bt_audio_codec_qos`` name. To use the new naming simply
|
|
do a search-and-replace for ``bt_audio_codec_qos`` to ``bt_bap_qos_cfg`` and
|
|
``BT_AUDIO_CODEC_QOS`` to ``BT_BAP_QOS_CFG``. (:github:`76633`)
|
|
|
|
* The generation of broadcast ID inside of zephyr stack has been removed, it is now up the
|
|
application to generate a broadcast ID. This means that the application can now fully decide
|
|
whether to use a static or random broadcast ID. Reusing and statically defining a broadcast ID was
|
|
added to the Basic Audio Profile in version 1.0.2, which is the basis for this change. All
|
|
instances of :c:func:`bt_cap_initiator_broadcast_get_id` and
|
|
:c:func:`bt_bap_broadcast_source_get_id` has been removed(:github:`80228`)
|
|
|
|
* ``BT_AUDIO_BROADCAST_CODE_SIZE`` has been removed and ``BT_ISO_BROADCAST_CODE_SIZE`` should be
|
|
used instead. (:github:`80217`)
|
|
|
|
Bluetooth Host
|
|
==============
|
|
|
|
Automatic advertiser resumption is deprecated
|
|
---------------------------------------------
|
|
|
|
.. note::
|
|
|
|
This deprecation is compiler-checked. If you get no warnings,
|
|
you should not be affected.
|
|
|
|
Deprecated symbols:
|
|
* :c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE`
|
|
* :c:enumerator:`BT_LE_ADV_OPT_ONE_TIME`
|
|
* :c:macro:`BT_LE_ADV_CONN`
|
|
|
|
New symbols:
|
|
* :c:enumerator:`BT_LE_ADV_OPT_CONN`
|
|
* :c:macro:`BT_LE_ADV_CONN_FAST_1`
|
|
* :c:macro:`BT_LE_ADV_CONN_FAST_2`
|
|
|
|
:c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE` is a combined
|
|
instruction to make the advertiser connectable and to enable
|
|
automatic resumption. To disable the automatic resumption, use
|
|
:c:enumerator:`BT_LE_ADV_OPT_CONN`.
|
|
|
|
Extended Advertising API with shorthands
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
Extended Advertising API ``bt_le_ext_adv_*`` implicitly assumes
|
|
:c:enumerator:`BT_LE_ADV_OPT_ONE_TIME` and never automatically
|
|
resume advertising. Therefore, the following search/replace can
|
|
be applied without thinking:
|
|
|
|
Replace all
|
|
|
|
.. code-block:: diff
|
|
|
|
-bt_le_ext_adv_create(BT_LE_ADV_CONN, ...)
|
|
+bt_le_ext_adv_create(BT_LE_ADV_FAST_2, ...)
|
|
|
|
.. code-block:: diff
|
|
|
|
-bt_le_ext_adv_update_param(..., BT_LE_ADV_CONN)
|
|
+bt_le_ext_adv_update_param(..., BT_LE_ADV_FAST_2)
|
|
|
|
Extended Advertising API with custom parameters
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
You may have uses of :c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE`
|
|
in assignments to a :c:struct:`bt_le_adv_param`. If your struct
|
|
is never passed to :c:func:`bt_le_adv_start`, you should:
|
|
|
|
* replace :c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE` with
|
|
:c:enumerator:`BT_LE_ADV_OPT_CONN`.
|
|
* remove :c:enumerator:`BT_LE_ADV_OPT_ONE_TIME`.
|
|
|
|
Legacy Advertising API not using automatic resumption
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
Any calls to :c:func:`bt_le_adv_start` that use the combination
|
|
:c:enumerator:`BT_LE_ADV_OPT_CONNECTABLE` and
|
|
:c:enumerator:`BT_LE_ADV_OPT_ONE_TIME` should have that
|
|
combination replaced with :c:enumerator:`BT_LE_ADV_OPT_CONN`.
|
|
|
|
Legacy Advertising API using automatic resumption
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
For this case, the application has to take over the
|
|
responsibility of restarting the advertiser.
|
|
|
|
Refer to the extended advertising sample for an example
|
|
implementation of advertiser restarting. The same technique can
|
|
be used for legacy advertising.
|
|
|
|
Networking
|
|
**********
|
|
|
|
* The CoAP public API functions :c:func:`coap_get_block1_option` and
|
|
:c:func:`coap_get_block2_option` have changed. The ``block_number`` pointer
|
|
type has changed from ``uint8_t *`` to ``uint32_t *``. Additionally,
|
|
:c:func:`coap_get_block2_option` now accepts an additional ``bool *has_more``
|
|
parameter, to store the value of the more flag. (:github:`76052`)
|
|
|
|
* The struct :c:struct:`coap_transmission_parameters` has a new field ``ack_random_percent`` if
|
|
:kconfig:option:`CONFIG_COAP_RANDOMIZE_ACK_TIMEOUT` is enabled. (:github:`79058`)
|
|
|
|
* The Ethernet bridge shell is moved under network shell. This is done so that
|
|
all the network shell activities can be found under ``net`` shell command.
|
|
After this change the bridge shell is used by ``net bridge`` command. (:github:`77235`)
|
|
|
|
* The Ethernet bridging code is changed to allow similar configuration experience
|
|
as in Linux. The bridged Ethernet interface can be used normally even if bridging
|
|
is enabled. The actual bridging is done by a separate virtual network interface that
|
|
directs network packets to bridged Ethernet interfaces.
|
|
The :c:func:`eth_bridge_iface_allow_tx` is removed as it is not needed because the
|
|
bridged Ethernet interface can send and receive data normally.
|
|
The :c:func:`eth_bridge_listener_add` and :c:func:`eth_bridge_listener_remove` are
|
|
removed as same functionality can be achieved using promiscuous API.
|
|
Because the bridge interface is a normal network interface,
|
|
the :c:func:`eth_bridge_iface_add` and :c:func:`eth_bridge_iface_remove`
|
|
will take network interface pointer as a first parameter. (:github:`77987`)
|
|
|
|
* To facilitate use outside of the networking subsystem, the network buffer header file was renamed
|
|
from :zephyr_file:`include/zephyr/net/buf.h` to :zephyr_file:`include/zephyr/net_buf.h` and the
|
|
implementation moved to :zephyr_file:`lib/net_buf/`. (:github:`78009`)
|
|
|
|
* The ``work_q`` parameter to ``NET_SOCKET_SERVICE_SYNC_DEFINE`` and
|
|
``NET_SOCKET_SERVICE_SYNC_DEFINE_STATIC`` has been removed as it was always ignored. (:github:`79446`)
|
|
|
|
* The callback function for the socket service has changed. The
|
|
``struct k_work *work`` parameter has been replaced with a pointer to the
|
|
``struct net_socket_service_event *pev`` parameter. (:github:`80041`)
|
|
|
|
* Deprecated the :kconfig:option:`CONFIG_NET_SOCKETS_POLL_MAX` option in favour of
|
|
:kconfig:option:`CONFIG_ZVFS_POLL_MAX`.
|
|
|
|
Other Subsystems
|
|
****************
|
|
|
|
Flash map
|
|
=========
|
|
|
|
* ``CONFIG_SPI_NOR_IDLE_IN_DPD`` has been removed from the :kconfig:option:`CONFIG_SPI_NOR`
|
|
driver. An enhanced version of this functionality can be obtained by enabling
|
|
:ref:`pm-device-runtime` on the device (Tunable with
|
|
:kconfig:option:`CONFIG_SPI_NOR_ACTIVE_DWELL_MS`).
|
|
|
|
hawkBit
|
|
=======
|
|
|
|
* :c:func:`hawkbit_autohandler` now takes one argument. This argument has to be set to
|
|
``true`` for the same behavior as before the change. (:github:`71037`)
|
|
|
|
* ``<zephyr/mgmt/hawkbit.h>`` is deprecated in favor of ``<zephyr/mgmt/hawkbit/hawkbit.h>``.
|
|
The old header will be removed in future releases and its usage should be avoided.
|
|
The hawkbit autohandler has been separated into ``<zephyr/mgmt/hawkbit/autohandler.h>``.
|
|
The configuration part of hawkbit is now in ``<zephyr/mgmt/hawkbit/config.h>``. (:github:`71037`)
|
|
|
|
MCUmgr
|
|
======
|
|
|
|
* The ``MCUMGR_TRANSPORT_BT_AUTHEN`` Kconfig option from the :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_BT` MCUmgr transport has been replaced with the :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW` Kconfig choice.
|
|
The requirement for Bluetooth authentication is now indicated by the :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW_AUTHEN` Kconfig option.
|
|
To remove the default requirement for Bluetooth authentication it is necessary to enable the :kconfig:option:`CONFIG_MCUMGR_TRANSPORT_BT_PERM_RW` Kconfig option in the project configuration.
|
|
|
|
Random
|
|
======
|
|
|
|
* Following the deprecation of the TinyCrypt library (:github:`79566`), usage
|
|
of TinyCrypt in the CTR-DRBG random number generator was removed. From now on
|
|
Mbed TLS is required to enable :kconfig:option:`CONFIG_CTR_DRBG_CSPRNG_GENERATOR`.
|
|
(:github:`79653`)
|
|
|
|
Shell
|
|
=====
|
|
|
|
* ``kernel threads`` and ``kernel stacks`` shell command have been renamed to
|
|
``kernel thread list`` & ``kernel thread stacks``
|
|
|
|
JWT (JSON Web Token)
|
|
====================
|
|
|
|
* By default, the signature is now computed using the PSA Crypto API for both RSA and ECDSA
|
|
(:github:`78243`). The conversion to the PSA Crypto API is part of the adoption
|
|
of a standard interface for crypto operations (:github:`43712`). Moreover,
|
|
following the deprecation of the TinyCrypt library (:github:`79566`), usage
|
|
of TinyCrypt was removed from the JWT subsystem (:github:`79653`).
|
|
|
|
* The following new symbols were added to allow specifying both the signature
|
|
algorithm and crypto library:
|
|
|
|
* :kconfig:option:`CONFIG_JWT_SIGN_RSA_PSA` (default) RSA signature using the PSA Crypto API;
|
|
* :kconfig:option:`CONFIG_JWT_SIGN_RSA_LEGACY` RSA signature using Mbed TLS;
|
|
* :kconfig:option:`CONFIG_JWT_SIGN_ECDSA_PSA` ECDSA signature using the PSA Crypto API.
|
|
|
|
They replace the previously-existing Kconfigs ``CONFIG_JWT_SIGN_RSA`` and
|
|
``CONFIG_JWT_SIGN_ECDSA``. (:github:`79653`)
|