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:


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


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


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


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


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


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


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


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


  • Deprecated microkernel and nanokernel APIs.
  • Removed dynamic IRQs and exceptions.
  • Removed Tasks IRQs.

Known Issues

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