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.
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.
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
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:
Drivers and Sensors
timer: Add Support for TICKLESS KERNEL in xtensa_sys_timer
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
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.
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
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
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