This is the documentation for the latest (main) development branch of Zephyr. If you are looking for the documentation of previous releases, use the drop-down menu on the left and select the desired version.

Zephyr Kernel 1.10.0

We are pleased to announce the release of Zephyr kernel version 1.10.0.

Major enhancements with this release include:

  • Initial alpha-quality thread-level memory protection on x86, userspace and memory domains

  • Major overhaul to the build system and a switch from Kbuild to CMake.

  • Newtron Flash Filesystem (NFFS) Support

  • Increased testsuite coverage and migrated majority of testcases to use ztest

  • Integration with MCUBOOT Bootloader

  • Additional SoC, platform and driver support for many of the already supported platforms.

The following sections provide detailed lists of changes by component.

Kernel

  • Remove deprecated k_mem_pool_defrag code

  • Initial alpha-quality thread-level memory protection on x86, userspace and memory domains:

    • Same kernel & driver APIs for kernel and user mode threads

    • System calls for privilege elevation

    • Stack overflow protection

    • Kernel object and device driver permission tracking

    • Simple app vs. kernel memory separation

    • Memory domain APIs for fine-tuning memory region permissions

    • Stack memory protection from other threads

  • Add the following application-facing memory domain APIs:

    • k_mem_domain_init() - to initialize a memory domain

    • k_mem_domain_destroy() - to destroy a memory domain

    • k_mem_domain_add_partition() - to add a partition into a domain

    • k_mem_domain_remove_partition() - to remove a partition from a domain

    • k_mem_domain_add_thread() - to add a thread into a domain

    • k_mem_domain_remove_thread() - to remove a thread from a domain

  • add k_calloc() which uses kernel heap to implement traditional calloc() semantics.

  • Introduce object validation mechanism: All system calls made from userspace, which involve pointers to kernel objects (including device drivers), will need to have those pointers validated; userspace must never be able to crash the kernel by passing it garbage.

Architectures

  • nrf52: Add support for LOW_POWER state and SYSTEM_OFF

  • Architecture specific memory domain APIs added

  • Tickless Kernel Implementation for Xtensa

  • Added support for the following ARM SoCs:

    • NXP i.MX RT1052

    • Silabs EFM32WG

    • STM F0

    • TI MSP432P4xx

Boards

  • Jailhouse port: The port will enable Zephyr to run as a guest OS on x86-64 systems. It comes with a test on QEMU to validate that, thus this new board introduction.

  • Power Management for nrf52 series SOC

  • Added support for the following ARM boards:

    • 96b_neonkey

    • efm32wg_stk3800

    • mimxrt1050_evk

    • msp_exp432p401r_launchxl

    • nucleo_f030r8

    • nucleo_f091rc

    • stm32f411e_disco

    • stm32f412g_disco

    • stm32l476g_disco

    • usb_kw24d512

Drivers and Sensors

  • timer: Add Support for TICKLESS KERNEL in xtensa_sys_timer

  • Rename random to entropy

  • Add Atmel SAM I2S (SSC) driver

  • Add Atmel SAM DMA (XDMAC) driver

  • Add plantower PMS7003 Driver

  • Add Altera shim driver for JTAG UART soft IP

  • Add Altera shim driver for timer soft IP

  • Introduce mcux ccm driver

  • Introduce mcux igpio shim driver

Networking

  • HTTP API changed to use net-app API. Old HTTP API is deprecated.

  • Loopback network interface support added. This is used in testing only.

  • LWM2M multi-fragment network packet support added.

  • New CoAP library implementation, supporting longer network packets.

  • Deprecated ZoAP library.

  • mDNS (multicast DNS) support added.

  • SNTP (Simple Network Time Protocol) client library added.

  • Various fixes for: TCP, RPL, ARP, DNS, LWM2M, Ethernet, net-app API, Network shell, and BSD socket API

  • Network management API fixes.

  • Networking sample application fixes.

  • 6lo IPv6 header compression fixes.

  • IEEE 802.15.4 generic fixes.

  • IEEE 802.15.4 mcr20a driver fixes.

  • IEEE 802.15.4 kw41z driver fixes.

  • IEEE 802.15.4 nrf5 driver fixes.

Bluetooth

  • Multiple qualification-related fixes for Bluetooth Mesh

  • Support for Bluetooth Mesh Friend Node role

  • Support for Bluetooth Mesh Foundation Client Models

  • New Bluetooth Mesh shell module and test application

  • Support for PA/LNA amplifiers in the BLE Controller

  • Support for additional VS commands in the BLE Controller

  • Multiple stability fixes for the BLE Controller

Build and Infrastructure

  • The Zephyr project has migrated to CMake, an important step in a larger effort to make Zephyr easier to use for application developers working on different platforms with different development environment needs. This change retains Kconfig as-is, and replaces all Makefiles with corresponding CMakeLists.txt. The DSL-like Make language that KBuild offers is replaced by a set of CMake extensions that provide either simple one-to-one translations of KBuild features or introduce new concepts that replace KBuild concepts. Please re-read the Getting Started guide (https://docs.zephyrproject.org/1.10.0/getting_started/getting_started.html) with updated instructions for setting up and developing on your host-OS. You will need to port your own out-of-tree scripts and Makefiles to CMake.

Libraries / Subsystems

  • The implementation for sys_rand32_get() function has been moved to a new “random” subsystem. There are new implementations for this function, one based in the Xoroshift128+ PRNG (using a hardware number generator to seed), and another that obtains random numbers directly from a hardware number generator driver. Hardware number generator drivers have been moved to a “drivers/entropy” directory; these drivers only expose the interface provided by include/entropy.h.

  • TinyCrypt updated to version 0.2.8

HALs

  • Add Altera HAL for support NIOS-II boards

  • Add mcux 2.3.0 for mimxrt1051 and mimxrt1052

  • stm32cube: HAL/LL static library for stm32f0xx v.1.9.

  • Add support for STM32 family USB driver

  • Add Silabs Gecko SDK for EFM32WG SoCs

  • Simplelink: Update cc32xx SDK to version 1.50.00.06

Documentation

  • Missing API documentation caused by doxygen subgroups and missing Sphinx directives now included.

  • Note added to all released doc pages mentioning more current content could be available from the master branch version of the documentation.

  • Documentation updated to use CMake (vs. Make) in all examples, and using a new Sphinx extension to keep examples consistent.

  • Getting Started Guide material updated to include CMake dependencies and build instructions required for version 1.10.

  • Instead of hiding all expected warnings from the document build process (there are some known doxygen/sphinx issues), the build now outputs all warnings, and then reports if any new/unexpected warnings or errors were detected.

  • Obsolete V1 to V2 porting material removed.

  • Continued updates to documentation for new board support, new samples, and new features.

  • Integration of documentation with new zephyrproject.org website.

  • Documentation moved to docs.zephyrproject.org site (with redirection from zephyrproject.org/doc)

Tests and Samples

  • Benchmarking: cleanup of the benchmarking code

  • Add userspace protection tests

  • Move all tests to ztest and cleanup coding style and formatting