| :orphan: |
| |
| .. _migration_3.7: |
| |
| Migration guide to Zephyr v3.7.0 (Working Draft) |
| ################################################ |
| |
| 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. |
| |
| Kernel |
| ****** |
| |
| Boards |
| ****** |
| |
| Modules |
| ******* |
| |
| MCUboot |
| ======= |
| |
| zcbor |
| ===== |
| |
| Device Drivers and Devicetree |
| ***************************** |
| |
| * The :dtcompatible:`nxp,kinetis-pit` pit driver has changed it's 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. |
| 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"; |
| }; |
| }; |
| |
| |
| Analog-to-Digital Converter (ADC) |
| ================================= |
| |
| Bluetooth HCI |
| ============= |
| |
| Charger |
| ======= |
| |
| * Dropped ``constant-charge-current-max-microamp`` property in ``charger_max20335`` driver because |
| it did not reflect real chip functionality. |
| |
| * Added enum key to ``constant-charge-voltage-max-microvolt`` property in ``maxim,max20335-charger`` |
| binding to indicate invalid devicetree values at build time. |
| |
| Controller Area Network (CAN) |
| ============================= |
| |
| * Removed the following deprecated CAN controller devicetree properties. Out-of-tree boards using |
| these properties need to switch to using the ``bus-speed``, ``sample-point``, ``bus-speed-data``, |
| and ``sample-point-data`` devicetree properties for specifying the initial CAN bitrate: |
| |
| * ``sjw`` |
| * ``prop-seg`` |
| * ``phase-seg1`` |
| * ``phase-seg1`` |
| * ``sjw-data`` |
| * ``prop-seg-data`` |
| * ``phase-seg1-data`` |
| * ``phase-seg1-data`` |
| |
| * Support for manual bus-off recovery was reworked: |
| |
| * 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. |
| |
| Display |
| ======= |
| |
| Flash |
| ===== |
| |
| General Purpose I/O (GPIO) |
| ========================== |
| |
| 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. |
| |
| Interrupt Controller |
| ==================== |
| |
| LED Strip |
| ========= |
| |
| * The property ``in-gpios`` defined in :dtcompatible:`worldsemi,ws2812-gpio` has been |
| renamed to ``gpios``. |
| |
| Sensors |
| ======= |
| |
| Serial |
| ====== |
| |
| Timer |
| ===== |
| |
| Bluetooth |
| ********* |
| |
| 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`) |
| |
| Bluetooth Audio |
| =============== |
| |
| 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`) |
| |
| 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 `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 `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`) |
| |
| Other Subsystems |
| **************** |
| |
| LoRaWAN |
| ======= |
| |
| MCUmgr |
| ====== |
| |
| Modem |
| ===== |
| |
| * The ``CONFIG_MODEM_CHAT_LOG_BUFFER`` Kconfig option was |
| renamed to :kconfig:option:`MODEM_CHAT_LOG_BUFFER_SIZE`. |
| |
| Shell |
| ===== |
| |
| ZBus |
| ==== |
| |
| Userspace |
| ********* |
| |
| Architectures |
| ************* |
| |
| * Function :c:func:`arch_start_cpu` has been renamed to :c:func:`arch_cpu_start`. |
| |
| * 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. |
| |
| Xtensa |
| ====== |