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.