Zephyr Kernel 1.7.0

We are pleased to announce the release of Zephyr kernel version 1.7.0. This release continues refinement of the unified kernel introduced with the 1.6.0 kernel release, simplifying the overall Zephyr architecture and programming interfaces. This is the last release that will support the deprecated legacy nano- and micro-kernel APIs found in the 1.5.0 release and earlier.

This release introduces a new native IP stack, replacing the legacy uIP stack, maintaining the legacy functionality, adding additional capabilities, and allowing future improvements.

We have introduced support for the RISC V and Xtensa architectures and now support 6 architectures in total.

Device tree support for ARM based boards added. The initial device tree support includes flash/sram base address and UART devices. Board support includes NXP Kinetis based SoCs, ARM Beetle, TI CC3200 LaunchXL, and STML32L476 based SoCs. Plan is to add support for other architectures and expand device support in upcoming Zephyr releases.

The following sections provide a detailed list of changes, by component, since kernel version 1.6.0.

Kernel

  • Introduction of k_poll API: k_poll() is similar to the POSIX poll() API in spirit in that it allows a single thread to monitor multiple events without actively polling them, but rather pending for one or more to become ready.

  • Optimized memory use of some thread fields

  • Remove usage of micro/nano kernel terminology from kernel code and introduced a legacy option to enable/disable legacy APIs. (using legacy.h)

Architectures

  • ARM: Added support for device tree

  • ARM: Fixed exception priority access on Cortex M0(+)

  • ARM: Refactored to use CMSIS

Boards

  • Added ARM MPS2_AN385 board

  • Added Atmel SAM E70 Xplained board

  • Added Nordic pca10056 PDK board

  • Added NXP FRDM-KW41Z board

  • Added ST Nucleo-F334R8, Nucleo-L476G, STM3210C-EVAL, and STM32373C-EVAL boards

  • Added Panther and tinyTILE boards, based on Quark SE C1000 and Intel Curie

  • Added support for Zedboard Pulpino, a RISC V based board

  • Added Qemu target for RISC V and a simulator target for the Xtensa architecture.

Drivers and Sensors

  • Added Atmel SAM pmc, gpio, uart, and ethernet drivers

  • Added STM32F3x clock, flash, gpio, pinmux drivers

  • Added stm32cube pwm and clock drivers

  • Added cc3200 gpio driver

  • Added mcr20a ieee802154 driver

  • Added mcux pinmux, gpio, uart, and spi drivers

  • Added Beetle clock control and watchdog drivers

Networking

This version removes the legacy uIP stack and introduces a new native IP stack. Because of this there is lot of changes in the code base. The native IP stack will support the same functionality as the legacy IP stack found in 1.6, and add new networking features which are described below.

  • IP stack code is moved to subsys/net/ip directory.

  • IP stack supports both IPv6 and IPv4, and they can be enabled simultaneously.

  • Multiple network technologies like Bluetooth IPSP and IEEE 802.15.4 can be enabled simultaneously. No routing functionality is provided by IP stack between enabled network technologies, applications need to decide where to send the network packets.

  • Network technologies are abstracted in IP layer 2 (L2) and presented to rest of the system as network interfaces. There exists L2 driver for Ethernet, Bluetooth and IEEE 802.15.4.

  • Created Bluetooth Internet Protocol Support Profile (IPSP) support. It will provide IPv6 connection over Bluetooth connection oriented channel (L2CAP).

  • Created DHCPv4 support.

  • Created CoAP implementation called ZoAP which replaces uIP based one.

  • Updated 6Lo implementation to support both Bluetooth and IEEE 802.15.4

  • Created application API (net_context) for creating connections and transferring data to external systems.

  • Added sample application (wpanusb) for exporting IEEE 802.15.4 radio over USB to external operating systems like Linux.

  • Added DNS client library.

  • Updated TCP implementation.

  • Created MQTT publisher support.

  • Created network test generator (zperf).

  • Created telnet console support.

  • Created IRC client sample application.

  • Created HTTP server and client sample applications.

  • Created net-shell module for interacting with network sub-system.

  • Created ieee15_4 shell module for dedicated interaction with IEEE 802.15.4 Soft MAC.

  • Created network management API for generic network settings request as well as a network event notification system (sender/listener).

  • Redesigned buffer & pool allocation API.

Bluetooth

  • Redesigned buffer pools for smaller memory consumption

  • Redesigned thread model for smaller memory consumption

  • Utilized new k_poll API to consolidate all TX threads into a single one

  • Added more SDP functionality

  • Improved RFCOMM support

  • Reduced latencies in the Controller

  • Added SPI HCI driver

Libraries

  • Updated mbedTLS library

  • Updated TinyCrypt to version 0.2.5

HALs

  • Updated FAT FS to rev 0.12b

  • Updated Nordic MDK header files

  • Updated QMSI to 1.4 RC3

  • Imported Atmel SDK (ASF) for SAM E70 and SAM3X

  • Imported Nordic SDK HAL and 802.15.4 radio driver

  • Renamed NXP KSDK to MCUX

  • Imported NXP MCUX for KW41Z

  • Imported Segger J-Link RTT library

  • Imported stm32cube for F4 and L4

Documentation

  • General improvements and additions to kernel component docs

  • Moved supported board information back to the website site.

  • New website documentation theme to go with the new zephyrproject.org site.

  • New local-content generation theme (read-the-docs)

  • General spelling checks and organizational improvements.

  • Site-wide glossary added.

  • Porting guides added.

  • Sample README files converted to documents included in the website.

  • Improved consistency of Supported Boards and Shields and Samples and Demos.