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

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

Major enhancements with this release include:

  • Extensible and Pluggable Tracing Support

  • Compartmentalized application memory organization

  • Logging System Overhaul

  • Introduce system calls for BSD socket APIs

  • Support for IEEE 802.1AS-2011 generalized Precision Time Protocol (gPTP)

  • Link Layer Discovery Protocol (LLDP) TX support

  • Support for TLS and DTLS using BSD socket API

  • Support for Link Layer Multicast Name Resolution (LLMNR)

  • Introduced reworked ADC API and updated Nordic, NXP, Atmel, and Synopsys DesignWare drivers

  • Support OS driven Power Management framework

  • Basic support for Arm TrustZone in Armv8-M

The following sections provide detailed lists of changes by component.

Kernel

  • Remove kernel event manager, replaced by generic tracing interface

  • Enhanced Timeout and Tick handling in kernel

  • Compartmentalized application memory organization

  • Fix errno access for user mode

Architectures

  • arch: arc: improve the reset code

  • arch: arc: use a separate stack for exception handling

  • arch: arc: refactor the arc stack check support

  • arch: arm: stm32: enable instruction and data caches on STM32F7

  • arch: arm: implement ARMv8-M MPU driver

  • irq: Fix irq_lock api usage

  • arch: arm: macro API for defining non-secure entry functions

  • arch: arm: allow processor to ignore/recover from faults

  • arm: nxp: mpu: Consolidate k64 mpu regions

  • arm: Print NXP MPU error information in BusFault dump

  • arch: ARM: Change the march used by cortex-m0 and cortex-m0plus

  • arch: arm: integrate ARM CMSE with CMake

  • arch: arm: basic Arm TrustZone-M functionality for Cortex-M23 and Cortex-M33

  • arch: arm: built-in stack protection using Armv8-M SPLIM registers

  • arch: arm: API for using TT intrinsics in Secure/Non-Secure Armv8-M firmware

  • arch: arm: clean up MPU code for ARM and NXP

  • arch: arm: Set Zero Latency IRQ to priority level zero

  • arch/arm: Fix locking in __pendsv

Boards & SoC Support

  • x86: add SoC configuration for Apollo Lake

  • x86: add support for UP Squared (Pentium/Celeron)

  • arc: Support Synopsys ARC nSim instruction set simulator

  • riscv32: riscv-privilege: Microsemi Mi-V support

  • Added support for the following Arm boards:

    • efr32_slwstk6061a

    • nrf52_adafruit_feather

    • nrf52810_pca10040

    • nrf52840_pca10059

    • nucleo_f207zg

    • reel_board

    • stm32f723e_disco

    • stm32f746g_disco

    • stm32f769i_disco

    • udoo_neo_full_m4

    • warp7_m4

Drivers and Sensors

  • adc: Introduced reworked API and updated Nordic, NXP, Atmel, and Synopsys DesignWare drivers

  • audio: Added TLV320DAC310x audio DAC driver

  • can: Added can support for STM32L432

  • clock_control: Added STM32F7 family clock control

  • entropy: Added support for STM32F7

  • eth: Enabled gPTP support in mcux and gmac drivers

  • eth: Added promiscuous mode support to native_posix

  • eth: mcux: Added an option for randomized, but stable MAC address

  • gpio: Added STM32F7 GPIO support

  • interrupt_controller: Added STM32F7 EXTI support

  • i2c: Added support for STM32F7

  • i2c: Added i.MX shim driver

  • i2c: Implemented slave support for stm32_v2

  • i2c: Added EEPROM I2C slave driver

  • i2c: Added shims for nrfx TWI and TWIM drivers

  • i2s: Exposed i2s APIs to user mode

  • led: Added TI LP5562 and NXP PCA9633 drivers

  • modem: Added Wistron WNC-M14A2A LTE-M Modem driver

  • modem: Added modem receiver (tty) driver

  • pinmux: Added STM32F7 pinmux support

  • pwm: Added i.MX shim driver

  • pwm: Added shim for nrfx PWM HW driver

  • serial: Added power management to nRF UART driver

  • serial: Added STM32F7 UART support

  • serial: Allow to pass arbitrary user data to irq callback

  • serial: Added UARTE driver for the nRFx family

  • sensor: Added adxl372, mma8451q, adt7420 drivers

  • sensor: lis2dh: Fix I2C burst read/write operations

  • rtc: Added support for STM32

  • usb: Added support for OTG FS on STM32F2 and STM32F7

  • usb: Added High Speed support for DesignWare USB

  • wifi: Added SimpleLink WiFi Offload Driver (wifi_mgmt only)

