Zephyr 3.2.0
We are pleased to announce the release of Zephyr version 3.2.0.
Major enhancements with this release include:
- Introduced Sysbuild (System build). 
- Added support for Binary Blobs (also see Working with binary blobs: west blobs). 
- Added support for Picolibc (see - CONFIG_PICOLIBC).
- Converted all supported boards from - pinmuxto Pin Control.
- Initial support for Improved Inter-Integrated Circuit (I3C) Bus controllers. 
- Support for W1 api. 
- Improved access to Devicetree compatibles from Kconfig (new generated - DTS_HAS_..._ENABLEDconfigs).
The following sections provide detailed lists of changes by component.
API Changes
Changes in this release
- Zephyr now requires Python 3.8 or higher 
- Changed - spi_cs_controlto remove anonymous struct. This causes possible breakage for static initialization of the struct. Updated- SPI_CS_CONTROL_PTR_DTto reflect this change.
- The - CONFIG_LEGACY_INCLUDE_PATHoption has been disabled by default, all upstream code and modules have been converted to use- <zephyr/...>header paths. The option is still available to facilitate the migration of external applications, but will be removed with the 3.4 release. The scripts/utils/migrate_includes.py script is provided to automate the migration.
- include/zephyr/zephyr.h no longer defines - __ZEPHYR__. This definition can be used by third-party code to compile code conditional to Zephyr. The definition is already injected by the Zephyr build system. Therefore, any third-party code integrated using the Zephyr build system will require no changes. External build systems will need to inject the definition by themselves, if they did not already.
- include/zephyr/zephyr.h has been deprecated in favor of include/zephyr/kernel.h, since it only included that header. No changes are required by applications other than replacing - #include <zephyr/zephyr.h>with- #include <zephyr/kernel.h>.
- Bluetooth: Applications where - CONFIG_BT_EATTis enabled must set the- chan_optfield on the GATT parameter structs. To keep the old behavior use- BT_ATT_CHAN_OPT_NONE.
- CAN - The Zephyr SocketCAN definitions have been moved from include/zephyr/drivers/can.h to include/zephyr/net/socketcan.h, the SocketCAN - struct can_framehas been renamed to- socketcan_frame, and the SocketCAN- struct can_filterhas been renamed to- socketcan_filter. The SocketCAN utility functions are now available in include/zephyr/net/socketcan_utils.h.
- The CAN controller - struct zcan_framehas been renamed to- can_frame, and- struct zcan_filterhas been renamed to- can_filter.
- The - can_stateenumerations have been renamed to contain the word STATE in order to make their context more clear:- CAN_ERROR_ACTIVErenamed to- CAN_STATE_ERROR_ACTIVE.
- CAN_ERROR_WARNINGrenamed to- CAN_STATE_ERROR_WARNING.
- CAN_ERROR_PASSIVErenamed to- CAN_STATE_ERROR_PASSIVE.
- CAN_BUS_OFFrenamed to- CAN_STATE_BUS_OFF.
 
- The error code for - can_send()when the CAN controller is in bus off state has been changed from- -ENETDOWNto- -ENETUNREACH. A return value of- -ENETDOWNnow indicates that the CAN controller is in- CAN_STATE_STOPPED.
- The list of valid return values for the CAN timing calculation functions have been expanded to allow distinguishing between an out of range bitrate/sample point, an unsupported bitrate, and a resulting sample point outside the guard limit. 
 
- Memory Management Drivers - Added - sys_mm_drv_update_page_flags()and- sys_mm_drv_update_region_flags()to update flags associated with memory pages and regions.
 
Removed APIs in this release
- The following functions, macros, and structures related to the deprecated kernel work queue API have been removed: - k_work_pending()
- k_work_q_start()
- k_delayed_work
- k_delayed_work_init()
- k_delayed_work_submit_to_queue()
- k_delayed_work_submit()
- k_delayed_work_pending()
- k_delayed_work_cancel()
- k_delayed_work_remaining_get()
- k_delayed_work_expires_ticks()
- k_delayed_work_remaining_ticks()
- K_DELAYED_WORK_DEFINE
 
- Removed support for enabling passthrough mode on MPU9150 to AK8975 sensor. 
- Removed deprecated SPI - spi_cs_controlfields for GPIO management that have been replaced with- gpio_dt_spec.
- Removed support for configuring the CAN-FD maximum DLC value via Kconfig - CONFIG_CANFD_MAX_DLC.
- Removed deprecated civetweb module and the associated support code and samples. 
Deprecated in this release
- DT_SPI_DEV_CS_GPIOS_LABELand- DT_INST_SPI_DEV_CS_GPIOS_LABELare deprecated in favor of utilizing- DT_SPI_DEV_CS_GPIOS_CTLRand variants.
- DT_GPIO_LABEL,- DT_INST_GPIO_LABEL,- DT_GPIO_LABEL_BY_IDX, and- DT_INST_GPIO_LABEL_BY_IDX, are deprecated in favor of utilizing- DT_GPIO_CTLRand variants.
- DT_LABEL, and- DT_INST_LABEL, are deprecated in favor of utilizing- DT_PROPand variants.
- DT_BUS_LABEL, and- DT_INST_BUS_LABEL, are deprecated in favor of utilizing- DT_BUSand variants.
- STM32 LPTIM domain clock should now be configured using devicetree. Related Kconfig - CONFIG_STM32_LPTIM_CLOCKoption is now deprecated.
- labelproperty from devicetree as a base property. The property is still valid for specific bindings to specify like- gpio-ledsand- fixed-partitions.
- Bluetooth mesh Configuration Client API prefixed with - bt_mesh_cfg_is deprecated in favor of a new API with prefix- bt_mesh_cfg_cli_.
- Pinmux API is now officially deprecated in favor of the pin control API. Its removal is scheduled for the 3.4 release. Refer to Pin Control for more details on pin control. 
- Flash Map API macros - FLASH_MAP_, which have been using DTS node label property to reference partitions, have been deprecated and replaced with- FIXED_PARTITION_which use DTS node label instead. Replacement list:- Deprecated, takes label property - Replacement, takes DTS node label - FLASH_AREA_ID- FLASH_AREA_OFFSET- FLASH_AREA_SIZE- FLASH_AREA_LABEL_EXISTS- FLASH_AREA_LABEL_STRis deprecated with no replacement as its sole purpose was to obtain the DTS node property label.
Stable API changes in this release
New APIs in this release
- CAN - Added - can_start()and- can_stop()API functions for starting and stopping a CAN controller. Applications will need to call- can_start()to bring the CAN controller out of- CAN_STATE_STOPPEDbefore being able to transmit and receive CAN frames.
- Added - can_get_capabilities()for retrieving a bitmask of the capabilities supported by a CAN controller.
- Added - CAN_MODE_ONE_SHOTfor enabling CAN controller one-shot transmission mode.
- Added - CAN_MODE_3_SAMPLESfor enabling CAN controller triple-sampling receive mode.
 
- I3C - Added a set of new API for I3C controllers. 
 
