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
ZEP-1405 - function l2cap_br_conn_req in /subsys/bluetooth/host/l2cap_br.c references uninitialized pointer