Networking

  • Introduce system calls for BSD socket APIs.

  • Add IPv4 autoconf support. This adds support for IPv4 link-local addresses (169.254.*.*)

  • Add TLS and DTLS support to BSD socket API. They are configured via setsockopt() API.

  • Add support for IEEE 802.1AS-2011 generalized Precision Time Protocol (gPTP) for ethernet networks. A sample application is created to show how to interact with gPTP code.

  • Add support for PTP clock driver. This driver will be used by gPTP supported ethernet drivers.

  • Add Link Layer Discovery Protocol (LLDP) TX support.

  • Add support for managing Qav credit-based shaper algorithm.

  • Add generic TX timestamping support.

  • Add carrier detection support to ethernet L2 driver.

  • Add support for having vendor specific ethernet statistics.

  • Add getter support to ethernet management interface.

  • Add promiscuous mode support to network interface. A sample application is created that shows how to use the user API for getting all network packets. The native_posix ethernet driver supports promiscuous mode at this point.

  • Add support for Link Layer Multicast Name Resolution (LLMNR). LLMNR is used in Microsoft Windows networks for local name resolution.

  • Add API to net_pkt to prefill a network packet to a pre-defined value.

  • Add IEEE 802.1Qav support to Atmel GMAC ethernet driver.

  • Add hardware TX timestamping support to Atmel GMAC ethernet driver.

  • Add multiple hardware queue support to Atmel GMAC ethernet driver.

  • Add gPTP support to Atmel GMAC ethernet driver.

  • Add support for TI SimpleLink WiFI offload driver.

  • Add support for randomized but stable MAC address in NXP MCUX ethernet driver.

  • Add extra prints to net-shell for ethernet based network interfaces. The supported features and priority queue information is printed.

  • Add and fix string to integer conversions in net-shell.

  • Allow user to configure MAC address filters into ethernet devices.

  • Catch network interface ON and OFF events in DHCPv4 and renew address lease if we re-connected.

  • Remove forever timeouts when waiting a new network buffer to be available.

  • Relay network interface up/down command from net-shell to Linux host for native_posix ethernet driver.

  • No need to join IPv6 solicited node multicast group for Bluetooth IPSP supported nodes.

  • Allow external program to be started for native_posix ethernet driver. This allows for example startup of wireshark when zeth is created.

  • Network packet priority and traffic class fixes and clarifications.

  • Lower memory consumption in net by using packed enums when applicable.

  • Correctly notify net_app server when TCP is disconnected.

  • Register OpenThread used unicast and multicast IPv6 addresses for network interface.

  • Enable Fast Connect policy for TI SimpleLink ethernet driver.

  • Fix ieee802154 simulator driver channel/tx power settings.

  • Handle large IPv6 packets properly.

  • Enable gPTP support in native_posix, NXP mcux and Atmel GMAC ethernet drivers. The native_posix ethernet driver gPTP support is only for testing purposes.

  • Network configuration (net_config) library split from the net_app library. (This change requires updating application configs to refer to corresponding NET_CONFIG_* options instead of NET_APP_*).

  • Moving all layer 2 (L2) network code into subsys/net/l2 directory.

  • Add MSS option on sending TCP SYN request.

  • Fix TCP by processing zero window probes when our receive window is 0.

  • IPv4, IPv6, ICMPv6, ARP code refactoring and cleanup.

  • IPv6 address lifetime fixes.

  • IPv6 fragmentation fixes.

  • ARP fixes when using VLAN.

  • Timeout too long lasting ARP requests.

  • DHCPv4 fixes and timeout management refactoring.

  • TCP retry, RST packet handling, and memory leak fixes.

  • IP address print function enhancements.

  • HTTP fix when sending the last chunk.

  • MQTT fixes.

  • LWM2M cleanups and fixes.

  • Fix cache support in Atmel GMAC ethernet driver.

  • Fix NXP MCUX ethernet driver to detect carrier lost event.

  • Port native API echo-server/echo-client samples to BSD sockets API, with TLS/DTLS support.

  • Handle out-of-buf situations gracefully in echo-client and echo-server sample applications.