- W1 - Introduced the W1 api, used to interact with 1-Wire masters. 
 
Kernel
- Source files using multiple - SYS_INITmacros with the same initialisation function must now use- SYS_INIT_NAMEDwith unique names per instance.
Architectures
- ARC - Added support of non-multithreading mode for all UP ARC targets. 
- Added extra compile-time checks of - CONFIG_ISR_STACK_SIZEand- CONFIG_ARC_EXCEPTION_STACK_SIZEvalue.
- Added support of generation symbol file for ARC MWDT toolchain variant. 
- Added ARC MWDT toolchain version check. 
- Added support for GCC mcpu option tuning for ARC targets on SoC level. 
- Switched ARCv3 64bit targets for usage of new linker output format value. 
- Added ARCv3 64bit accumulator reg save / restore, cleanup it for ARCv3 32bit targets. 
- Fixed SMP race in ASM ARC interrupt handling code. 
 
- ARM - Improved HardFault handling on Cortex-M. 
- Enabled automatic placement of the IRQ vector table. 
- Enabled S2RAM for Cortex-M, hooking up the provided API functions. 
- Added icache and dcache maintenance functions, and switched to the new Kconfig symbols ( - CONFIG_CPU_HAS_DCACHEand- CONFIG_CPU_HAS_ICACHE).
- Added data/instr. sync barriers after writing to - SCTLRto disable MPU.
- Use - spsr_cxsfinstead of unpredictable- spsr_hypon Cortex-R52.
- Removes - -Wstringop-overreadwarning with GCC 12.
- Fixed handling of system off failure. 
- Fixed issue with incorrect - ssfunder bad syscall.
- Fixed region check issue with mmu. 
 
- ARM64 - arch_mem_map()now supports- K_MEM_PERM_USER.
- Added - CONFIG_WAIT_AT_RESET_VECTORto spin at reset vector allowing a debugger to be attached.
- Implemented erratum 822227 “Using unsupported 16K translation granules might cause Cortex-A57 to incorrectly trigger a domain fault”. 
- Enabled single-threaded support for some platforms. 
- IRQ stack is now initialized when - CONFIG_INIT_STACKSis set.
- Fixed issue when cache API are used from userspace. 
- Fixed issue about the way IPI are delivered. 
- TF-A (TrustedFirmware-A) is now shipped as module. 
 
- RISC-V - Introduced support for RV32E. 
- Reduced callee-saved registers for RV32E. 
- Introduced Zicsr, Zifencei and BitManip as separate extensions. 
- Introduced - CONFIG_RISCV_ALWAYS_SWITCH_THROUGH_ECALLfor platforms that require every- mretto be balanced by- ecall.
- IRQ vector table is now used for vectored mode. 
- Disabled - CONFIG_IRQ_VECTOR_TABLE_JUMP_BY_CODEfor CLIC.
- STRINGIFYmacro is now used for CSR helpers.
- CONFIG_CODE_DATA_RELOCATIONis now supported.
- PLIC and CLIC are now decoupled. 
- jedec,spi-noris no longer required to be- okayby the RISC-V arch linker script.
- Removed usage of - SOC_ERET.
- Removed usage of - ulong_t.
- Added new TLS-based - arch_is_user_context()implementation.
- Fixed PMP for builds with SMP enabled. 
- Fixed the per-thread m-mode/u-mode entry array. 
- semihost_exec()function is now aligned at 16-byte boundary.
 
- Xtensa - Macros - RSRand- WSRhave been renamed to- XTENSA_RSRand- XTENSA_WSRto give them proper namespace.
- Fixed a rounding error in timing function when converting from cycles to nanoseconds. 
- Fixed the calculation of average “cycles to nanoseconds” to actually return nanoseconds instead of cycles. 
 
Bluetooth
- Audio - Implemented central security establishment when required. 
- Added additional security level options to the connection call. 
- Switched the unicast client and server to bidirectional CIS if available. 
- Added a new RSI advertising callback for CSIS. 
- Added multiple improvements to context handling, including public functions to get contexts. 
- Added ordered access procedure for the CSIS client, as well as storing active members by rank. 
- Added support for Write Preset Name in HAS. 
- Added support for using PACS for the broadcast sink role. 
- Cleaned up the MICP implementation, including renaming several structures and functions. 
- Implemented the CAP Acceptor role. 
- Added ASCS Metadata verification support. 
- Started exposing broadcast sink advertising data to the application. 
- Added support for unicast server start, reconfigure, release, disable and metadata. 
- Added support for multi-CIS. 
- Implemented HAS client support for preset switching. 
- Added support for setting vendor-specific non-HCI data paths for audio streams. 
 
- Direction Finding - Added support for selectable IQ samples conversion to 8-bit. 
- Added support for VS IQ sample reports in - int16_tformat.
 
- Host - Added support for LE Secure Connections permission checking. 
- Added support for Multiple Variable Length Read procedure without EATT. 
- Added a new callback - rpa_expired()in the struct- bt_le_ext_adv_cbto enable synchronization of the advertising payload updates with the Resolvable Private Address (RPA) rotations when the- CONFIG_BT_PRIVACYis enabled.
- Added a new - bt_le_set_rpa_timeout()API call to dynamically change the Resolvable Private Address (RPA) timeout when the- CONFIG_BT_RPA_TIMEOUT_DYNAMICis enabled.
- Added - bt_conn_auth_cb_overlay()to overlay authentication callbacks for a Bluetooth LE connection.
- Removed - CONFIG_BT_HCI_ECC_STACK_SIZE. A new Bluetooth long workqueue (- CONFIG_BT_LONG_WQ) is used for processing ECC commands instead of the former dedicated thread.
- bt_conn_get_security()and- bt_conn_enc_key_size()now take a- const struct bt_conn*argument.
- The handling of GATT multiple notifications has been rewritten, and is now only to be used as a low-level API. 
- Added support for GATT CCCs in arbitrary locations as a client. 
- Extended the - bt_conn_infostructure with security information.
- Added a new - CONFIG_BT_PRIVACY_RANDOMIZE_IRthat prevents the Host from using Controller-provided identity roots.
- Added support for GATT over EATT. 
- Implemented the Immediate Alert Client. 
 
- Mesh - Added support for selectable RPL backends. 
- Changed the way segmented messages are sent, avoiding bulk transmission. 
- Added an async config client API. 
- Added model publish support to the Health Client. 
- Moved relayed messages to a separate buffer pool. 
- Reduced delay of sending segment acknowledge message. Set - CONFIG_BT_MESH_SEG_ACK_PER_SEGMENT_TIMEOUTto 100 to get the previous timing.
- Restructured shell commands. 
 
