Zephyr Kernel 1.12.0

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

Major enhancements with this release include:

  • Asymmetric multiprocessing (AMP) via integration of OpenAMP

  • Persistent storage support for Bluetooth Low Energy including Mesh

  • 802.1Q - Virtual Local Area Network (VLAN) traffic on an Ethernet network

  • Support multiple concurrent filesystem devices, partitions, and FS types

  • Ethernet network management interface

  • Networking traffic prioritization on a per-connection basis

  • Support for Ethernet statistical counters

  • Support for TAP net device on the native POSIX port

  • Command-line Zephyr meta-tool “west”

  • SPI slave support

  • Runtime non-volatile configuration data storage system (settings)

The following sections provide detailed lists of changes by component.

Kernel

  • Added k_thread_foreach API

  • kernel/sched: Fix preemption logic

  • kernel/sched: Fix SMP scheduling

  • kernel/sched: Don’t preempt cooperative threads

  • kernel: Scheduler rewrite

  • kernel: Fix sloppy wait queue API

  • kernel/mempool: Handle transient failure condition

  • kernel: handle early entropy issues

  • kernel: Earliest-deadline-first scheduling policy

  • kernel: Add “meta IRQ” thread priorities

  • kernel: introduce initial stack randomization

  • k_poll: expose to user mode

  • k_queue: allow user mode access via allocators

  • mempool: add API for malloc semantics

  • userspace: add support for dynamic kernel objects

Architectures

  • arch: arc: refactor the arc stack check support

  • arch: arc: add the support of STACK_SENTINEL

  • arch: arc: optimize the _SysFatalErrorHandler

  • arch: arc: bug fixes in irq_load

  • arch: arc: bug fixes and optimization in exception handling

  • arch: arm: Fix zero interrupt latency priority level

  • arch: arm: refactor default _FaultDump to provide fatal error code

  • arch: arm: Define & implement API for test target (Non-Secure)

  • arch: arm: thread built-in stack guard implementation

  • arch: arm: lpc: Added support for Cortex-M0+ on lpc54114 soc

  • arch: arm: Secure fault handling for Cortex-M23

  • arch: arm: SecureFault Handling for Cortex-M33A

  • arch: arm: Change method of __swap processing

  • arm_mpu: reduce boot MPU regions for various soc

  • arm: userspace: fix initial user sp location

  • arm: userspace: Rework system call arguments

  • arm: syscalls: fix some register issues

  • dts: nios2-qemu: add device tree support

  • dts: nios2f: Add device tree support

  • dts: x86: derive RAM and ROM size from dts instead of Kconfig

  • dts: xtensa: Add device tree support for xtensa

  • newlib: fix heap user mode access for MPU devices

  • nxp_imx/mcimx7_m4: Added support for i.MX7 Cortex M4 core

  • x86: minnowboard: Enable the userspace mode

  • arch: x86: Unwind the stack on fatal errors

  • xtensa: provide XCC compiler support for Xtensa

Boards

  • Added support for the following Arm boards:

    • 96b_argonkey

    • adafruit_feather_m0_basic_proto

    • colibri_imx7d_m4

    • dragino_lsn50

    • lpcxpresso54114_m0

    • nrf51_ble400

    • nrf52_pca20020

    • nucleo_f070rb

    • nucleo_f446re

    • nucleo_l053r8

    • nucleo_l073rzA

    • olimex_stm32_h407

    • stm32f0_disco

  • Added support for the following RISC-V boards:

    • hifive1

  • Added support for the following Xtensa boards:

    • intel_s1000_crb

  • arc: Added device tree support for all ARC SoCs

  • arm: Renamed lpcxpresso54114 to lpcxpresso54114_m4

  • nios2: Added device tree support for qemu_nios2 and altera_max10

  • Continued adding dts support for device drivers (gpio, spi, i2c, sensors, usb)

Drivers and Sensors

  • can: Added CAN driver support for STM32 SoCs

  • display: Added ILI9340 LCD display driver

  • dma: Added dma driver for Nios-II MSGDMA core

  • dma: Introduce Intel CAVS DMA

  • ethernet: Added ethernet driver for native posix arch

  • gpio: Added support for i.MX GPIO

  • gpio: Added driver for SX1509B

  • gpio: Added GPIO for SAM family

  • gpio: Added GPIO driver for stm32l0x

  • i2s: Introduce CAVS I2S

  • ieee802154: Added OpenThread modifications to KW41Z driver

  • interrupts: introduce CAVS interrupt logic

  • interrupts: Introduce Designware interrupt controller

  • ipm: Added mcux ipm driver for LPC SoCs

  • led: Added new public API and driver support for TI LP3943

  • pinmux: Added pinmux driver for stm32l0x

  • rtc: Added mcux RTC driver for Kinetis SoCs

  • sensor: Added sensorhub support to lsm6dsl driver

  • sensor: Added trigger support to lsm6dsl

  • serial: Added support for i.MX UART interface

  • spi: Added shims for nrfx SPIS and SPIM drivers

  • spi: Updated mcux shim driver to new SPI API

  • spi: Updated sensor and radio drivers to new SPI API

  • usb: Added usb device driver for Kinetis USBFSOTG controller

  • usb: Added usb support for stml072/73, stm32f070/72

  • usb: Enable usb2.0 on intel_s1000

  • usb: Added nRF52840 USB Device Controller Driver

  • watchdog: Added mcux watchdog driver for Kinetis SoCs

  • watchdog: Added nrfx watchdog driver for NRF SoCs

  • wifi: Added winc1500 WiFi driver

