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
pinmux
to 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_..._ENABLED
configs).
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_control
to remove anonymous struct. This causes possible breakage for static initialization of the struct. UpdatedSPI_CS_CONTROL_PTR_DT
to reflect this change.The
CONFIG_LEGACY_INCLUDE_PATH
option 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_EATT
is enabled must set thechan_opt
field on the GATT parameter structs. To keep the old behavior useBT_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_frame
has been renamed tosocketcan_frame
, and the SocketCANstruct can_filter
has been renamed tosocketcan_filter
. The SocketCAN utility functions are now available in include/zephyr/net/socketcan_utils.h.The CAN controller
struct zcan_frame
has been renamed tocan_frame
, andstruct zcan_filter
has been renamed tocan_filter
.The
can_state
enumerations have been renamed to contain the word STATE in order to make their context more clear:CAN_ERROR_ACTIVE
renamed toCAN_STATE_ERROR_ACTIVE
.CAN_ERROR_WARNING
renamed toCAN_STATE_ERROR_WARNING
.CAN_ERROR_PASSIVE
renamed toCAN_STATE_ERROR_PASSIVE
.CAN_BUS_OFF
renamed toCAN_STATE_BUS_OFF
.
The error code for
can_send()
when the CAN controller is in bus off state has been changed from-ENETDOWN
to-ENETUNREACH
. A return value of-ENETDOWN
now indicates that the CAN controller is inCAN_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()
andsys_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_control
fields for GPIO management that have been replaced withgpio_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_LABEL
andDT_INST_SPI_DEV_CS_GPIOS_LABEL
are deprecated in favor of utilizingDT_SPI_DEV_CS_GPIOS_CTLR
and variants.DT_GPIO_LABEL
,DT_INST_GPIO_LABEL
,DT_GPIO_LABEL_BY_IDX
, andDT_INST_GPIO_LABEL_BY_IDX
, are deprecated in favor of utilizingDT_GPIO_CTLR
and variants.DT_LABEL
, andDT_INST_LABEL
, are deprecated in favor of utilizingDT_PROP
and variants.DT_BUS_LABEL
, andDT_INST_BUS_LABEL
, are deprecated in favor of utilizingDT_BUS
and variants.STM32 LPTIM domain clock should now be configured using devicetree. Related Kconfig
CONFIG_STM32_LPTIM_CLOCK
option is now deprecated.label
property from devicetree as a base property. The property is still valid for specific bindings to specify likegpio-leds
andfixed-partitions
.Bluetooth mesh Configuration Client API prefixed with
bt_mesh_cfg_
is deprecated in favor of a new API with prefixbt_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 withFIXED_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_STR
is 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()
andcan_stop()
API functions for starting and stopping a CAN controller. Applications will need to callcan_start()
to bring the CAN controller out ofCAN_STATE_STOPPED
before 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_SHOT
for enabling CAN controller one-shot transmission mode.Added
CAN_MODE_3_SAMPLES
for 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_INIT
macros with the same initialisation function must now useSYS_INIT_NAMED
with 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_SIZE
andCONFIG_ARC_EXCEPTION_STACK_SIZE
value.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_DCACHE
andCONFIG_CPU_HAS_ICACHE
).Added data/instr. sync barriers after writing to
SCTLR
to disable MPU.Use
spsr_cxsf
instead of unpredictablespsr_hyp
on Cortex-R52.Removes
-Wstringop-overread
warning with GCC 12.Fixed handling of system off failure.
Fixed issue with incorrect
ssf
under bad syscall.Fixed region check issue with mmu.
ARM64
arch_mem_map()
now supportsK_MEM_PERM_USER
.Added
CONFIG_WAIT_AT_RESET_VECTOR
to 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_STACKS
is 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_ECALL
for platforms that require everymret
to be balanced byecall
.IRQ vector table is now used for vectored mode.
Disabled
CONFIG_IRQ_VECTOR_TABLE_JUMP_BY_CODE
for CLIC.STRINGIFY
macro is now used for CSR helpers.CONFIG_CODE_DATA_RELOCATION
is now supported.PLIC and CLIC are now decoupled.
jedec,spi-nor
is no longer required to beokay
by 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
RSR
andWSR
have been renamed toXTENSA_RSR
andXTENSA_WSR
to 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_t
format.
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 structbt_le_ext_adv_cb
to enable synchronization of the advertising payload updates with the Resolvable Private Address (RPA) rotations when theCONFIG_BT_PRIVACY
is enabled.Added a new
bt_le_set_rpa_timeout()
API call to dynamically change the Resolvable Private Address (RPA) timeout when theCONFIG_BT_RPA_TIMEOUT_DYNAMIC
is 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()
andbt_conn_enc_key_size()
now take aconst 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_info
structure with security information.Added a new
CONFIG_BT_PRIVACY_RANDOMIZE_IR
that 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_TIMEOUT
to 100 to get the previous timing.Restructured shell commands.
Controller
Made the new LLCP implementation the default one. Enable
CONFIG_BT_LL_SW_LLCP_LEGACY
to revert back to the legacy implementation.CONFIG_BT_LL_SW_LLCP_LEGACY
is marked deprecated in favor of the newCONFIG_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_AUX
for allowing periodic sync event skipping.Added a new
CONFIG_BT_CTLR_SCAN_AUX_SYNC_RESERVE_MIN
for 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_CHAIN
to 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 blobs
command 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_PATH
setting.
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_spec
related helpers for sequence initialization, setting up channels, and converting raw values to millivolts.Fixed
ADC_DT_SPEC_GET
and 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-twai
devicetree binding for more information.The STM32 CAN-FD CAN driver clock configuration has been moved from Kconfig to devicetree. See the
st,stm32-fdcan
devicetree 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_ALIGN
andBOOT_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-eeprom
devicetree 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_crb
has 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_LIBC
library 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
dump
subcommand to thepcie
shell command to print out the first 16 configuration space registers.Added a
ls
subcommand to thepcie
shell command to list devices.
PECI
Added PECI driver for Nuvoton NPCX family.
Devicetree binding for ITE it8xxx2 PECI driver has changed from
ite,peci-it8xxx2
toite,it8xxx2-peci
so 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_pl011
when interrupt is disabled.Added power management support on
stm32
.xlnx_ps
has moved to usingDEVICE_MMIO
API.gd32
now 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,ds2484
devicetree binding for more information.Added DS2485 1-Wire master driver. See the
maxim,ds2485
devicetree 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_PERCENT
andCONFIG_COAP_MAX_RETRANSMIT
.Updated
coap_packet_parse()
andcoap_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()
andlwm2m_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_NAME
has been removed in favor of using a Devicetree choice given byzephyr,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
modules
directory.Fixed OpenThread build with
CONFIG_NET_MGMT_EVENT_INFO
disabled.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
NULL
return values fromdevice_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
lbl
token 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_GET
should generally be used instead ofdevice_get_binding()
when getting device structures from devicetree nodes. Note that you can passDEVICE_DT_GET
any devicetree node identifier – you don’t have to useDT_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,
INDEX
is always replaced with the number3
for any hypothetical devicetree macroDT_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)
: useDT_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)
: useDT_INST_PROP(inst, label)
instead.DT_BUS_LABEL(node_id)
: useDT_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
(formerlyintel,cavs-gpdma
)intel,adsp-hda-host-in
(formerlyintel,cavs-hda-host-in
)intel,adsp-hda-host-out
(formerlyintel,cavs-hda-host-out
)intel,adsp-hda-link-in
(formerlyintel,cavs-hda-link-in
)intel,adsp-hda-link-out
(formerlyintel,cavs-hda-link-out
)intel,adsp-idc
(formerlyintel,cavs-idc
)intel,adsp-lps
ite,it8xxx2-peci
(formerlyite,peci-it8xxx2
)renesas,r8a7795-cpg-mssr
(formerlyrenesas,rcar-cpg-mssr
)sifive,e24
(formerlyriscv,sifive-e24
)sifive,e31
(formerlyriscv,sifive-e31
)sifive,e51
(formerlyriscv,sifive-e51
)sifive,s7
(formerlyriscv,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
: newwakeup-mode
,autosleep
properties.
Atmel SoCs:
atmel,rf2xx
: newchannel-page
,tx-pwr-table
,tx-pwr-min
,tx-pwr-max
properties.GMAC: new
mac-eeprom
property.
Espressif SoCs:
espressif,esp32-i2c
: thesda-pin
andscl-pin
properties are nowscl-gpios
andsda-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
: newuse-iomux
property.espressif,esp32-usb-serial
: removedperipheral
property.
GigaDevice SoCs:
Various peripheral bindings have had their SoC-specific
rcu-periph-clock
properties replaced with the standardclocks
property as part of driver changes associated with the newgd,gd32-cctl
clock controller binding:Similarly, various GigaDevice peripherals now support the standard
resets
property as part of related driver changes to support resetting the peripheral state before initialization via thegd,gd32-rcu
binding:
Intel SoCs:
intel,adsp-tlb
: newpaddr-size
,exec-bit-idx
,write-bit-idx
properties.intel,adsp-shim-clkctl
: newwovcro-supported
property.Removed
intel,dmic
binding.Removed
intel,s1000-pinmux
binding.
Nordic SoCs:
nordic,nrf-pinctrl
:NRF_PSEL_DISCONNECTED
can be used to disconnect a pin.nordic,nrf-spim
: newrx-delay-supported
,rx-delay
properties.nordic,nrf-spim
,nordic,nrf-spi
: newoverrun-character
,max-frequency
,memory-region
,memory-region-names
properties.
nordic,nrf-uarte
: newmemory-region
,memory-region-names
properties.Various bindings have had
foo-pin
properties deprecated. For example,nordic,nrf-qspi
has a deprecatedsck-pin
property. Uses of such properties should be replaced with pinctrl equivalents; seenordic,nrfpinctrl
.
Nuvoton SoCs:
nuvoton,npcx-leakage-io
: newlvol-maps
property.nuvoton,npcx-scfg
: removedio_port
,io_bit
cells inlvol_cells
specifiers.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
: newrun-in-wait
,run-in-debug
properties.nxp,lpc-spi
: newdef-char
property.nxp,lpc-iocon-pinctrl
: newnxp,analog-alt-mode
property.removed deprecated
nxp,lpc-iap
binding.nxp,imx-csi
: newsensor
property replacing thesensor-label
property.nxp,imx-lpi2c
: newscl-gpios
,sda-gpios
properties.
STM32 SoCs:
st,stm32-adc
: newhas-vbat-channel
property.st,stm32-can
: removedone-shot
property.st,stm32-fdcan
: newclocks
,clk-divider
properties.st,stm32-ospi
: newdmas
,dma-names
properties.st,stm32-ospi-nor
: newfour-byte-opcodes
,writeoc
properties; new enum values2
and4
inspi-bus-width
property.st,stm32-pwm
: removed deprecatedst,prescaler
property.st,stm32-rng
: newnist-config
property.st,stm32-sdmmc
: newdmas
,dma-names
,bus-width
properties.st,stm32-temp-cal
: newts-cal-resolution
property; removedts-cal-offset
property.st,stm32u5-pll-clock
: newdiv-p
property.temperature sensor bindings no longer have a
ts-voltage-mv
property.UART bindings: new
wakeup-line
properties.
Texas Instruments parts:
ti,ina237
: newalert-config
,irq-gpios
properties.ti,bq274xx
: newzephyr,lazy-load
property.
Ultrachip UC81xx displays:
The
gooddisplay,gd7965
binding was removed in favor of new UltraChip device-specific bindings (see list of newultrachip,...
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
,softstart
properties. Full and partial refresh profile support. Thepwr
property is now part of the child binding.
Zephyr-specific bindings:
zephyr,bt-hci-spi
: newreset-assert-duration-ms
property.removed
zephyr,ipm-console
binding.zephyr,ipc-openamp-static-vrings
: newzephyr,buffer-size
property.zephyr,memory-region
: newPPB
andIO
region support.
infineon,xmc4xxx-uart
: newinput-src
property.WSEN-HIDS sensors: new
drdy-gpios
,odr
properties.sitronix,st7789v
:cmd-data-gpios
is now optional.solomon,ssd16xxfb
: newdummy-line
,gate-line-width
properties. Thegdv
,sdv
,vcom
, andborder-waveform
properties are now optional.riscv,clint0
removed; all in-tree users were converted tosifive,clint0
or derived bindings.worldsemi,ws2812-spi
: SPI bindings have newspi-cpol
,spi-cpha
properties.ns16550
:reg-shift
is now required.Removed
reserved-memory
binding.
Implementation details
The generated devicetree header file placed in the build directory was renamed from
devicetree_unfixed.h
todevicetree_generated.h
.The generated
device_extern.h
has been replaced usingDT_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
APPLICATION
phase to thePOST_KERNEL
phase to allow calling the libc dynamic memory management functions (e.g.malloc()
) during the application initialization phase.Added
strerror()
andstrerror_r()
functions to the minimal libc.Removed architecture-specific
off_t
type definition in the minimal libc.off_t
is now defined asintptr_t
regardless of the selected architecture.
C++ Subsystem
Added
std::ptrdiff_t
,std::size_t
,std::max_align_t
andstd::nullptr_t
type definitions to the C++ subsystemcstddef
header.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 thelogging
subsystem since it uses this feature.
Emul
Added
EMUL_DT_DEFINE
andEMUL_DT_INST_DEFINE
to mirrorDEVICE_DT_DEFINE
andDEVICE_DT_INST_DEFINE
respectively.Added
EMUL_DT_GET
to mirrorDEVICE_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_CACHE
option.Changing mkfs options to create FAT32 on larger storage when FAT16 fails.
Added
CONFIG_FS_FATFS_MIN_SS
that 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
rc
response is now only used for mcumgr errors, shell command execution result codes are instead returned in theret
variable instead, see Shell management for updated information. Legacy behaviour can be restored by enablingCONFIG_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
slot
input (will default to slot 1 if not provided).MCUMGR
CONFIG_OS_MGMT_TASKSTAT_SIGNED_PRIORITY
is 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_TASKSTAT
is enabled, which will report the number of CPU cycles have been spent executing the thread.MCUMGR transport API drops
zst
parameter, ofzephyr_smp_transport
type, fromzephyr_smp_transport_out_fn()
type callback as it has not been used, and thenb
parameter, ofnet_buf
type, 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_RAW
for logging strings without additional formatting. It is similar toLOG_PRINTK
but 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_PREEMPT
to fix an issue that was starving the scheduler.icmsg_buf
library was renamed tospsc_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_LIBC
library 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_S2RAM
to enable this feature.Added
pm_device_is_powered()
to query a device power state.
POSIX
Made
tz
non-const ingettimeofday()
for conformance to spec.Fixed pthread descriptor resource leak. Previously only pthreads with state
PTHREAD_TERMINATED
could be reused. However,pthread_join()
sets the state toPTHREAD_EXITED
. Consider both states as candidates inpthread_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_SYNC
ioctl call. this enables the filesystem apifs_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
backends
command 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_area
components 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_testing
platform.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_name
command line arguments.
Storage
Flash Map API deprecates usage of
FLASH_AREA_
macros and replaces them withFIXED_PARTITION_
macros. This follows removal oflabel
property 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_read
topico_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-button0
pin alias.Edited the LED usage to prefer DTS’
mcuboot-led0
alias over thebootloader-led0
alias.Removed
device_get_binding()
usage in favor ofDEVICE_DT_GET()
.Added support for generic watchdog0 alias.
Enabled watchdog feed by default.
Dropped the
CONFIG_BOOT_IMAGE_ACCESS_HOOKS_FILE
option. The inclusion of the Hooks implementation file is now up to the project’s customization.Switched zephyr port from using
FLASH_AREA_
macros toFIXED_PARTITION_
macros.Made flash_map_backend.h compatible with a C++ compiler.
Allowed to get the flash write alignment based on the
zephyr,flash
DT 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.py
toscripts/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()
.