- Controller - Made the new LLCP implementation the default one. Enable - CONFIG_BT_LL_SW_LLCP_LEGACYto revert back to the legacy implementation.- CONFIG_BT_LL_SW_LLCP_LEGACYis marked deprecated in favor of the new- CONFIG_BT_LL_SW_LLCP, which is the default now.
- Marked Extended Advertising as stable, no longer experimental. 
- Added deinit() infrastructure in order to properly support disabling Bluetooth support, including the controller. 
- Implemented the Peripheral CIS Create procedure. 
- Implemented the CIS Terminate procedure. 
- Added support for Periodic Advertising ADI. 
- Implemented support for Extended Scan Response Data fragment operations. 
- Enable back-to-back PDU chaining for AD data. 
- Added a new - CONFIG_BT_CTLR_SYNC_PERIODIC_SKIP_ON_SCAN_AUXfor allowing periodic sync event skipping.
- Added a new - CONFIG_BT_CTLR_SCAN_AUX_SYNC_RESERVE_MINfor minimal time reservation.
- Implemented ISO Test Mode HCI commands. 
- Added support for multiple BIS sync selection within a BIG. 
- Implement flushing pending ISO TX PDUs when a BIG event is terminated. 
- Added a new - CONFIG_BT_CTLR_ADV_DATA_CHAINto enable experimental Advertising Data chaining support.
 
- HCI Driver - Added a new Telink B91 HCI driver. 
 
Boards & SoC Support
- Added support for these SoC series: - Atmel SAML21, SAMR34, SAMR35 
- GigaDevice GD32E50X 
- GigaDevice GD32F470 
- NXP i.MX8MN, LPC55S36, LPC51U68 
- renesas_smartbond da1469x SoC series 
 
- Made these changes in other SoC series: - gigadevice: Enable SEGGER RTT 
- Raspberry Pi Pico: Added ADC support 
- Raspberry Pi Pico: Added PWM support 
- Raspberry Pi Pico: Added SPI support 
- Raspberry Pi Pico: Added watchdog support 
 
- Changes for ARC boards: - Added support for qemu_arc_hs5x board (ARCv3, 32bit, UP, HS5x) 
- Simplified multi-runner setup for SMP nSIM ARC platforms 
- Fixed mdb execution folder for mdb-based west runners (mdb-nsim and mdb-hw) 
 
- Added support for these ARM boards: - Arduino MKR Zero 
- Atmel atsaml21_xpro 
- Atmel atsamr34_xpro 
- Blues Wireless Swan 
- Digilent Zybo 
- EBYTE E73-TBB 
- GigaDevice GD32E507V-START 
- GigaDevice GD32E507Z-EVAL 
- GigaDevice GD32F407V-START 
- GigaDevice GD32F450V-START 
- GigaDevice GD32F450Z-EVAL 
- GigaDevice GD32F470I-EVAL 
- NXP lpcxpresso51u68, RT1060 EVKB 
- NXP lpcxpresso55s36 
- Olimex LoRa STM32WL DevKit 
- PAN1770 Evaluation Board 
- PAN1780 Evaluation Board 
- PAN1781 Evaluation Board 
- PAN1782 Evaluation Board 
- ST STM32F7508-DK Discovery Kit 
- TDK RoboKit 1 
- WeAct Studio Black Pill V1.2 
- WeAct Studio Black Pill V3.0 
- XIAO BLE 
- da1469x_dk_pro 
 
- Added support for these ARM64 boards: - i.MX8M Nano LPDDR4 EVK board series 
 
- Added support for these RISC-V boards: - ICE-V Wireless 
- RISCV32E Emulation (QEMU) 
 
- Added support for these Xtensa boards: - ESP32-NET 
- intel_adsp_ace15_mtpm 
 
- Removed support for these Xtensa boards: - Intel S1000 
 
- Made these changes in other boards: - sam_e70_xplained: Uses EEPROM devicetree bindings for Ethernet MAC 
- sam_v71_xult: Uses EEPROM devicetree bindings for Ethernet MAC 
- rpi_pico: Added west runner configurations for Picoprobe, Jlink and Blackmagicprobe 
 
- Added support for these following shields: - ARCELI W5500 ETH 
- MAX7219 LED display driver shield 
- Panasonic Grid-EYE (AMG88xx) 
 
Build system and infrastructure
- Introduced sysbuild, a new higher-level build system layer that enables combining multiple build systems together. It can be used to generate multiple images from a single build system invocation while maintaining a link between those different applications/images via a shared Kconfig layer. 
- Introduced support for binary blobs in west, via a new - west blobscommand that allows users to list, fetch and delete binary blobs from their filesystem. Vendors can thus now integrate binary blobs, be it images or libraries, with upstream Zephyr.
- Removed deprecated - GCCARMEMB_TOOLCHAIN_PATHsetting.
Drivers and Sensors
- ADC - STM32: Now supports Vbat monitoring channel and STM32U5 series. 
- Added driver for GigaDevice GD32 SoCs. 
- Raspberry Pi Pico: Added ADC support for the Pico series. 
- Added - adc_dt_specrelated helpers for sequence initialization, setting up channels, and converting raw values to millivolts.
- Fixed - ADC_DT_SPEC_GETand related macros to properly handle channel identifiers >= 10.
 
- CAN - A driver for bridging from Native POSIX execution (native_posix) to Linux SocketCAN has been added. 
- A driver for the Espressif ESP32 TWAI has been added. See the - espressif,esp32-twaidevicetree binding for more information.
- The STM32 CAN-FD CAN driver clock configuration has been moved from Kconfig to devicetree. See the - st,stm32-fdcandevicetree binding for more information.
- The filter handling of STM32 bxCAN driver has been simplified and made more reliable. 
- The STM32 bxCAN driver now supports dual instances. 
- The CAN loopback driver now supports CAN-FD. 
- The CAN shell module has been rewritten to properly support the additions and changes to the CAN controller API. 
- The Zephyr network CAN bus driver, which provides raw L2 access to the CAN bus via a CAN controller driver, has been moved to drivers/net/canbus.c and can now be enabled using - CONFIG_NET_CANBUS.
- Added CAN support for NXP LPC55S36. 
 
- Clock control - STM32: PLL_P, PLL_Q, PLL_R outputs can now be used as domain clock. 
- Added driver for GigaDevice GD32 SoCs (peripheral clocks configuration only). 
- Documented behavior when clock is not on. 
 
- Counter - Added - counter_get_value_64()function.
- STM32: RTC : Now supports STM32U5 and STM32F1 series. 
- STM32: Timer : Now supports STM32L4 series. 
- Added counter support using CTimer for NXP MIMXRT595. 
- ESP32: Added support to Pulse Counter Mode (PCNT) and RTC. 
 
- Crypto - Added Intel ADSP sha driver. 
- stm32: Check if clock device is ready before accessing clock control devices. 
- ataes132a: Convert to devicetree. 
 
- DFU - Fixed fetch of the flash write block size from incorrect device by - flash_img.
- Fixed possible build failure in the image manager for mcuboot on redefinitions of - BOOT_MAX_ALIGNand- BOOT_MAGIC_SZ.
 
- Display - Renamed EPD controller driver GD7965 to UC81xx. 
- Improved support for different controllers in ssd16xx and uc81xx drivers. 
- Added basic read support for ssd16xx compatible EPD controllers. 
- Revised intel_multibootfb driver. 
- Added MAX7219 display controller driver. 
 
