Zephyr Kernel 1.6.0

We are pleased to announce the release of Zephyr kernel version 1.6.0. This release introduces the unified Kernel replacing the separate nano- and micro-kernels and simplifying the overall Zephyr architecture and programming interfaces. Support for the ARM Cortex-M0/M0+ family was added and board support for Cortex-M was expanded. Additionally, this release adds many improvements for documentation, build infrastructure, and testing.

Major enhancements included with the release:

  • Introduced the Unified Kernel; the nano and micro kernel were removed.

  • The legacy API is still supported but deprecated.

  • Legacy tests and samples were moved to tests/legacy and samples/legacy.

  • Unified kernel documentation was added and legacy nanokernel/microkernel documentation was removed.

  • Added support for several ARM Cortex-M boards

  • Added support for USB mass storage and access to the filesystem.

  • Added native Bluetooth Controller support. Currently nRF51 & nRF52 are supported.

A detailed list of changes since v1.5.0 by component follows:

Kernel

  • Introduced the unified kernel.

  • Removed deprecated Tasks IRQs.

  • Removed deprecated dynamic interrupt API.

  • Added DLIST to operate in all elements of a doubly-linked list.

  • SLIST: Added sys_slist_get() to fetch and remove the head, also Added append_list and merge_slist.

  • Added nano_work_pending to check if it is pending execution.

  • Unified: Added support for k_malloc and k_free.

  • Renamed kernel objects event to alert and memory map to memory slab.

  • Changed memory pool, memory maps, message queues and event handling APIs.

Architectures

  • ARC: Removed CONFIG_TIMER0_CLOCK_FREQ.

  • ARC: Unified linker scripts.

  • ARC: Removed dynamic interrupts.

  • ARM: Added choice to use floating point ABI.

  • ARM: Added NXP Kinetis kconfig options to configure clocks.

  • ARM: Removed dynamic interrupts and exceptions.

  • ARM: Atmel: Added constants and structures for watchdog registers.

  • ARM: Added support for ARM Cortex-M0/M0+.

  • x86: Removed dynamic interrupts and exceptions.

  • x86: Declared internal API for interrupt controllers.

  • x86: Changed IRQ controller to return -1 if cannot determine source vector.

  • x86: Grouped Quark SoC’s under intel_quark family.

  • x86: Optimized and simplified IRQ and exception stubs.

Boards

  • Renamed board Quark SE devboard to Quark SE C1000 devboard.

  • Renamed board Quark SE SSS devboard to Quark SE C1000 SS devboard.

  • Quark SE C1000: Disabled IPM and enabled UART0 on the Sensor Subsystem.

  • Removed basic_cortex_m3 and basic_minuteia boards.

  • Arduino 101: Removed backup/restore scripts. To restore original bootloader use flashpack utility instead.

  • Renamed nRF52 Nitrogen to 96Boards Nitrogen.

  • Added ARM LTD Beetle SoC and V2M Beetle board.

  • Added Texas Instruments CC3200 LaunchXL support.

  • Added support for Nordic Semiconductor nRF51822.

  • Added support for NXP Hexiwear board.

Drivers and Sensors

  • SPI: Fixed typos in SPI port numbers.

  • Pinmux: Removed Quark dev unused file.

  • I2C: Added KSDK shim driver.

  • Ethernet: Added KSDK shim driver.

  • Flash: Added KSDK shim driver

  • I2C: Changed config parameters to SoC specific.

  • QMSI: Implemented suspend and resume functions QMSI shim drivers

  • Added HP206C sensor.

  • Changed config_info pointers to const.

  • Added support for SoCWatch driver.

  • Added FXOS8700 accelerometer / magnetometer sensor driver.

Networking

  • Minor fixes to uIP networking stack (This will be deprecated in 1.7)

Bluetooth

  • Added native Bluetooth Controller support. Currently nRF51 & nRF52 are supported.

  • New location for Controller & Host implementations: subsys/bluetooth/

  • Added raw HCI API to enable physical HCI transport for a Controller-only build.

  • Added sample raw HCI apps for USB and UART.

  • Added cross-transport pairing support for the Security Manager Protocol.

  • Added RFCOMM support (for Bluetooth Classic)

  • Added basic persistent storage support (filesystem-backed)

  • Renamed bt_driver API to bt_hci_driver, in anticipation of Bluetooth radio drivers.

Build Infrastructure

  • Makefile: Changed outdir into board-specific directory to avoid build collisions.

  • Makefile: Changed to use HOST_OS environment variable.

  • Makefile: Added support for third party build systems.

  • Sanity: Added support to filter using environment variables.

  • Sanity: Added support for multiple toolchains.

  • Sanity: Added ISSM and ARM GCC embedded toolchains to the supported toolchains.

  • Sanity: Added extra arguments to be passed to the build.

  • Sanity: Removed linker VMA/LMA offset check.

  • Sysgen: Added –kernel_type argument.

  • Modified build infrastructure to support unified kernel.

  • SDK: Zephyr: Added check for minimum required version.

  • Imported get_maintainer.pl from Linux kernel.

Libraries

  • libc: Added subset of standard types in inttypes.h.

  • libc: Added support for ‘z’ length specifier.

  • libc: Removed stddef.h which is provided by the compiler.

  • libc: printf: Improved code for printing.

  • printk: Added support for modifiers.

  • Added CoAP implementation for Zephyr.

  • File system: Added API to grow or shrink a file.

  • File system: Added API to get volume statistics.

  • File system: Added API to flush cache of an opened file.

HALs

  • QMSI: Updated to version 1.3.1.

  • HAL: Imported CC3200 SDK.

  • Imported Nordic MDK nRF51 files.

  • Imported Kinetis SDK Ethernet phy driver.

  • Imported SDK RNGA driver.

Documentation

  • Drivers: Improved Zephyr Driver model.

  • Updated device power management API.

  • Unified Kernel primer.

  • Moved supported board information to the wiki.zephyrproject.org site.

  • Revised documentation for Kernel Event logger and Timing.

Test and Samples

  • Fixed incorrect printk usage.

  • Removed test for dynamic exceptions.

  • Added USB sample.

  • Added tests and samples for CoAP client and server.

  • Added philosophers unified sample.

  • Removed printf/printk wrappers.

  • Added Unified kernel API samples.

  • Imported TinyCrypt test cases for CTR, ECC DSA and ECC DH algorithm.

Deprecations

  • Deprecated microkernel and nanokernel APIs.

  • Removed dynamic IRQs and exceptions.

  • Removed Tasks IRQs.

Known Issues

  • JIRA #ZEP-1405 - function l2cap_br_conn_req in /subsys/bluetooth/host/l2cap_br.c references uninitialized pointer