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.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