Bluetooth

  • New user-friendly service population using a refreshed BT_GATT_CHARACTERISTIC macro.

  • Added support for Bluetooth hardware in the native_posix board, allowing developers to use the native POSIX architecture with Bluetooth.

  • Added a new helper API to parse advertising data.

  • Added a new flag, BT_LE_ADV_OPT_USE_NAME, to include the Bluetooth Device Name in the advertising data.

  • Added support for fixed passkeys to use in bonding procedures.

  • Added a new Bluetooth shell command to send arbitrary HCI commands to the controller.

  • Added a new feature to support multiple local identities using a single controller.

  • Added a new, board-specific mesh sample for the nRF52x series that implements the following models:

    • Generic OnOff client and server.

    • Generic Level client and server.

    • Generic Power OnOff client and server.

    • Light Lightness client and server.

    • Light CTL client and server.

    • Vendor Model.

  • Controller: Added a TX Power Kconfig option.

  • Controller: Use the newly available nrfx utility functions to access the nRF5x hardware.

  • Controller: Multiple bug fixes.

  • Controller: Added support for the nRF52810 SoC from Nordic Semiconductor.

  • New HCI driver quirks API to support controllers that need uncommon reset sequences.

  • Host: Multiple bug fixes for GATT and SMP.

  • Mesh: Multiple bug fixes.

Build and Infrastructure

  • Kconfig: Remove redundant ‘default n’ properties

  • cmake: replace PROJECT_SOURCE_DIR with ZEPHYR_BASE

  • Kconfig: Switch to improved globbing statements

Libraries / Subsystems

  • Tracing: Basic support SEGGER systemview

  • Logging: Introduce a new logging subsystem

  • fs/nvs: Improved nvs for larger blocksizes

  • subsys: console: Refactor code to allow per-UART “tty” wrapper

HALs

  • ext/hal: stm32cube: STM32L4: Enable legacy CAN API

  • ext: Import Atmel SAMD20 header files from ASF library

  • ext: gecko: Add Silabs Gecko SDK for EFR32FG1P SoCs

  • drivers: add i.MX I2C driver shim

  • hal: stm32f2x: Add HAL for the STM32F2x series

  • ext: stm32cube: update stm32l4xx cube version

  • ext: stm32cube: update stm32f7xx cube version

  • ext: stm32cube: update stm32f4xx cube version

  • ext: stm32cube: update stm32f3xx cube version

  • ext: stm32cube: update stm32f1xx cube version

  • ext: hal: nordic: Update nrfx to version 1.1.0

  • net: drivers: wifi: SimpleLink WiFi Offload Driver (wifi_mgmt only)

  • ext/hal/nxp/imx: Import the nxp imx6 freertos bsp

Documentation

  • Simplified and more maintainable theme applied to documentation. Latest and previous four releases regenerated and published to https://docs.zephyrproject.org

  • Updated contributing guidelines

  • General organization cleanup and spell check on docs including content generated from Kconfig files and doxygen API comments.

  • General improvements to documentation following code, implementation changes, and in support of new features, boards, and samples.

  • Documentation generation now supported on Windows host systems (previously only linux doc generation was supported).

  • PDF version of documentation can now be created

Tests and Samples

  • Enhanced benchmarks to support userspace

  • Improve test coverage for the kernel