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