- Disk - Added support for DMA transfers when using STM32 SD host controller. 
- Added support for SD host controller present on STM32L5X family. 
 
- DMA - STM32: Now supports stm32u5 series. 
- cAVS drivers renamed with the broader Intel ADSP naming. 
- Kconfig depends on improvements with device tree statuses. 
- Added driver for GigaDevice GD32 SoCs. 
- Added DMA support for NXP MIMXRT595. 
 
- EEPROM - Added Microchip XEC (MEC172x) on-chip EEPROM driver. See the - microchip,xec-eepromdevicetree binding for more information.
 
- Entropy - Update drivers to use devicetree Kconfig symbol. 
- gecko: Add driver using Secure Element module of EFR3. 
- Added entropy driver for MCUX CAAM. 
- stm32: Check if clock device is ready before accessing. 
 
- ESPI - eSPI emulator initialization improvements. 
- Nuvoton: Enabled platform specific Virtual Wire GPIO. 
- Microchip: Added XEC (MEC152x) overcurrent platform-specific virtual wires. 
- Nuvoton: Added driver flash channel operations support. 
 
- Ethernet - Atmel gmac: Add EEPROM devicetree bindings for MAC address. 
- Performance improvements on the NXP MCUX Ethernet Driver. 
 
- Flash - Atmel eefc: Fix support for Cortex-M4 variants. 
- Added flash driver for Renesas Smartbond platform 
- Added support for STM32H7 and STM32U5 in the STM32 OSPI driver. 
- Added DMA transfer support in the STM32 OSPI driver. 
- Added driver for GigaDevice GD32 SoCs 
- Added Flash support for NXP LPCXpresso55S36. 
- Added Flash support for NXP MIMXRT595 EVK. 
- Added on-chip flash driver for TI CC13xx/CC26xx. 
- Fixed flash to flash write for Telink B91. 
- Fixed DMA priority configuration in the stm32 QSPI driver. 
- Drivers are enabled by default based on their devicetree hardware declarations. 
- Fixed write from unaligned source for STM32G0x. 
- Added Flash support for Renesas Smartbond platform. 
- Added Flash support for Cadence QSPI NOR FLASH. 
- Fixed usage fault on nRF driver (along with BLE) due to possible incorrect handling of the ticker stop operation. 
 
- GPIO - Added GPIO driver for Renesas Smartbond platform. 
 
- I2C - Terminology updated to latest i2c specification removing master/slave terminology and replacing with controller/target terminology. 
- Asynchronous APIs added for requesting i2c transactions without waiting for the completion of them. 
- Added NXP LPI2C driver asynchronous i2c implementation with sample showing usage with a FRDM-K64F board. 
- STM32: support for second target address was added. 
- Kconfig depends on improvements with device tree statuses. 
- Improved ITE I2C support with FIFO and command queue mode. 
- Improve gd32 driver stability (remove repeated START, use STOP + START conditions instead). 
- Fixed gd32 driver incorrect Fast-mode config. 
- Add bus recovery support to the NXP MCUX LPI2C driver. 
- Enable I2C support on NXP MIMXRT595 EVK. 
 
- I2S - Removed the Intel S1000 I2S driver. 
 
- I3C - Added a driver to support the NXP MCUX I3C hardware acting as the primary controller on the bus (tested using RT685). 
 
- IEEE 802.15.4 - All IEEE 802.15.4 drivers have been converted to Devicetree-based drivers. 
- Atmel AT86RF2xx: Add Power Table on devicetree. 
- Atmel AT86RF2xx: Add support to RF212/212B Sub-Giga devices. 
 
- Interrupt Controller - Added support for ACE V1X. 
- Fixed an addressing issue on GICv3 controllers. 
- Removed support for - intel_s1000_crb.
 
- IPM - Kconfig is split into smaller, vendor oriented files. 
- Support for Intel S1000 in cAVS IDC driver has been removed as the board - intel_s1000_crbhas been removed.
 
- KSCAN - Enabled the touch panel on the NXP MIMXRT1170 EVK. 
 
- LED - Added support for using multiple instances of LP5562 LED module. 
- Devicetree usage cleanups. 
- i2c_dt_spec migration. 
- Updated LED PWM support for ESP32 boards. 
 
- LoRa - Added support for setting the sync-word and iq-inverted modes in LoRa modems. 
- Removed - REQUIRES_FULL_LIBClibrary dependency from LoRa drivers. This results in considerable flash memory savings.
- Devicetree usage cleanups. 
 
- MEMC - Added support for Atmel SAM SMC/EBI. 
 
- PCIE - Added a - dumpsubcommand to the- pcieshell command to print out the first 16 configuration space registers.
- Added a - lssubcommand to the- pcieshell command to list devices.
 
- PECI - Added PECI driver for Nuvoton NPCX family. 
- Devicetree binding for ITE it8xxx2 PECI driver has changed from - ite,peci-it8xxx2to- ite,it8xxx2-peciso that this aligns with other ITE devices.
 
- Pin control - Added driver for Infineon XMC4XXX. 
- Added driver for Renesas Smartbond platform. 
- Added driver for Xilinx Zynq-7000. 
- Added support for PSL pads in NPCX driver. 
- MEC15XX driver now supports both MEC15XX and MEC17XX. 
- nRF driver now supports disconnecting a pin by using - NRF_PSEL_DISCONNECT.
- nRF driver will use S0D1 drive mode for TWI/TWIM pins by default. 
 
- PWM - Added PWM driver for Renesas R-Car platform. 
- Added PWM driver for Raspberry Pi Pico series. 
- Added PWM support for NXP LPC55S36. 
- Added MCPWM support for ESP32 boards. 
- Fixed the nRF PWM driver to properly handle cases where PWM generation is used for some channels while some others are set to a constant level (active or inactive), e.g. when the LED driver API is used to turn off a PWM driven LED while another one (within the same PWM instance) is blinking. 
 
- Power Domain - Enabled access to the PMIC on NXP MXRT595 EVK. 
- Added soft off mode to the RT10xx Power Management. 
- Added support for power gating for Intel ADSP devices. 
 
- Reset - Added driver for GigaDevice GD32 SoCs. 
 
- SDHC - Added SDHC driver for NXP LPCXpresso platform. 
- Added support for card busy signal in SDHC SPI driver, to support the File System API. 
 
- Sensor - Converted drivers to use Kconfig ‘select’ instead of ‘depends on’ for I2C, SPI, and GPIO dependencies. 
- Converted drivers to use I2C, SPI, and GPIO dt_spec helpers. 
- Added multi-instance support to various drivers. 
- Added DS18B20 1-wire temperature sensor driver. 
- Added Würth Elektronik WSEN-HIDS driver. 
- Fixed unit conversion in the ADXL345 driver. 
- Fixed TTE and TTF time units in the MAX17055 driver. 
- Removed MPU9150 passthrough support from the AK8975 driver. 
- Changed the FXOS8700 driver default mode from accel-only to hybrid. 
- Enhanced the ADXL345 driver to support SPI. 
- Enhanced the BQ274XX driver to support the data ready interrupt trigger. 
- Enhanced the INA237 driver to support triggered mode. 
- Enhanced the LPS22HH driver to support being on an I3C bus. 
- Enhanced the MAX17055 driver to support VFOCV. 
 
