Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 28 million developers.Sign up
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,
Major enhancements included with the release:
- Introduced the Unified Kernel; the nano and micro kernel
- The legacy API is still supported but deprecated.
- Legacy tests and samples were moved to tests/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
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
- 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
- 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
- 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
- New location for Controller & Host implementations:
- Added raw HCI API to enable physical HCI transport for a
- Added sample raw HCI apps for USB and UART.
- Added cross-transport pairing support for the Security
- 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.
- Makefile: Changed outdir into board-specific directory to avoid
- 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
- 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
- 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.
JIRA Related Items
- ZEP-308 - Build System cleanup and Kernel / Application build
- ZEP-334 - Unified Kernel
- ZEP-766 - USB Mass Storage access to internal filesystem
- ZEP-1090 - CPU x86 save/restore using new QMSI bootloader flow
- ZEP-1173 - Add support for bonding remove
- ZEP-48 - define API for interrupt controllers
- ZEP-181 - Persistent storage APIs
- ZEP-233 - Support USB mass storage device class
- ZEP-237 - Support pre-built host tools
- ZEP-240 - printk/printf usage in samples
- ZEP-248 - Add a BOARD/SOC porting guide
- ZEP-342 - USB DFU
- ZEP-451 - Quark SE output by default redirected to IPM
- ZEP-521 - ARM - add choice to floating point ABI selection
- ZEP-546 - UART interrupts not triggered on ARC
- ZEP-584 - warn user if SDK is out of date
- ZEP-592 - Sanitycheck support for multiple toolchains
- ZEP-605 - SMP over BR/EDR
- ZEP-614 - Port tinycrypt 2.0 test cases to Zephyr
- ZEP-622 - Add FS API to truncate/shrink a file
- ZEP-627 - Port Trickle support from Contiki into current stack
- ZEP-635 - Add FS API to grow a file
- ZEP-636 - Add FS API to get volume total and free space
- ZEP-640 - Remove dynamic IRQs/exceptions from Zephyr
- ZEP-653 - QMSI shim driver: Watchdog: Implement suspend and resume
- ZEP-654 - QMSI shim driver: I2C: Implement suspend and resume
- ZEP-657 - QMSI shim driver: AONPT: Implement suspend and resume
- ZEP-661 - QMSI shim driver: SPI: Implement suspend and resume
- ZEP-688 - unify duplicated sections of arch linker scripts
- ZEP-715 - Add K64F clock configurations
- ZEP-716 - Add Hexiwear board support
- ZEP-717 - Add ksdk I2C shim driver
- ZEP-718 - Add ksdk ethernet shim driver
- ZEP-721 - Add FXOS8700 accelerometer/magnetometer sensor driver
- ZEP-737 - Update host tools from upstream: fixdep.c
- ZEP-740 - PWM API: Check if 'flags' argument is really required
- ZEP-745 - Revisit design of PWM Driver API
- ZEP-750 - Arduino 101 board should support one configuration using
- ZEP-758 - Rename Quark SE Devboard to its official name: Quark SE
- ZEP-767 - Add FS API to flush cache of an open file
- ZEP-775 - Enable USB CDC by default on Arduino 101 and redirect
serial to USB
- ZEP-783 - ARM Cortex-M0/M0+ support
- ZEP-784 - Add support for Nordic Semiconductor nRF51822 SoC
- ZEP-850 - remove obsolete boards basic_minuteia and
- ZEP-906 - [unified] Add scheduler time slicing support
- ZEP-907 - Test memory pool support (with mailboxes)
- ZEP-908 - Add task offload to fiber support
- ZEP-909 - Adapt tickless idle + power management for ARM
- ZEP-910 - Adapt tickless idle for x86
- ZEP-912 - Finish renaming kernel object types
- ZEP-916 - Eliminate kernel object API anomalies
- ZEP-920 - Investigate malloc/free support
- ZEP-921 - Miscellaneous documentation work
- ZEP-922 - Revise documentation for Kernel Event Logger
- ZEP-923 - Revise documentation for Timing
- ZEP-924 - Revise documentation for Interrupts
- ZEP-925 - API changes to message queues
- ZEP-926 - API changes to memory pools
- ZEP-927 - API changes to memory maps
- ZEP-928 - API changes to event handling
- ZEP-930 - Cut over to unified kernel
- ZEP-933 - Unified kernel ARC port
- ZEP-934 - NIOS_II port
- ZEP-935 - Kernel logger support (validation)
- ZEP-954 - Update device PM API to allow setting additional power
- ZEP-957 - Create example sample for new unified kernel API usage
- ZEP-959 - sync checkpatch.pl with upstream Linux
- ZEP-966 - need support for EM7D SOC on em_starterkit
- ZEP-975 - DNS client port to new IP stack
- ZEP-981 - Add doxygen documentation to both include/kernel.h and
- ZEP-989 - Cache next ready thread instead of finding out the long
- ZEP-993 - Quark SE (x86): Refactor save/restore execution context
- ZEP-994 - Quark SE (ARC): Add PMA sample
- ZEP-996 - Refactor save/restore feature from i2c_qmsi driver
- ZEP-997 - Refactor save/restore feature from spi_qmsi driver
- ZEP-998 - Refactor save/restore feature from uart_qmsi driver
- ZEP-999 - Refactor save/restore feature from gpio_qmsi driver
- ZEP-1000 - Refactor save/restore feature from rtc_qmsi driver
- ZEP-1001 - Refactor save/restore feature from wdt_qmsi driver
- ZEP-1002 - Refactor save/restore feature from counter_qmsi_aonpt
- ZEP-1004 - Extend counter_qmsi_aon driver to support save/restore
- ZEP-1005 - Extend dma_qmsi driver to support save/restore
- ZEP-1006 - Extend soc_flash_qmsi driver to support save/restore
- ZEP-1008 - Extend pwm_qmsi driver to support save/restore
- ZEP-1023 - workq in Kernel primer for unified kernel
- ZEP-1030 - Enable QMSI shim drivers of SoC peripherals on the sensor
- ZEP-1043 - Update QMSI to 1.2
- ZEP-1045 - Add/Enhance shim layer to wrap SOC specific PM
- ZEP-1046 - Implement RAM sharing between bootloader and Zephyr
- ZEP-1047 - Adapt to new PM related boot flow changes in QMSI boot
- ZEP-1106 - Fix all test failures from TCF
- ZEP-1107 - Update QMSI to 1.3
- ZEP-1109 - Texas Instruments CC3200 LaunchXL Support
- ZEP-1119 - move top level usb/ to sys/usb
- ZEP-1120 - move top level fs/ to sys/fs
- ZEP-1121 - Add config support for enabling SoCWatch in Zephyr
- ZEP-1140 - Add a unified kernel version of power_mgr sample app for
testing PM code with the new kernel
- ZEP-1188 - Add an API to retrieve pending interrupts for wake events
- ZEP-1191 - Create wiki page for Hexiwear board
- ZEP-1235 - Basic shell support for file system browsing
- ZEP-1245 - ARM LTD V2M Beetle Support
- ZEP-1313 - porting and user guides must include a security section
- ZEP-1386 - Revise power management document to reflect latest
- ZEP-199 - Zephyr driver model is undocumented
- ZEP-436 - Test case tests/kernel/test_mem_safe fails on ARM
- ZEP-471 - Ethernet packet with multicast address is not working
- ZEP-472 - Ethernet packets are getting missed if sent in
- ZEP-517 - build on windows failed "zephyr/Makefile:869: ***
multiple target patterns"
- ZEP-528 - ARC has 2 almost identical copies of the linker script
- ZEP-577 - Sample application source does not compile on Windows
- ZEP-601 - enable CONFIG_DEBUG_INFO
- ZEP-602 - unhandled CPU exceptions/interrupts report wrong faulting
vector if triggered by CPU
- ZEP-615 - Un-supported flash erase size listed in SPI flash w25qxxdv
driver header file
- ZEP-639 - device_pm_ops structure should be defined as static
- ZEP-686 - docs: Info in "Application Development Primer" and
"Developing an Application and the Build System" is largely
- ZEP-698 - samples/task_profiler issues
- ZEP-707 - mem_safe test stomps on top of .data and bottom of
- ZEP-724 - build on windows failed: 'make: execvp: uname: File or
path name too long'
- ZEP-733 - Minimal libc shouldn't be providing stddef.h
- ZEP-762 - unexpected "abspath" and "notdir" from mingw make system
- ZEP-777 - samples/driver/i2c_stts751: kconfig build warning from
- ZEP-778 - Samples/drivers/i2c_lsm9ds0: kconfig build warning from
- ZEP-779 - Using current MinGW gcc version 5.3.0 breaks Zephyr build
- ZEP-845 - UART for ARC on Arduino 101 behaves unexpectedly
- ZEP-905 - hello_world compilation for arduino_due target fails
when using CROSS_COMPILE
- ZEP-940 - Fail to get ATT response
- ZEP-950 - USB: Device is not listed by USB20CV test suite
- ZEP-961 - samples: other cases cannot execute after run aon_counter
- ZEP-967 - Sanity doesn't build 'samples/usb/dfu' with
- ZEP-970 - Sanity doesn't build 'tests/kernel/test_build' with
- ZEP-982 - Minimal libc has EWOULDBLOCK != EAGAIN
- ZEP-1014 - [TCF] tests/bluetooth/init build fail
- ZEP-1025 - Unified kernel build sometimes breaks on a missing .d
- ZEP-1027 - Documentation for GCC ARM is not accurate
- ZEP-1031 - qmsi: dma: driver test fails with LLVM
- ZEP-1048 - grove_lcd sample: sample does not work if you disable
- ZEP-1051 - mpool allocation failed after defrag twice...
- ZEP-1062 - Unified kernel isn't compatible with CONFIG_NEWLIB_LIBC
- ZEP-1074 - ATT retrying misbehaves when ATT insufficient
Authentication is received
- ZEP-1076 - "samples/philosophers/unified" build failed with dynamic
- ZEP-1077 - "samples/philosophers/unified" build warnings with
- ZEP-1079 - Licensing not clear for imported components
- ZEP-1097 - ENC28J60 driver fails on concurrent tx and rx
- ZEP-1098 - ENC28J60 fails to receive big data frames
- ZEP-1100 - Current master still identifies itself as 1.5.0
- ZEP-1101 - SYS_KERNEL_VER_PATCHLEVEL() and friends artificially
limit version numbers to 4 bits
- ZEP-1124 - tests/kernel/test_sprintf/microkernel/testcase.ini#test
failure on frdm_k64f
- ZEP-1130 - region 'RAM' overflowed occurs while building
- ZEP-1138 - Received packets not being passed to upper layer from IP
stack when using ENC28J60 driver
- ZEP-1139 - Fix build error when power management is built with
- ZEP-1141 - Tinycrypt SHA256 test fails with system crash using
unified kernel type
- ZEP-1144 - Tinycrypt AES128 fixed-key with variable-text test fails
using unified kernel type
- ZEP-1145 - system hang after tinycrypt HMAC test
- ZEP-1146 - zephyrproject.org home page needs technical scrub for 1.6
- ZEP-1149 - port ztest framework to unified kernel
- ZEP-1154 - tests/samples failing with unified kernel
- ZEP-1155 - Fix filesystem API namespace
- ZEP-1163 - LIB_INCLUDE_DIR is clobbered in Makefile second pass
- ZEP-1164 - ztest skip waiting the test case to finish its execution
- ZEP-1179 - Build issues when compiling with LLVM from ISSM (icx)
- ZEP-1182 - kernel.h doxygen show unexpected "asm" blocks
- ZEP-1183 - btshell return "panic: errcode -1" when init bt
- ZEP-1195 - Wrong ATT error code passed to the application
- ZEP-1199 - [L2CAP] No credits to receive packet
- ZEP-1219 - [L2CAP] Data sent exceeds maximum PDU size
- ZEP-1221 - Connection Timeout during pairing
- ZEP-1226 - cortex M7 port assembler error
- ZEP-1227 - ztest native testing not working in unified kernel
- ZEP-1232 - Daily build is failing asserts
- ZEP-1234 - Removal of fiber* APIs due to unified migration breaks
USB mass storage patchset
- ZEP-1247 - Test tests/legacy/benchmark/latency_measure is broken
for daily sanitycheck
- ZEP-1252 - Test test_chan_blen_transfer does not build for
- ZEP-1277 - Flash driver (w25qxxdv) erase function is not checking
for offset alignment
- ZEP-1278 - Incorrect boundary check in flash driver (w25qxxdv) for
- ZEP-1287 - ARC SPI 1 Port is not working
- ZEP-1289 - Race condition with k_sem_take
- ZEP-1291 - libzephyr.a dependency on phony "gcc" target
- ZEP-1293 - ENC28J60 driver doesn't work on Arduino 101
- ZEP-1295 - incorrect doxygen comment in kernel.h:k_work_pending()
- ZEP-1297 - test/legacy/kernel/test_mail: failure on ARC platforms
- ZEP-1299 - System can't resume completely with DMA suspend and
- ZEP-1302 - ENC28J60 fails with rx/tx of long frames
- ZEP-1303 - Configuration talks about >32 thread prios, but the
kernel does not support it
- ZEP-1309 - ARM uses the end of memory for its init stack
- ZEP-1310 - ARC uses the end of memory for its init stack
- ZEP-1312 - ARC: software crashed at k_mbox_get() with async
sending a message
- ZEP-1319 - Zephyr is unable to compile when CONFIG_RUNTIME_NMI is
enabled on ARM platforms
- ZEP-1341 - power_states test app passes wrong value as power state
to post_ops functions
- ZEP-1343 - tests/drivers/pci_enum: failing on QEMU ARM and X86 due
to missing commit
- ZEP-1345 - cpu context save and restore could corrupt stack
- ZEP-1349 - ARC sleep needs to pass interrupt priority threshold when
interrupts are enabled
- ZEP-1353 - FDRM k64f Console output broken on normal flash mode
- ZEP-1405 - function l2cap_br_conn_req in
/subsys/bluetooth/host/l2cap_br.c references uninitialized pointer