blob: c80538af1203df943747a7ff0dd53574704de06e [file] [log] [blame]
:orphan:
.. _zephyr_3.5:
Zephyr 3.5.0 (Working Draft)
############################
We are pleased to announce the release of Zephyr version 3.5.0.
Major enhancements with this release include:
* Added native_sim (successor to native_posix)
The following sections provide detailed lists of changes by component.
Security Vulnerability Related
******************************
The following CVEs are addressed by this release:
More detailed information can be found in:
https://docs.zephyrproject.org/latest/security/vulnerabilities.html
* CVE-2023-4257: Under embargo until 2023-10-12
* CVE-2023-4258 `Zephyr project bug tracker GHSA-m34c-cp63-rwh7
<https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-m34c-cp63-rwh7>`_
* CVE-2023-4260 `Zephyr project bug tracker GHSA-gj27-862r-55wh
<https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-gj27-862r-55wh>`_
* CVE-2023-4264 `Zephyr project bug tracker GHSA-rgx6-3w4j-gf5j
<https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-rgx6-3w4j-gf5j>`_
* CVE-2023-4424: Under embargo until 2023-11-01
* CVE-2023-5055: Under embargo until 2023-11-01
* CVE-2023-5139: Under embargo until 2023-10-25
* CVE-2023-5184 `Zephyr project bug tracker GHSA-8x3p-q3r5-xh9g
<https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-8x3p-q3r5-xh9g>`_
Kernel
******
Architectures
*************
* ARM
* Architectural support for Arm Cortex-M has been separated from Arm
Cortex-A and Cortex-R. This includes separate source modules to handle
tasks like IRQ management, exception handling, thread handling and swap.
For implementation details see :github:`60031`.
* ARM
* ARM64
* RISC-V
* Xtensa
* POSIX
* Has been reworked to use the native simulator.
* New boards have been added.
* For the new boards, embedded C libraries can be used, and conflicts with the host symbols
and libraries avoided.
* The :ref:`POSIX OS abstraction<posix_support>` is supported in these new boards.
* AMP targets are now supported.
* Added support for LLVM source profiling/coverage.
Bluetooth
*********
* Audio
* Direction Finding
* Host
* Mesh
* Controller
* HCI Driver
Boards & SoC Support
********************
* Added support for these SoC series:
* Nuvoton NuMaker M46x series
* Removed support for these SoC series:
* Made these changes in other SoC series:
* i.MX RT SOCs no longer enable CONFIG_DEVICE_CONFIGURATION_DATA by default.
boards using external SDRAM should set CONFIG_DEVICE_CONFIGURATION_DATA
and CONFIG_NXP_IMX_EXTERNAL_SDRAM to enabled.
* i.MX RT SOCs no longer support CONFIG_OCRAM_NOCACHE, as this functionality
can be achieved using devicetree memory regions
* Added support for these ARC boards:
* Added support for these ARM boards:
* Nuvoton NuMaker Platform M467
* Added support for these ARM64 boards:
* Added support for these RISC-V boards:
* Added support for these X86 boards:
* Added support for these Xtensa boards:
* Added support for these POSIX boards:
* :ref:`native_sim(_64) <native_sim>`
* nrf5340bsim_nrf5340_cpu(net|app). A simulated nrf5340 SOC, which uses Babblesim for its radio
traffic.
* Made these changes for ARC boards:
* Made these changes for ARM boards:
* Made these changes for ARM64 boards:
* Made these changes for RISC-V boards:
* Made these changes for X86 boards:
* Made these changes for Xtensa boards:
* Made these changes for POSIX boards:
* nrf52_bsim:
* Has been reworked to use the native simulator as its runner.
* Multiple HW models improvements and fixes. GPIO & GPIOTE peripherals added.
* Removed support for these ARC boards:
* Removed support for these ARM boards:
* Removed support for these ARM64 boards:
* Removed support for these RISC-V boards:
* Removed support for these X86 boards:
* Removed support for these Xtensa boards:
* Made these changes in other boards:
* Added support for these following shields:
Build system and infrastructure
*******************************
* SCA (Static Code Analysis)
* Added support for CodeChecker
* Twister now supports ``required_snippets`` in testsuite .yml files, this can
be used to include a snippet when a test is ran (and exclude any boards from
running that the snippet cannot be applied to).
* Interrupts
* Added support for shared interrupts
* Added support for setting MCUboot encryption key in sysbuild which is then
propagated to the bootloader and target images to automatically create
encrypted updates.
* Build time priority checking: enable build time priority checking by default.
This fails the build if the initialization sequence in the final ELF file
does not match the devicetree hierarchy. It can be turned off by disabling
the :kconfig:option:`COFNIG_CHECK_INIT_PRIORITIES` option.
* Added a new ``initlevels`` target for printing the final device and
:c:macro:`SYS_INIT` initialization sequence from the final ELF file.
Drivers and Sensors
*******************
* ADC
* Battery-backed RAM
* CAN
* Clock control
* Added support for Nuvoton NuMaker M46x
* Counter
* Crypto
* DAC
* DFU
* Disk
* Display
* Added support for ST7735S (in ST7735R driver)
* DMA
* EEPROM
* Entropy
* ESPI
* Ethernet
* Added :kconfig:option:`CONFIG_ETH_NATIVE_POSIX_RX_TIMEOUT` to set rx timeout for native posix.
* Flash
* Introduce npcx flash driver that supports two or more spi nor flashes via a
single Flash Interface Unit (FIU) module and Direct Read Access (DRA) mode
for better performance.
* Added support for Nuvoton NuMaker M46x embedded flash
* FPGA
* Fuel Gauge
* GPIO
* Added support for Nuvoton NuMaker M46x
* hwinfo
* I2C
* I2S
* I3C
* IEEE 802.15.4
* A new mandatory method attr_get() was introduced into ieee802154_radio_api.
Drivers need to implement at least
IEEE802154_ATTR_PHY_SUPPORTED_CHANNEL_PAGES and
IEEE802154_ATTR_PHY_SUPPORTED_CHANNEL_RANGES.
* The hardware capabilities IEEE802154_HW_2_4_GHZ and IEEE802154_HW_SUB_GHZ
were removed as they were not aligned with the standard and some already
existing drivers couldn't properly express their channel page and channel
range (notably SUN FSK and HRP UWB drivers). The capabilities were replaced
by the standard conforming new driver attribute
IEEE802154_ATTR_PHY_SUPPORTED_CHANNEL_PAGES that fits all in-tree drivers.
* The method get_subg_channel_count() was removed from ieee802154_radio_api.
This method could not properly express the channel range of existing drivers
(notably SUN FSK drivers that implement channel pages > 0 and may not have
zero-based channel ranges or UWB drivers that could not be represented at
all). The method was replaced by the new driver attribute
IEEE802154_ATTR_PHY_SUPPORTED_CHANNEL_RANGES that fits all in-tree drivers.
* Interrupt Controller
* GIC: Architecture version selection is now based on the device tree
* Input
* New drivers: :dtcompatible:`gpio-qdec`, :dtcompatible:`st,stmpe811`.
* Drivers converted from Kscan to Input: :dtcompatible:`goodix,gt911`
:dtcompatible:`xptek,xpt2046` :dtcompatible:`hynitron,cst816s`
:dtcompatible:`microchip,cap1203`.
* Added a Kconfig option for dumping all events to the console
:kconfig:option:`CONFIG_INPUT_EVENT_DUMP` and new shell commands
:kconfig:option:`CONFIG_INPUT_SHELL`.
* Merged ``zephyr,gpio-keys`` into :dtcompatible:`gpio-keys` and added
``zephyr,code`` codes to all in-tree board ``gpio-keys`` nodes.
* Renamed the callback definition macro from ``INPUT_LISTENER_CB_DEFINE`` to
:c:macro:`INPUT_CALLBACK_DEFINE`.
* IPM
* KSCAN
* LED
* MBOX
* MEMC
* PCIE
* PECI
* Pin control
* Added support for Nuvoton NuMaker M46x
* PWM
* Power domain
* Regulators
* Reset
* Added support for Nuvoton NuMaker M46x
* Retained memory
* Added support for allowing mutex support to be forcibly disabled with
:kconfig:option:`CONFIG_RETAINED_MEM_MUTEX_FORCE_DISABLE`.
* Fixed issue with user mode support not working.
* SDHC
* Sensor
* Reworked the :dtcompatible:`ti,bq274xx` to add ``BQ27427`` support, fixed
units for capacity and power channels.
* Serial
* Added support for Nuvoton NuMaker M46x
* NS16550: Reworked how device initialization macros.
* CONFIG_UART_NS16550_ACCESS_IOPORT and CONFIG_UART_NS16550_SIMULT_ACCESS
are removed. For UART using IO port access, add "io-mapped" property to
device tree node.
* SPI
* Remove npcx spi driver implemented by Flash Interface Unit (FIU) module.
* Timer
* The TI CC13xx/26xx system clock timer compatible was changed from
:dtcompatible:`ti,cc13xx-cc26xx-rtc` to :dtcompatible:`ti,cc13xx-cc26xx-rtc-timer`
and the corresponding Kconfig option from :kconfig:option:`CC13X2_CC26X2_RTC_TIMER`
to :kconfig:option:`CC13XX_CC26XX_RTC_TIMER` for improved consistency and
extensibility. No action is required unless the internal timer was modified.
* USB
* W1
* Watchdog
* WiFi
Networking
**********
* Time and timestamps in the network subsystem, PTP and IEEE 802.15.4
were more precisely specified and all in-tree call sites updated accordingly.
Fields for timed TX and TX/RX timestamps have been consolidated. See
:c:type:`net_time_t`, :c:struct:`net_ptp_time`, :c:struct:`ieee802154_config`,
:c:struct:`ieee802154_radio_api` and :c:struct:`net_pkt` for extensive
documentation. As this is largely an internal API, existing applications will
most probably continue to work unchanged.
* CoAP:
* Use 64 bit timer values for calculating transmission timeouts. This fixes potential problems for
devices that stay on for more than 49 days when the 32 bit uptime counter might roll over and
cause CoAP packets to not timeout at all on this event.
* LwM2M:
* Added support for tickless mode. This removes the 500 ms timeout from the socket loop
so the engine does not constantly wake up the CPU. This can be enabled by
:kconfig:option:`CONFIG_LWM2M_TICKLESS`.
* Added new :c:macro:`LWM2M_RD_CLIENT_EVENT_DEREGISTER` event.
* Wi-Fi
* Added Passive scan support.
* The Wi-Fi scan API updated with Wi-Fi scan parameter to allow scan mode selection.
USB
***
* USB device HID
* Kconfig option USB_HID_PROTOCOL_CODE, deprecated in v2.6, is finally removed.
Devicetree
**********
Libraries / Subsystems
**********************
* Management
* Introduced MCUmgr client support with handlers for img_mgmt and os_mgmt.
* Added response checking to MCUmgr's :c:enumerator:`MGMT_EVT_OP_CMD_RECV`
notification callback to allow applications to reject MCUmgr commands.
* MCUmgr SMP version 2 error translation (to legacy MCUmgr error code) is now
supported in function handlers by setting ``mg_translate_error`` of
:c:struct:`mgmt_group` when registering a group. See
:c:type:`smp_translate_error_fn` for function details.
* Fixed an issue with MCUmgr img_mgmt group whereby the size of the upload in
the initial packet was not checked.
* Fixed an issue with MCUmgr fs_mgmt group whereby some status codes were not
checked properly, this meant that the error returned might not be the
correct error, but would only occur in situations where an error was
already present.
* Fixed an issue whereby the SMP response function did not check to see if
the initial zcbor map was created successfully.
* Fixes an issue with MCUmgr shell_mgmt group whereby the length of a
received command was not properly checked.
* Added optional mutex locking support to MCUmgr img_mgmt group, which can
be enabled with :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_MUTEX`.
* Added MCUmgr settings management group, which allows for manipulation of
zephyr settings from a remote device, see :ref:`mcumgr_smp_group_3` for
details.
* Added :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_ALLOW_CONFIRM_NON_ACTIVE_IMAGE_SECONDARY`
and :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_ALLOW_CONFIRM_NON_ACTIVE_IMAGE_ANY`
that allow to control whether MCUmgr client will be allowed to confirm
non-active images.
* Added :kconfig:option:`CONFIG_MCUMGR_GRP_IMG_ALLOW_ERASE_PENDING` that allows
to erase slots pending for next boot, that are not revert slots.
* Added ``user_data`` as an optional field to :c:struct:`mgmt_handler` when
:kconfig:option:`CONFIG_MCUMGR_MGMT_HANDLER_USER_DATA` is enabled.
* Added optional ``force`` parameter to os mgmt reset command, this can be checked in the
:c:enum:`MGMT_EVT_OP_OS_MGMT_RESET` notification callback whose data structure is
:c:struct:`os_mgmt_reset_data`.
* Added configurable number of SMP encoding levels via
:kconfig:option:`CONFIG_MCUMGR_SMP_CBOR_MIN_ENCODING_LEVELS`, which automatically increments
minimum encoding levels for in-tree groups if :kconfig:option:`CONFIG_ZCBOR_CANONICAL` is
enabled.
* File systems
* Added support for ext2 file system.
* Added support of mounting littlefs on the block device from the shell/fs.
* Added alignment parameter to FS_LITTLEFS_DECLARE_CUSTOM_CONFIG macro, it can speed up read/write
operation for SDMMC devices in case when we align buffers on CONFIG_SDHC_BUFFER_ALIGNMENT,
because we can avoid extra copy of data from card bffer to read/prog buffer.
* Retention
* Added the :ref:`blinfo_api` subsystem.
* Added support for allowing mutex support to be forcibly disabled with
:kconfig:option:`CONFIG_RETENTION_MUTEX_FORCE_DISABLE`.
* Binary descriptors
* Added the :ref:`binary_descriptors` (``bindesc``) subsystem.
HALs
****
* Nuvoton
* Added Nuvoton NuMaker M46x
MCUboot
*******
* Added :kconfig:option:`CONFIG_MCUBOOT_BOOTLOADER_NO_DOWNGRADE`
that allows to inform application that the on-board MCUboot has been configured
with downgrade prevention enabled. This option is automatically selected for
DirectXIP mode and is available for both swap modes.
* Added :kconfig:option:`CONFIG_MCUBOOT_BOOTLOADER_MODE_OVERWRITE_ONLY`
that allows to inform application that the on-board MCUboot will overwrite
the primary slot with secondary slot contents, without saving the original
image in primary slot.
* Fixed issue with serial recovery not showing image details for decrypted images.
* Fixed issue with serial recovery in single slot mode wrongly iterating over 2 image slots.
* Fixed an issue with boot_serial repeats not being processed when output was sent, this would
lead to a divergence of commands whereby later commands being sent would have the previous
command output sent instead.
* Fixed an issue with the boot_serial zcbor setup encoder function wrongly including the buffer
address in the size which caused serial recovery to fail on some platforms.
* Fixed wrongly building in optimize for debug mode by default, this saves a significant amount
of flash space.
* Fixed issue with serial recovery use of MBEDTLS having undefined operations which led to usage
faults when the secondary slot image was encrypted.
* Fixed issue with bootutil asserting on maximum alignment in non-swap modes.
* Added error output when flash device fails to open and asserts are disabled, which will now
panic the bootloader.
* Added currently running slot ID and maximum application size to shared data function
definition.
* Added P384 and SHA384 support to imgtool.
* Added optional serial recovery image state and image set state commands.
* Added ``dumpinfo`` command for signed image parsing in imgtool.
* Added ``getpubhash`` command to dump the sha256 hash of the public key in imgtool.
* Added support for ``getpub`` to print the output to a file in imgtool.
* Added support for dumping the raw versions of the public keys in imgtool.
* Added support for sharing boot information with application via retention subsystem.
* Added support for serial recovery to read and handle encrypted seondary slot partitions.
* Removed ECDSA P224 support.
* Removed custom image list boot serial extension support.
* Reworked boot serial extensions so that they can be used by modules or from user repositories
by switching to iterable sections.
* Reworked image encryption support for Zephyr, static dummy key files are no longer in the code,
a pem file must be supplied to extract the private and public keys. The Kconfig menu has
changed to only show a single option for enabling encryption and selecting the key file.
* Reworked the ECDSA256 TLV curve agnostic and renamed it to ``ECDSA_SIG``.
* CDDL auto-generated function code has been replaced with zcbor function calls, this now allows
the parameters to be supplied in any order.
* The MCUboot version in this release is version ``2.0.0+0-rc1``.
Storage
*******
Trusted Firmware-M
******************
Trusted Firmware-A
******************
* Updated to TF-A 2.9.0.
zcbor
*****
Documentation
*************
Tests and Samples
*****************
* Created common sample for file systems (`fs_sample`). It originates from sample for FAT
(`fat_fs`) and supports both FAT and ext2 file systems.
Known Issues
************