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 Samples and Demos.