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