- Serial - Added serial driver for Renesas Smartbond platform. 
- The STM32 driver now allows to use serial device as stop mode wake up source. 
- Added check for clock control device readiness during configuration for various drivers. 
- Various fixes on - lpuart.
- Added a workaround on bytes dropping on - nrfx_uarte.
- Fixed compilation error on - uart_pl011when interrupt is disabled.
- Added power management support on - stm32.
- xlnx_pshas moved to using- DEVICE_MMIOAPI.
- gd32now supports using reset API to reset hardware and clock control API to enable UART clock.
 
- SPI - Add interrupt-driven mode support for gd32 driver. 
- Enable SPI support on NXP MIMXRT595 EVK. 
- PL022: Added SPI driver for the PL022 peripheral. 
 
- Timer - STM32 LPTIM based timer should now be configured using device tree. 
 
- USB - Restructured the NXP MCUX USB driver. 
- Added USB support for NXP MXRT595. 
- Fixed detach behavior in nRF USBD and Atmel SAM drivers. 
 
- W1 - Added Zephyr-Serial 1-Wire master driver. 
- Added DS2484 1-Wire master driver. See the - maxim,ds2484devicetree binding for more information.
- Added DS2485 1-Wire master driver. See the - maxim,ds2485devicetree binding for more information.
- Introduced a shell module for 1-Wire. 
 
- Watchdog - Added support for Raspberry Pi Pico watchdog. 
- Added watchdog support on NXP MIMXRT595 EVK. 
 
- WiFi - Added ESP32 WiFi integration to Wi-Fi API management. 
 
Networking
- CoAP: - Replaced constant CoAP retransmission count and acknowledgment random factor with configurable - CONFIG_COAP_ACK_RANDOM_PERCENTand- CONFIG_COAP_MAX_RETRANSMIT.
- Updated - coap_packet_parse()and- coap_handle_request()to return different error code based on the reason of parsing error.
 
- Ethernet: - Added EAPoL and IEEE802154 Ethernet protocol types. 
 
- HTTP: - Improved API documentation. 
 
- LwM2M: - Moved LwM2M 1.1 support out of experimental. 
- Refactored SenML-JSON and JSON encoder/decoder to use Zephyr’s JSON library internally. 
- Extended LwM2M shell module with the following commands: - exec,- read,- write,- start,- stop,- update,- pause,- resume.
- Refactored LwM2M engine module into smaller sub-modules: LwM2M registry, LwM2M observation, LwM2M message handling. 
- Added an implementation of the LwM2M Access Control object (object ID 2). 
- Added support for LwM2M engine pause/resume. 
- Improved API documentation of the LwM2M engine. 
- Improved thread safety of the LwM2M library. 
- Added - lwm2m_registry_lock()and- lwm2m_registry_unlock()functions, which allow to update multiple resources w/o sending a notification for every update.
- Multiple minor fixes/improvements. 
 
- Misc: - CONFIG_NET_CONFIG_IEEE802154_DEV_NAMEhas been removed in favor of using a Devicetree choice given by- zephyr,ieee802154.
- Fixed net_pkt leak with shallow clone. 
- Fixed websocket build with - CONFIG_POSIX_API.
- Extracted zperf shell commands into a library. 
- Added support for building and using IEEE 802.15.4 L2 without IP support. 
- General clean up of inbound packet handling. 
- Added support for restarting DHCP w/o randomized delay. 
- Fixed a bug, where only one packet could be queued on a pending ARP request. 
 
- OpenThread: - Moved OpenThread glue code into - modulesdirectory.
- Fixed OpenThread build with - CONFIG_NET_MGMT_EVENT_INFOdisabled.
- Fixed mbed TLS configuration for Service Registration Protocol (SRP) OpenThread feature. 
- Added Kconfig option to enable Thread 1.3 support ( - CONFIG_OPENTHREAD_THREAD_VERSION_1_3).
- Updated - otPlatSettingsSet()according to new API documentation.
- Added new Kconfig options: 
 
- Sockets: - Fixed filling of the address structure provided in - recvfrom()for packet socket.
- Fixed a potential deadlock in TCP - send()call.
- Added support for raw 802.15.4 packet socket. 
 
- TCP: - Added support for Nagle’s algorithm. 
- Added “Silly Window Syndrome” avoidance. 
- Fixed MSS calculation. 
- Avoid unnecessary packet cloning on the RX path. 
- Implemented randomized retransmission timeouts and exponential backoff. 
- Fixed out-of-order data processing. 
- Implemented fast retransmit algorithm. 
- Multiple minor fixes/improvements. 
 
- Wi-Fi - Added support for using offloaded wifi_mgmt API with native network stack. 
- Extended Wi-Fi headers with additional Wi-Fi parameters (security, bands, modes). 
- Added new Wi-Fi management APIs for retrieving status and statistics. 
 
USB
Minor bug fixes and improvements in class implementations CDC ACM, DFU, and MSC. Otherwise no significant changes.
Devicetree
- Use of the devicetree label property has been deprecated, and the property has been made optional in almost all bindings throughout the tree. - In previous versions of zephyr, label properties like this commonly appeared in devicetree files: - foo { label = "FOO"; /* ... */ }; - You could then use something like the following to retrieve a device structure for use in the Device Driver Model: - const struct device *my_dev = device_get_binding("FOO"); if (my_dev == NULL) { /* either device initialization failed, or no such device */ } else { /* device is ready for use */ } - This approach has multiple problems. - First, it incurs a runtime string comparison over all devices in the system to look up each device, which is inefficient since devices are statically allocated and known at build time. Second, missing devices due to misconfigured device drivers could not easily be distinguished from device initialization failures, since both produced - NULLreturn values from- device_get_binding(). This led to frequent confusion. Third, the distinction between the label property and devicetree node labels – which are different despite the similar terms – was a frequent source of user confusion, especially since either one can be used to retrieve device structures.- Instead of using label properties, you should now generally be using node labels to retrieve devices instead. Node labels look like the - lbltoken in the following devicetree:- lbl: foo { /* ... */ }; - and you can retrieve the device structure pointer like this: - /* If the next line causes a build error, then there * is no such device. Either fix your devicetree or make sure your * device driver is allocating a device. */ const struct device *my_dev = DEVICE_DT_GET(DT_NODELABEL(lbl)); if (!device_is_ready(my_dev)) { /* device exists, but it failed to initialize */ } else { /* device is ready for use */ } - As shown in the above snippet, - DEVICE_DT_GETshould generally be used instead of- device_get_binding()when getting device structures from devicetree nodes. Note that you can pass- DEVICE_DT_GETany devicetree node identifier – you don’t have to use- DT_NODELABEL, though it is usually convenient to do so.
- Support for devicetree “fixups” was removed. For more details, see commit b2520b09a7 
- 
- All devicetree macros now recursively expand their arguments. This means that in the following example, - INDEXis always replaced with the number- 3for any hypothetical devicetree macro- DT_FOO():- #define INDEX 3 int foo = DT_FOO(..., INDEX) - Previously, devicetree macro arguments were expanded or not on a case-by-case basis. The current behavior ensures you can always rely on macro expansion when using devicetree APIs. 
- New API macros: 
- DT_NODE_VENDOR_BY_IDX_OR
- DT_NODE_VENDOR_BY_IDX
- DT_NODE_VENDOR_HAS_IDX
- DT_NODE_VENDOR_OR
 
