Migration guide to Zephyr v4.5.0 (Working Draft)
This document describes the changes required when migrating your application from Zephyr v4.4.0 to Zephyr v4.5.0.
Any other changes (not directly related to migrating applications) can be found in the release notes.
Common
Build System
Kernel
Boards
Device Drivers and Devicetree
Clock Control
The
nxp,imxrt11xx-arm-pllbinding now usesloop-divandpost-divfor ARM PLL configuration. The legacyclock-multandclock-divproperties remain supported but are deprecated. Existing RT11xx overlays should be updated using the mappingloop-div = clock-mult * 2andpost-div = clock-div.
Digital Microphone
The DMIC driver backend API now uses
dmic_driver_apiinstead ofstruct _dmic_ops.Out-of-tree DMIC drivers must rename their backend API struct definitions and switch their API instances to
DEVICE_API(dmic, ...). See GitHub #107695 for examples of how in-tree drivers have been updated. Application code usingdmic_configure(),dmic_trigger(), anddmic_read()is not impacted.
Flash
jedec,spi-nandnow requires aplane-bytesproperty, which indicates the size of each plane in the flash device. For devices with a single plane, this should be set to the same value assize-bytes.
STM32
SoC DTSI files now consistently use interrupt priority zero for all peripherals. Applications must now explicitly configure interrupt priorities using Devicetree if they previously relied on the values found in SoC DTSI files. (GitHub #106188)
Bluetooth
Bluetooth Audio
bt_bap_stream.codec_cfgis nowconst, to better reflect that it is a read-only value. Any non-read uses of it will need to be updated with the appropriate operations such asbt_bap_stream_config(),bt_bap_stream_reconfig(),bt_bap_stream_enable()orbt_bap_stream_metadata(). (GitHub #104219)Almost all API uses of
struct bt_audio_codec_cfg *is now const, which means that once thecodec_cfghas been stored in a parameter struct likebt_cap_initiator_broadcast_subgroup_paramorbt_cap_unicast_audio_start_stream_param, then the parameter’s pointer cannot be used to modify thecodec_cfg, and the actual definition of the struct should be modified instead. (GitHub #104219)bt_cap_commander_broadcast_reception_start()now waits for the CAP acceptors to sync to the broadcast before completing. This means that if the broadcast source is offline, including colocated broadcast sources like the ones created bybt_cap_handover_unicast_to_broadcast(), shall be active and have the periodic advertising enabled with a configured BASE. Forbt_cap_handover_unicast_to_broadcast()the newly addedbt_cap_handover_cb.unicast_to_broadcast_createdcan be used to configure the BASE. This also means that any current checks implemented by an application to wait for receive state updates indicating successful sync can be removed, asbt_cap_commander_broadcast_reception_start()now ensures this whenbt_cap_commander_cb.broadcast_reception_startis called. This also applies forbt_cap_commander_broadcast_reception_stop()in a similar manner. (GitHub #101070)bt_bap_stream.qosis nowconst, to better reflect that it is a read-only value. Any non-read uses of it will need to be set with the appropriate operations such asbt_bap_unicast_group_create(),bt_bap_unicast_group_reconfig(),bt_bap_broadcast_source_create()orbt_bap_broadcast_source_reconfig(). (GitHub #104887)Almost all API uses of
struct bt_bap_qos_cfg *is now const, which means that once theqoshas been stored in a parameter struct likebt_bap_broadcast_source_paramorbt_bap_unicast_group_stream_param, then the parameter’s pointer cannot be used to modify theqos, and the actual definition of the struct should be modified instead. (GitHub #104219)bt_bap_unicast_group_info.sink_pdandbt_bap_unicast_group_info.source_pdnow reflect the local values defined for the group, and not the values configured for any remote ASEs. (GitHub #104887)
Bluetooth HCI
The devicetree compatible
bflb,bl70x-bt-hcihas been renamed tobflb,bt-hci, now that a single binding covers all Bouffalo Lab on-chip BLE controllers (BL60x/BL70x/BL70XL). Out-of-tree boards and shields must update their devicetree nodes accordingly.
Networking
Ethernet
CONFIG_NET_DEFAULT_IF_ETHERNETnow allows to get the first ethernet interface, instead of the first between ethernet and wifi.
Other subsystems
Demand paging (
subsys/demand_paging) is moved under Memory Management intosubsys/mem_mgmt/demand_paging. Custom backing store and eviction algorithm code need to be moved there.
Modules
Support for the CANopenNode protocol stack was moved to an external module.
hal_nxp
S32K344: The pinmux header file for this SoC was renamed from
S32K344-172MQFP-pinctrl.htoS32K344_K324_K314_172HDQFP-pinctrl.h. Out-of-tree boards must update their include directive accordingly:#include <nxp/s32/S32K344_K324_K314_172HDQFP-pinctrl.h>