Networking

  • Minimal server side websocket support.

  • Add network support to syslog.

  • Reducing net_pkt RAM usage.

  • TCP code refactoring. TCP code is now in one place in tcp.c

  • Support MSG_DONTWAIT and MSG_PEEK in recvfrom() socket call.

  • Support MSG_DONTWAIT in sendto() socket call.

  • Add support for freeaddrinfo() API.

  • Allow empty service in getaddrinfo() API.

  • Add PRIORITY support to net_context. This is working same way as SO_PRIORITY in BSD sockets API.

  • Add network traffic classification support to Rx and Tx paths. This allows prioritization of incoming or outgoing network traffic. Both Rx and Tx can have max 8 network queues.

  • Add network interface up/down command to net-shell.

  • Create ethernet driver for native_posix board. The driver is enabled automatically if networking is active when compiling for native_posix board.

  • Support network packet checksum calculation offloading. This is available for ethernet based boards.

  • Add support for ethernet virtual LANs (VLAN). Following ethernet drivers support VLANs: frdm_k64f, sam_e70_explained, native_posix and qemu.

  • Allow network statistics collection / network interface.

  • Add network management support to ethernet sub-system.

  • Add network capabilities support to ethernet network drivers. This is used for management purposes.

  • Allow collection of ethernet statistics. Currently only native_posix ethernet driver supports this.

  • Add OpenThread support for KW41Z driver.

  • Add initial WiFi management API definitions.

  • Add a shell module for controlling WiFi devices.

  • Add dedicated net mgmt hooks for WiFi offload devices.

  • Use proper IPv4 source address when sending IPv4 packets.

  • Add support for energy detection scan on IEEE 802.15.4 driver API.

  • Add support for filtering source short IEEE 802.15.4 addresses.

  • Add RPL border router sample application.

  • LWM2M code refactoring.

  • LWM2M OPTIONAL resource fixes.

  • LWM2M source port fixes.

  • LWM2M resource usage enhancements.

  • Fixing network management event ordering.

  • Fix ENC28J70 ethernet driver.

  • CoAP sample application fixes.

  • Network timeout fixes.

  • ICMPv6 error check fixes.

  • Net-app API port number fixes.

  • WPAN USB driver and sample application fixes.

  • BSD socket sample application fixes.

  • Fix IPv4 echo-request (ping) in net-shell when having multiple network interfaces.

  • Fixing IPv6 compile error in certain configuration.

Bluetooth

  • settings-based persistent storage functionality for BLE (including CCC) and Mesh

  • Mesh-specific optimizations to avoid flash wear

  • Added a new API to set the identity address from the application

  • Old bt_storage API removed from the codebase

  • Rewrote the HCI SPI driver to comply with the new API

  • Added BLE support for the standard entropy driver via an ISR-friendly call

  • Multiple BLE Mesh bugfixes and improvements

  • Added option to use the identity address for advertising even when using privacy

  • Added support for L2CAP dynamically allocated PSM values

  • GATT CCC handling fixes

  • GATT attribute declaration macros reworked for clarity

  • Fixed handlng of connection cancellation in the controller

  • Fixed a potential assertion failure in the controller related to white list handling

Build and Infrastructure

  • build: use git version and hash for boot banner

  • kconfig: Drop support for CONFIG_TOOLCHAIN_VARIANT

  • kconfig: Remove the C Kconfig implementation

  • scripts: kconfig: Add a Python menuconfig implementation

  • scripts: west: introduce common runner configuration

  • scripts: debug, debugserver and flash scripts for intel_s1000

  • xtensa: provide XCC compiler support for Xtensa

Libraries / Subsystems

  • subsys/disk: Added support for multiple disk interfaces

  • subsys/fs: Added support for multiple instances of filesystem

  • subsys/fs: Added Virtual File system Switch (VFS) support

  • lib/posix: Added POSIX Mutex support

  • lib/posix: Added POSIX semaphore support

  • crypto: Updated mbedTLS to 2.9.0

  • Imported libmetal and OpenAMP for IPC

HALs

  • altera: Add modular Scatter-Gather DMA HAL driver

  • atmel: Added winc1500 driver from Atmel

  • cmsis: Update ARM CMSIS headers to version 5.3.0

  • nordic: Import SVD files for nRF5 SoCs

  • nordic: Update nrfx to version 1.0.0

  • nxp: imported i.MX7 FreeRTOS HAL

  • nxp: Added dual core startup code for lpc54114 based on mcux 2.3.0

  • stm32l0x: Add HAL for the STM32L0x series

Documentation

  • Added description for kernel test cases through extensive doxygen comments

  • Discovered some API docs were missing, and fixed

  • Documentation added covering system calls and userspace, kernel, and threading APIs, POSIX compatibility, VLANs, network traffic classification, and the sanitycheck script used by CI.

  • Documented writing guidelines and local doc generation process

  • Improved Sphinx search results output (removed markup)

  • Improved configuration options auto-generated documentation

  • Significantly reduced local doc regeneration time

Tests and Samples

  • Added test for POSIX mutex

  • Added Apple iBeacon sample application

  • Enhanced threads test suite

  • Added tests for memory domain