- Deprecated macros: - DT_LABEL(node_id): use- DT_PROP(node_id, label)instead. This is part of the general deprecation of the label property described at the top of this section.
- DT_INST_LABEL(inst): use- DT_INST_PROP(inst, label)instead.
- DT_BUS_LABEL(node_id): use- DT_PROP(DT_BUS(node_id), label))instead.
- DT_INST_BUS_LABEL(node_id): use- `DT_PROP(DT_INST_BUS(inst), label)instead. Similar advice applies for the rest of the following deprecated macros: if you need to access a devicetree node’s label property, do so explicitly using another property access API macro.
- DT_GPIO_LABEL_BY_IDX()
- DT_GPIO_LABEL()
- DT_INST_GPIO_LABEL_BY_IDX()
- DT_INST_GPIO_LABEL()
- DT_SPI_DEV_CS_GPIOS_LABEL()
- DT_INST_SPI_DEV_CS_GPIOS_LABEL()
- DT_CHOSEN_ZEPHYR_FLASH_CONTROLLER_LABEL
 
 
- Bindings - The bus key in a bindings file can now be a list of strings as well as a string. This allows a single node to declare that it represents hardware which can communicate over multiple bus protocols. The primary use case is simultaneous support for I3C and I2C buses in the same nodes, with the base bus definition provided in dts/bindings/i3c/i3c-controller.yaml. 
- New: 
- intel,adsp-gpdma(formerly- intel,cavs-gpdma)
- intel,adsp-hda-host-in(formerly- intel,cavs-hda-host-in)
- intel,adsp-hda-host-out(formerly- intel,cavs-hda-host-out)
- intel,adsp-hda-link-in(formerly- intel,cavs-hda-link-in)
- intel,adsp-hda-link-out(formerly- intel,cavs-hda-link-out)
- intel,adsp-idc(formerly- intel,cavs-idc)
- intel,adsp-lps
- ite,it8xxx2-peci(formerly- ite,peci-it8xxx2)
- renesas,r8a7795-cpg-mssr(formerly- renesas,rcar-cpg-mssr)
- sifive,e24(formerly- riscv,sifive-e24)
- sifive,e31(formerly- riscv,sifive-e31)
- sifive,e51(formerly- riscv,sifive-e51)
- sifive,s7(formerly- riscv,sifive-s7)
- xen,xen-4.15
- zephyr,native-posix-linux-can
- zephyr,sdl-kscan
 
- Pin Control support added via new - pinctrl-0, etc. properties:
- Other changes: - Analog Devices parts: - adi,adxl372: new properties as part of a general conversion of the associated upstream driver to support multiple instances.
- adi,adxl362: new- wakeup-mode,- autosleepproperties.
 
- Atmel SoCs: - atmel,rf2xx: new- channel-page,- tx-pwr-table,- tx-pwr-min,- tx-pwr-maxproperties.
- GMAC: new - mac-eepromproperty.
 
- Espressif SoCs: - espressif,esp32-i2c: the- sda-pinand- scl-pinproperties are now- scl-gpiosand- sda-gpios.
- espressif,esp32-ledc: device configuration moved to devicetree via a new child binding.
- espressif,esp32-pinctrl: this now uses pin groups.
- espressif,esp32-spi: new- use-iomuxproperty.
- espressif,esp32-usb-serial: removed- peripheralproperty.
 
- GigaDevice SoCs: - Various peripheral bindings have had their SoC-specific - rcu-periph-clockproperties replaced with the standard- clocksproperty as part of driver changes associated with the new- gd,gd32-cctlclock controller binding:
- Similarly, various GigaDevice peripherals now support the standard - resetsproperty as part of related driver changes to support resetting the peripheral state before initialization via the- gd,gd32-rcubinding:
 
- Intel SoCs: - intel,adsp-tlb: new- paddr-size,- exec-bit-idx,- write-bit-idxproperties.
- intel,adsp-shim-clkctl: new- wovcro-supportedproperty.
- Removed - intel,dmicbinding.
- Removed - intel,s1000-pinmuxbinding.
 
- Nordic SoCs: - nordic,nrf-pinctrl:- NRF_PSEL_DISCONNECTEDcan be used to disconnect a pin.
- nordic,nrf-spim: new- rx-delay-supported,- rx-delayproperties.
- nordic,nrf-spim,- nordic,nrf-spi: new
- overrun-character,- max-frequency,- memory-region,- memory-region-namesproperties.
 
- nordic,nrf-uarte: new- memory-region,- memory-region-namesproperties.
- Various bindings have had - foo-pinproperties deprecated. For example,- nordic,nrf-qspihas a deprecated- sck-pinproperty. Uses of such properties should be replaced with pinctrl equivalents; see- nordic,nrfpinctrl.
 
- Nuvoton SoCs: - nuvoton,npcx-leakage-io: new- lvol-mapsproperty.
- nuvoton,npcx-scfg: removed- io_port,- io_bitcells in- lvol_cellsspecifiers.
- Removed: - nuvoton,npcx-lvolctrl-def,- nuvoton,npcx-psl-out,- nuvoton,npcx-pslctrl-conf,- nuvoton,npcx-pslctrl-def.
- Added pinctrl support for PSL (Power Switch Logic) pads. 
 
- NXP SoCs: - nxp,imx-pwm: new- run-in-wait,- run-in-debugproperties.
- nxp,lpc-spi: new- def-charproperty.
- nxp,lpc-iocon-pinctrl: new- nxp,analog-alt-modeproperty.
- removed deprecated - nxp,lpc-iapbinding.
- nxp,imx-csi: new- sensorproperty replacing the- sensor-labelproperty.
- nxp,imx-lpi2c: new- scl-gpios,- sda-gpiosproperties.
 
- STM32 SoCs: - st,stm32-adc: new- has-vbat-channelproperty.
- st,stm32-can: removed- one-shotproperty.
- st,stm32-fdcan: new- clocks,- clk-dividerproperties.
- st,stm32-ospi: new- dmas,- dma-namesproperties.
- st,stm32-ospi-nor: new- four-byte-opcodes,- writeocproperties; new enum values- 2and- 4in- spi-bus-widthproperty.
- st,stm32-pwm: removed deprecated- st,prescalerproperty.
- st,stm32-rng: new- nist-configproperty.
- st,stm32-sdmmc: new- dmas,- dma-names,- bus-widthproperties.
- st,stm32-temp-cal: new- ts-cal-resolutionproperty; removed- ts-cal-offsetproperty.
- st,stm32u5-pll-clock: new- div-pproperty.
- temperature sensor bindings no longer have a - ts-voltage-mvproperty.
- UART bindings: new - wakeup-lineproperties.
 
- Texas Instruments parts: - ti,ina237: new- alert-config,- irq-gpiosproperties.
- ti,bq274xx: new- zephyr,lazy-loadproperty.
 
- Ultrachip UC81xx displays: - The - gooddisplay,gd7965binding was removed in favor of new UltraChip device-specific bindings (see list of new- ultrachip,...bindings above). Various required properties in the removed binding are now optional in the new bindings.
- New - pll,- vdcs,- lutc,- lutww,- lutkw,- lutwk,- lutkk,- lutbd,- softstartproperties. Full and partial refresh profile support. The- pwrproperty is now part of the child binding.
 
- Zephyr-specific bindings: - zephyr,bt-hci-spi: new- reset-assert-duration-msproperty.
- removed - zephyr,ipm-consolebinding.
- zephyr,ipc-openamp-static-vrings: new- zephyr,buffer-sizeproperty.
- zephyr,memory-region: new- PPBand- IOregion support.
 
- infineon,xmc4xxx-uart: new- input-srcproperty.
- WSEN-HIDS sensors: new - drdy-gpios,- odrproperties.
- sitronix,st7789v:- cmd-data-gpiosis now optional.
- solomon,ssd16xxfb: new- dummy-line,- gate-line-widthproperties. The- gdv,- sdv,- vcom, and- border-waveformproperties are now optional.
- riscv,clint0removed; all in-tree users were converted to- sifive,clint0or derived bindings.
- worldsemi,ws2812-spi: SPI bindings have new- spi-cpol,- spi-cphaproperties.
- ns16550:- reg-shiftis now required.
- Removed - reserved-memorybinding.
 
 
- Implementation details - The generated devicetree header file placed in the build directory was renamed from - devicetree_unfixed.hto- devicetree_generated.h.
- The generated - device_extern.hhas been replaced using- DT_FOREACH_STATUS_OKAY_NODE. See commit 0224f2c508df154ffc9c1ecffaf0b06608d6b623
 
Libraries / Subsystems
- C Library - Added Picolibc as a Zephyr module. Picolibc module is a footprint-optimized full C standard library implementation that is configurable at the build time. 
- C library heap initialization call has been moved from the - APPLICATIONphase to the- POST_KERNELphase to allow calling the libc dynamic memory management functions (e.g.- malloc()) during the application initialization phase.
- Added - strerror()and- strerror_r()functions to the minimal libc.
- Removed architecture-specific - off_ttype definition in the minimal libc.- off_tis now defined as- intptr_tregardless of the selected architecture.
 
- C++ Subsystem - Added - std::ptrdiff_t,- std::size_t,- std::max_align_tand- std::nullptr_ttype definitions to the C++ subsystem- cstddefheader.
- Renamed global constructor list symbols to prevent the native POSIX host runtime from executing the constructors before Zephyr loads. 
 
- Cbprintf - Updated cbprintf static packaging to interpret - unsigned char *as a pointer to a string. See Limitations and recommendations for more details about how to efficienty use strings. Change mainly applies to the- loggingsubsystem since it uses this feature.
 
- Emul - Added - EMUL_DT_DEFINEand- EMUL_DT_INST_DEFINEto mirror- DEVICE_DT_DEFINEand- DEVICE_DT_INST_DEFINErespectively.
- Added - EMUL_DT_GETto mirror- DEVICE_DT_GET.
- Removed the need to manually register emulators in their init function (automatically done). 
 
- Filesystem - Added cash used to reduce the NVS data lookup time, see - CONFIG_NVS_LOOKUP_CACHEoption.
- Changing mkfs options to create FAT32 on larger storage when FAT16 fails. 
- Added - CONFIG_FS_FATFS_MIN_SSthat allows to set minimal expected sector size to be supported.
 
- Management - MCUMGR race condition when using the task status function whereby if a thread state changed it could give a falsely short process list has been fixed. 
- MCUMGR shell (group 9) CBOR structure has changed, the - rcresponse is now only used for mcumgr errors, shell command execution result codes are instead returned in the- retvariable instead, see Shell management for updated information. Legacy behaviour can be restored by enabling- CONFIG_MCUMGR_CMD_SHELL_MGMT_LEGACY_RC_RETURN_CODE.
- MCUMGR img_mgmt erase command now accepts an optional slot number to select which image will be erased, using the - slotinput (will default to slot 1 if not provided).
- MCUMGR - CONFIG_OS_MGMT_TASKSTAT_SIGNED_PRIORITYis now enabled by default, this makes thread priorities in the taskstat command signed, which matches the signed priority of tasks in Zephyr, to revert to previous behaviour of using unsigned values, disable this Kconfig.
- MCUMGR taskstat runtime field support has been added, if - CONFIG_OS_MGMT_TASKSTATis enabled, which will report the number of CPU cycles have been spent executing the thread.
- MCUMGR transport API drops - zstparameter, of- zephyr_smp_transporttype, from- zephyr_smp_transport_out_fn()type callback as it has not been used, and the- nbparameter, of- net_buftype, can carry additional transport information when needed.
- A dummy SMP transport has been added which allows for testing MCUMGR functionality and commands/responses. 
- An issue with the UART/shell transports whereby large packets would wrongly be split up with multiple start-of-frame headers instead of only one has been fixed. 
- SMP now runs in its own dedicated work queue which prevents issues running in the system workqueue with some transports, e.g. Bluetooth, which previously caused a deadlock if buffers could not be allocated. 
- Bluetooth transport will now reduce the size of packets that are sent if they are too large for the remote device instead of failing to send them, if the remote device cannot accept a notification of 20 bytes then the attempt is aborted. 
- Unaligned memory access problems for CPUs that do not support it in MCUMGR headers has been fixed. 
- Groups in MCUMGR now use kernel slist entries rather than the custom MCUMGR structs for storage. 
- Levels of function redirection which were previously used to support multiple OS’s have been reduced to simplify code and reduce output size. 
- Bluetooth SMP debug output format specifier has been fixed to avoid a build warning on native_posix platforms. 
- Issue with - img_mgmt_dfu_stopped()being wrongly called on success has been fixed.
- Issue with MCUMGR img_mgmt image erase wrongly returning success during an error condition has been fixed. 
- Unused MCUMGR header files such as mcumgr_util.h have been removed. 
- Verbose error response reporting has been fixed and is now present when enabled. 
- Internal SMP functions have been removed from the public smp.h header file and moved to smp_internal.h 
- Kconfig files have been split up and moved to directories containing the systems they influence. 
- MCUMGR img_mgmt image upload over-riding/hiding of result codes has been fixed. 
 
- Logging - Removed legacy (v1) implementation and removed any references to the logging v2. 
- Added - LOG_RAWfor logging strings without additional formatting. It is similar to- LOG_PRINTKbut do not append- <cr>when new line is found.
- Improvements in the ADSP backend. 
- File system backend: Only delete old files if necessary. 
 
- IPC - Introduced a ‘zephyr,buffer-size’ DT property to set the sizes for TX and RX buffers per created instance. 
- Set WQ priority back to - PRIO_PREEMPTto fix an issue that was starving the scheduler.
- icmsg_buflibrary was renamed to- spsc_pbuf.
- Added cache handling support to - spsc_pbuf.
- Fixed an issue where the TX virtqueue was misaligned by 2 bytes due to the way the virtqueue start address is calculated 
- Added - ipc_service_deregister_endpoint()function to deregister endpoints.
 
- LoRaWAN - Added Class-C support. 
- Upgraded the loramac-node repository to v4.6.0. 
- Moved the - REQUIRES_FULL_LIBClibrary dependency from LoRa to LoRaWAN.
- Fixed the async reception in SX127x modems. 
 
- Modbus - Added user data entry for ADU callback. 
 
- Power management - Allow multiple subscribers to latency changes in the policy manager. 
- Added new API to implement suspend-to-RAM (S2RAM). Select - CONFIG_PM_S2RAMto enable this feature.
- Added - pm_device_is_powered()to query a device power state.
 
- POSIX - Made - tznon-const in- gettimeofday()for conformance to spec.
- Fixed pthread descriptor resource leak. Previously only pthreads with state - PTHREAD_TERMINATEDcould be reused. However,- pthread_join()sets the state to- PTHREAD_EXITED. Consider both states as candidates in- pthread_create().
- Added - perror()implementation.
- Used consistent timebase in - sem_timedwait().
 
- RTIO - Initial version of an asynchronous task and executor API for I/O similar inspired by Linux’s very successful io_uring. 
- Provided a simple linear and limited concurrency executor, simple task queuing, and the ability to poll for task completions. 
 
- SD Subsystem - SDMMC STM32: Now compatible with STM32L5 series. Added DMA support for DMA-V1 compatible devices. 
- Added support for handling the - DISK_IOCTL_CTRL_SYNCioctl call. this enables the filesystem api- fs_sync().
 
- Settings - Added API function - settings_storage_get()which allows to get the storage instance used by the settings backed to store its records.
 
- Shell - Added new API function checking shell readiness: - shell_ready().
- Added option to control formatting of the logging timestamp. 
- Added missing asserts to the shell api functions. 
- MQTT backend: bug fix to handle negative return value of the wait function. 
- A new - backendscommand that lists the name and number of active shell backends.
- Fixed handling mandatory args with optional raw arg. 
 
- Storage - flash_area_open()returns error if area’s flash device is unreachable.
- flash_areacomponents were reworked so build-time reference to the flash device is used instead of its name with runtime driver buinding.
- Added - FIXED_PARTITION_macros that move flash_map to use DTS node labels.
 
- Testsuite - Added Kconfig support to - unit_testingplatform.
- Migrated tests to use - CONFIG_ZTEST_NEW_API.
- Added ztest options for shuffling tests/suites via: 
- Added ztest native_posix command line arguments for running specific tests/suites using - --test suite_name:*or- --test suite_name::test_namecommand line arguments.
 
- Storage - Flash Map API deprecates usage of - FLASH_AREA_macros and replaces them with- FIXED_PARTITION_macros. This follows removal of- labelproperty from DTS nodes.
 
HALs
- Atmel - sam: Fixed incorrect CIDR values for revision b silicon of SAMV71 devices. 
 
- Espressif - Updated Espressif HAL with esp-idf 4.4.1 updates. 
- Added support to binary blobs implementation. 
- Fixed ESP32-C3 wifi issues. 
 
- GigaDevice - Added support for gd32e50x. 
- gd32e10x: upgraded to v1.3.0. 
- gd32f4xx: upgraded to v3.0.0. 
 
- NXP - Updated the NXP MCUX SDK to version 2.12. 
- Updated the USB middleware to version 2.12. 
- Removed all binary Blobs for power management libraries. 
- Removed all binary archive files. 
 
- Nordic - Updated nrfx to version 2.9.0. 
 
- RPi Pico - Renamed - adc_readto- pico_adc_read, to avoid name collision with Zephyr’s API.
 
- STM32 - stm32cube: update stm32f7 to cube version V1.17.0. 
- stm32cube: update stm32g0 to cube version V1.6.1. 
- stm32cube: update stm32g4 to cube version V1.5.1. 
- stm32cube: update stm32l4 to cube version V1.17.2. 
- stm32cube: update stm32u5 to cube version V1.1.1. 
- stm32cube: update stm32wb to cube version V1.14.0. 
- pinctrl: some pin definitions did not contain the “_c” suffix, used by pins with analog switch on certain H7 devices. 
 
- TI - simplelink: cc13x2_cc26x2: include ADC driverlib sources. 
- simplelink: cc13x2_cc26x2: include flash driverlib sources. 
- cc13x2: kconfig conditions for P variant support & custom RF hwattrs. 
- cc13x2_cc26x2: update to TI SimpleLink SDK 4.40.04.04. 
 
MCUboot
- Added initial support for leveraging the RAM-LOAD mode with the zephyr-rtos port. 
- Added the MCUboot status callback support. See - CONFIG_MCUBOOT_ACTION_HOOKS.
- Edited includes to have the - zephyr/prefix.
- Edited the DFU detection’s GPIO-pin configuration to be done through DTS using the - mcuboot-button0pin alias.
- Edited the LED usage to prefer DTS’ - mcuboot-led0alias over the- bootloader-led0alias.
- Removed - device_get_binding()usage in favor of- DEVICE_DT_GET().
- Added support for generic watchdog0 alias. 
- Enabled watchdog feed by default. 
- Dropped the - CONFIG_BOOT_IMAGE_ACCESS_HOOKS_FILEoption. The inclusion of the Hooks implementation file is now up to the project’s customization.
- Switched zephyr port from using - FLASH_AREA_macros to- FIXED_PARTITION_macros.
- Made flash_map_backend.h compatible with a C++ compiler. 
- Allowed to get the flash write alignment based on the - zephyr,flashDT chosen node property.
- boot_serial: - Upgraded from cddl-gen v0.1.0 to zcbor v0.4.0. 
- Refactored and optimized the code, mainly in what affects the progressive erase implementation. 
- Fixed a compilation issue with the echo command code. 
 
- imgtool: - Added support for providing a signature through a third party. 
 
Trusted Firmware-M
- Allowed enabling FPU in the application when TF-M is enabled. 
- Added option to exclude non-secure TF-M application from build. 
- Relocated - mergehex.pyto- scripts/build.
- Added option for custom reset handlers. 
Documentation
Tests and Samples
- A large number of tests have been reworked to use the new ztest API, see Test Framework for more details. This should be used for newly introduce tests as well. 
- smp_svr Bluetooth overlay (overlay-bt) has been reworked to increase throughput and enable packet reassembly. 
- Added test for the new shell API function: - shell_ready().