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