1.. _zephyr_1.6: 2 3Zephyr Kernel 1.6.0 4#################### 5 6We are pleased to announce the release of Zephyr kernel version 1.6.0. This 7release introduces the unified Kernel replacing the separate nano- and 8micro-kernels and simplifying the overall Zephyr architecture and programming 9interfaces. 10Support for the ARM Cortex-M0/M0+ family was added and board support for 11Cortex-M was expanded. 12Additionally, this release adds many improvements for documentation, build 13infrastructure, and testing. 14 15Major enhancements included with the release: 16 17* Introduced the Unified Kernel; the nano and micro kernel were removed. 18* The legacy API is still supported but deprecated. 19* Legacy tests and samples were moved to tests/legacy and samples/legacy. 20* Unified kernel documentation was added and legacy nanokernel/microkernel 21 documentation was removed. 22* Added support for several ARM Cortex-M boards 23* Added support for USB mass storage and access to the filesystem. 24* Added native Bluetooth Controller support. Currently nRF51 & nRF52 are supported. 25 26A detailed list of changes since v1.5.0 by component follows: 27 28Kernel 29****** 30 31* Introduced the unified kernel. 32* Removed deprecated Tasks IRQs. 33* Removed deprecated dynamic interrupt API. 34* Added DLIST to operate in all elements of a doubly-linked list. 35* SLIST: Added sys_slist_get() to fetch and remove the head, also Added 36 append_list and merge_slist. 37* Added nano_work_pending to check if it is pending execution. 38* Unified: Added support for k_malloc and k_free. 39* Renamed kernel objects event to alert and memory map to memory slab. 40* Changed memory pool, memory maps, message queues and event handling APIs. 41 42Architectures 43************* 44 45* ARC: Removed CONFIG_TIMER0_CLOCK_FREQ. 46* ARC: Unified linker scripts. 47* ARC: Removed dynamic interrupts. 48* ARM: Added choice to use floating point ABI. 49* ARM: Added NXP Kinetis kconfig options to configure clocks. 50* ARM: Removed dynamic interrupts and exceptions. 51* ARM: Atmel: Added constants and structures for watchdog registers. 52* ARM: Added support for ARM Cortex-M0/M0+. 53* x86: Removed dynamic interrupts and exceptions. 54* x86: Declared internal API for interrupt controllers. 55* x86: Changed IRQ controller to return -1 if cannot determine source vector. 56* x86: Grouped Quark SoC's under intel_quark family. 57* x86: Optimized and simplified IRQ and exception stubs. 58 59Boards 60****** 61 62* Renamed board Quark SE devboard to Quark SE C1000 devboard. 63* Renamed board Quark SE SSS devboard to Quark SE C1000 SS devboard. 64* Quark SE C1000: Disabled IPM and enabled UART0 on the Sensor Subsystem. 65* Removed basic_cortex_m3 and basic_minuteia boards. 66* Arduino 101: Removed backup/restore scripts. To restore original bootloader 67 use flashpack utility instead. 68* Renamed nRF52 Nitrogen to 96Boards Nitrogen. 69* Added ARM LTD Beetle SoC and V2M Beetle board. 70* Added Texas Instruments CC3200 LaunchXL support. 71* Added support for Nordic Semiconductor nRF51822. 72* Added support for NXP Hexiwear board. 73 74Drivers and Sensors 75******************* 76 77* SPI: Fixed typos in SPI port numbers. 78* Pinmux: Removed Quark dev unused file. 79* I2C: Added KSDK shim driver. 80* Ethernet: Added KSDK shim driver. 81* Flash: Added KSDK shim driver 82* I2C: Changed config parameters to SoC specific. 83* QMSI: Implemented suspend and resume functions QMSI shim drivers 84* Added HP206C sensor. 85* Changed config_info pointers to const. 86* Added support for SoCWatch driver. 87* Added FXOS8700 accelerometer / magnetometer sensor driver. 88 89Networking 90********** 91 92* Minor fixes to uIP networking stack (This will be deprecated in 1.7) 93 94Bluetooth 95********* 96 97* Added native Bluetooth Controller support. Currently nRF51 & nRF52 are supported. 98* New location for Controller & Host implementations: subsys/bluetooth/ 99* Added raw HCI API to enable physical HCI transport for a Controller-only build. 100* Added sample raw HCI apps for USB and UART. 101* Added cross-transport pairing support for the Security Manager Protocol. 102* Added RFCOMM support (for Bluetooth Classic) 103* Added basic persistent storage support (filesystem-backed) 104* Renamed bt_driver API to bt_hci_driver, in anticipation of Bluetooth radio drivers. 105 106Build Infrastructure 107******************** 108 109* Makefile: Changed outdir into board-specific directory to avoid build collisions. 110* Makefile: Changed to use HOST_OS environment variable. 111* Makefile: Added support for third party build systems. 112* Sanity: Added support to filter using environment variables. 113* Sanity: Added support for multiple toolchains. 114* Sanity: Added ISSM and ARM GCC embedded toolchains to the supported toolchains. 115* Sanity: Added extra arguments to be passed to the build. 116* Sanity: Removed linker VMA/LMA offset check. 117* Sysgen: Added --kernel_type argument. 118* Modified build infrastructure to support unified kernel. 119* SDK: Zephyr: Added check for minimum required version. 120* Imported get_maintainer.pl from Linux kernel. 121 122Libraries 123********* 124 125* libc: Added subset of standard types in inttypes.h. 126* libc: Added support for 'z' length specifier. 127* libc: Removed stddef.h which is provided by the compiler. 128* libc: printf: Improved code for printing. 129* printk: Added support for modifiers. 130* Added CoAP implementation for Zephyr. 131* File system: Added API to grow or shrink a file. 132* File system: Added API to get volume statistics. 133* File system: Added API to flush cache of an opened file. 134 135HALs 136**** 137 138* QMSI: Updated to version 1.3.1. 139* HAL: Imported CC3200 SDK. 140* Imported Nordic MDK nRF51 files. 141* Imported Kinetis SDK Ethernet phy driver. 142* Imported SDK RNGA driver. 143 144Documentation 145************* 146 147* Drivers: Improved Zephyr Driver model. 148* Updated device power management API. 149* Unified Kernel primer. 150* Moved supported board information to the wiki.zephyrproject.org site. 151* Revised documentation for Kernel Event logger and Timing. 152 153Test and Samples 154**************** 155 156* Fixed incorrect printk usage. 157* Removed test for dynamic exceptions. 158* Added USB sample. 159* Added tests and samples for CoAP client and server. 160* Added philosophers unified sample. 161* Removed printf/printk wrappers. 162* Added Unified kernel API samples. 163* Imported TinyCrypt test cases for CTR, ECC DSA and ECC DH algorithm. 164 165Deprecations 166************ 167 168* Deprecated microkernel and nanokernel APIs. 169* Removed dynamic IRQs and exceptions. 170* Removed Tasks IRQs. 171 172JIRA Related Items 173****************** 174 175* ``ZEP-308`` - Build System cleanup and Kernel / Application build separation 176* ``ZEP-334`` - Unified Kernel 177* ``ZEP-766`` - USB Mass Storage access to internal filesystem 178* ``ZEP-1090`` - CPU x86 save/restore using new QMSI bootloader flow 179* ``ZEP-1173`` - Add support for bonding remove 180* ``ZEP-48`` - define API for interrupt controllers 181* ``ZEP-181`` - Persistent storage APIs 182* ``ZEP-233`` - Support USB mass storage device class 183* ``ZEP-237`` - Support pre-built host tools 184* ``ZEP-240`` - printk/printf usage in samples 185* ``ZEP-248`` - Add a BOARD/SOC porting guide 186* ``ZEP-342`` - USB DFU 187* ``ZEP-451`` - Quark SE output by default redirected to IPM 188* ``ZEP-521`` - ARM - add choice to floating point ABI selection 189* ``ZEP-546`` - UART interrupts not triggered on ARC 190* ``ZEP-584`` - warn user if SDK is out of date 191* ``ZEP-592`` - Sanitycheck support for multiple toolchains 192* ``ZEP-605`` - SMP over BR/EDR 193* ``ZEP-614`` - Port TinyCrypt 2.0 test cases to Zephyr 194* ``ZEP-622`` - Add FS API to truncate/shrink a file 195* ``ZEP-627`` - Port Trickle support from Contiki into current stack 196* ``ZEP-635`` - Add FS API to grow a file 197* ``ZEP-636`` - Add FS API to get volume total and free space 198* ``ZEP-640`` - Remove dynamic IRQs/exceptions from Zephyr 199* ``ZEP-653`` - QMSI shim driver: Watchdog: Implement suspend and resume callbacks 200* ``ZEP-654`` - QMSI shim driver: I2C: Implement suspend and resume callbacks 201* ``ZEP-657`` - QMSI shim driver: AONPT: Implement suspend and resume callbacks 202* ``ZEP-661`` - QMSI shim driver: SPI: Implement suspend and resume callbacks 203* ``ZEP-688`` - unify duplicated sections of arch linker scripts 204* ``ZEP-715`` - Add K64F clock configurations 205* ``ZEP-716`` - Add Hexiwear board support 206* ``ZEP-717`` - Add ksdk I2C shim driver 207* ``ZEP-718`` - Add ksdk ethernet shim driver 208* ``ZEP-721`` - Add FXOS8700 accelerometer/magnetometer sensor driver 209* ``ZEP-737`` - Update host tools from upstream: fixdep.c 210* ``ZEP-740`` - PWM API: Check if 'flags' argument is really required 211* ``ZEP-745`` - Revisit design of PWM Driver API 212* ``ZEP-750`` - Arduino 101 board should support one configuration using original bootloader 213* ``ZEP-758`` - Rename Quark SE Devboard to its official name: Quark SE C1000 214* ``ZEP-767`` - Add FS API to flush cache of an open file 215* ``ZEP-775`` - Enable USB CDC by default on Arduino 101 and redirect serial to USB 216* ``ZEP-783`` - ARM Cortex-M0/M0+ support 217* ``ZEP-784`` - Add support for Nordic Semiconductor nRF51822 SoC 218* ``ZEP-850`` - remove obsolete boards basic_minuteia and basic_cortex_m3 219* ``ZEP-906`` - [unified] Add scheduler time slicing support 220* ``ZEP-907`` - Test memory pool support (with mailboxes) 221* ``ZEP-908`` - Add task offload to fiber support 222* ``ZEP-909`` - Adapt tickless idle + power management for ARM 223* ``ZEP-910`` - Adapt tickless idle for x86 224* ``ZEP-912`` - Finish renaming kernel object types 225* ``ZEP-916`` - Eliminate kernel object API anomalies 226* ``ZEP-920`` - Investigate malloc/free support 227* ``ZEP-921`` - Miscellaneous documentation work 228* ``ZEP-922`` - Revise documentation for Kernel Event Logger 229* ``ZEP-923`` - Revise documentation for Timing 230* ``ZEP-924`` - Revise documentation for Interrupts 231* ``ZEP-925`` - API changes to message queues 232* ``ZEP-926`` - API changes to memory pools 233* ``ZEP-927`` - API changes to memory maps 234* ``ZEP-928`` - API changes to event handling 235* ``ZEP-930`` - Cut over to unified kernel 236* ``ZEP-933`` - Unified kernel ARC port 237* ``ZEP-934`` - NIOS_II port 238* ``ZEP-935`` - Kernel logger support (validation) 239* ``ZEP-954`` - Update device PM API to allow setting additional power states 240* ``ZEP-957`` - Create example sample for new unified kernel API usage 241* ``ZEP-959`` - sync checkpatch.pl with upstream Linux 242* ``ZEP-966`` - need support for EM7D SOC on em_starterkit 243* ``ZEP-975`` - DNS client port to new IP stack 244* ``ZEP-981`` - Add doxygen documentation to both include/kernel.h and include/legacy.h 245* ``ZEP-989`` - Cache next ready thread instead of finding out the long way 246* ``ZEP-993`` - Quark SE (x86): Refactor save/restore execution context feature 247* ``ZEP-994`` - Quark SE (ARC): Add PMA sample 248* ``ZEP-996`` - Refactor save/restore feature from i2c_qmsi driver 249* ``ZEP-997`` - Refactor save/restore feature from spi_qmsi driver 250* ``ZEP-998`` - Refactor save/restore feature from uart_qmsi driver 251* ``ZEP-999`` - Refactor save/restore feature from gpio_qmsi driver 252* ``ZEP-1000`` - Refactor save/restore feature from rtc_qmsi driver 253* ``ZEP-1001`` - Refactor save/restore feature from wdt_qmsi driver 254* ``ZEP-1002`` - Refactor save/restore feature from counter_qmsi_aonpt driver 255* ``ZEP-1004`` - Extend counter_qmsi_aon driver to support save/restore peripheral context 256* ``ZEP-1005`` - Extend dma_qmsi driver to support save/restore peripheral context 257* ``ZEP-1006`` - Extend soc_flash_qmsi driver to support save/restore peripheral context 258* ``ZEP-1008`` - Extend pwm_qmsi driver to support save/restore peripheral context 259* ``ZEP-1023`` - workq in Kernel primer for unified kernel 260* ``ZEP-1030`` - Enable QMSI shim drivers of SoC peripherals on the sensor subsystem 261* ``ZEP-1043`` - Update QMSI to 1.2 262* ``ZEP-1045`` - Add/Enhance shim layer to wrap SOC specific PM implementations 263* ``ZEP-1046`` - Implement RAM sharing between bootloader and Zephyr 264* ``ZEP-1047`` - Adapt to new PM related boot flow changes in QMSI boot loader 265* ``ZEP-1106`` - Fix all test failures from TCF 266* ``ZEP-1107`` - Update QMSI to 1.3 267* ``ZEP-1109`` - Texas Instruments CC3200 LaunchXL Support 268* ``ZEP-1119`` - move top level usb/ to sys/usb 269* ``ZEP-1120`` - move top level fs/ to sys/fs 270* ``ZEP-1121`` - Add config support for enabling SoCWatch in Zephyr 271* ``ZEP-1140`` - Add a unified kernel version of power_mgr sample app for testing PM code with the new kernel 272* ``ZEP-1188`` - Add an API to retrieve pending interrupts for wake events 273* ``ZEP-1191`` - Create wiki page for Hexiwear board 274* ``ZEP-1235`` - Basic shell support for file system browsing 275* ``ZEP-1245`` - ARM LTD V2M Beetle Support 276* ``ZEP-1313`` - porting and user guides must include a security section 277* ``ZEP-1386`` - Revise power management document to reflect latest changes 278* ``ZEP-199`` - Zephyr driver model is undocumented 279* ``ZEP-436`` - Test case tests/kernel/test_mem_safe fails on ARM hardware 280* ``ZEP-471`` - Ethernet packet with multicast address is not working 281* ``ZEP-472`` - Ethernet packets are getting missed if sent in quick succession. 282* ``ZEP-517`` - build on windows failed "zephyr/Makefile:869: \*\*\* multiple target patterns" 283* ``ZEP-528`` - ARC has 2 almost identical copies of the linker script 284* ``ZEP-577`` - Sample application source does not compile on Windows 285* ``ZEP-601`` - enable CONFIG_DEBUG_INFO 286* ``ZEP-602`` - unhandled CPU exceptions/interrupts report wrong faulting vector if triggered by CPU 287* ``ZEP-615`` - Un-supported flash erase size listed in SPI flash w25qxxdv driver header file 288* ``ZEP-639`` - device_pm_ops structure should be defined as static 289* ``ZEP-686`` - docs: Info in "Application Development Primer" and "Developing an Application and the Build System" is largely duplicated 290* ``ZEP-698`` - samples/task_profiler issues 291* ``ZEP-707`` - mem_safe test stomps on top of .data and bottom of .noinit 292* ``ZEP-724`` - build on windows failed: 'make: execvp: uname: File or path name too long' 293* ``ZEP-733`` - Minimal libc shouldn't be providing stddef.h 294* ``ZEP-762`` - unexpected "abspath" and "notdir" from mingw make system 295* ``ZEP-777`` - samples/driver/i2c_stts751: kconfig build warning from "select DMA_QMSI" 296* ``ZEP-778`` - Samples/drivers/i2c_lsm9ds0: kconfig build warning from "select DMA_QMSI" 297* ``ZEP-779`` - Using current MinGW gcc version 5.3.0 breaks Zephyr build on Windows 298* ``ZEP-845`` - UART for ARC on Arduino 101 behaves unexpectedly 299* ``ZEP-905`` - hello_world compilation for arduino_due target fails when using CROSS_COMPILE 300* ``ZEP-940`` - Fail to get ATT response 301* ``ZEP-950`` - USB: Device is not listed by USB20CV test suite 302* ``ZEP-961`` - samples: other cases cannot execute after run aon_counter case 303* ``ZEP-967`` - Sanity doesn't build 'samples/usb/dfu' with assertions (-R) 304* ``ZEP-970`` - Sanity doesn't build 'tests/kernel/test_build' with assertions (-R) 305* ``ZEP-982`` - Minimal libc has EWOULDBLOCK != EAGAIN 306* ``ZEP-1014`` - [TCF] tests/bluetooth/init build fail 307* ``ZEP-1025`` - Unified kernel build sometimes breaks on a missing .d dependency file. 308* ``ZEP-1027`` - Documentation for GCC ARM is not accurate 309* ``ZEP-1031`` - qmsi: dma: driver test fails with LLVM 310* ``ZEP-1048`` - grove_lcd sample: sample does not work if you disable serial 311* ``ZEP-1051`` - mpool allocation failed after defrag twice... 312* ``ZEP-1062`` - Unified kernel isn't compatible with CONFIG_NEWLIB_LIBC 313* ``ZEP-1074`` - ATT retrying misbehaves when ATT insufficient Authentication is received 314* ``ZEP-1076`` - "samples/philosophers/unified" build failed with dynamic stack 315* ``ZEP-1077`` - "samples/philosophers/unified" build warnings with NUM_PHIL<6 316* ``ZEP-1079`` - Licensing not clear for imported components 317* ``ZEP-1097`` - ENC28J60 driver fails on concurrent tx and rx 318* ``ZEP-1098`` - ENC28J60 fails to receive big data frames 319* ``ZEP-1100`` - Current master still identifies itself as 1.5.0 320* ``ZEP-1101`` - SYS_KERNEL_VER_PATCHLEVEL() and friends artificially limit version numbers to 4 bits 321* ``ZEP-1124`` - tests/kernel/test_sprintf/microkernel/testcase.ini#test failure on frdm_k64f 322* ``ZEP-1130`` - region 'RAM' overflowed occurs while building test_hmac_prng 323* ``ZEP-1138`` - Received packets not being passed to upper layer from IP stack when using ENC28J60 driver 324* ``ZEP-1139`` - Fix build error when power management is built with unified kernel 325* ``ZEP-1141`` - TinyCrypt SHA256 test fails with system crash using unified kernel type 326* ``ZEP-1144`` - TinyCrypt AES128 fixed-key with variable-text test fails using unified kernel type 327* ``ZEP-1145`` - system hang after TinyCrypt HMAC test 328* ``ZEP-1146`` - zephyrproject.org home page needs technical scrub for 1.6 release 329* ``ZEP-1149`` - port ztest framework to unified kernel 330* ``ZEP-1154`` - tests/samples failing with unified kernel 331* ``ZEP-1155`` - Fix filesystem API namespace 332* ``ZEP-1163`` - LIB_INCLUDE_DIR is clobbered in Makefile second pass 333* ``ZEP-1164`` - ztest skip waiting the test case to finish its execution 334* ``ZEP-1179`` - Build issues when compiling with LLVM from ISSM (icx) 335* ``ZEP-1182`` - kernel.h doxygen show unexpected "asm" blocks 336* ``ZEP-1183`` - btshell return "panic: errcode -1" when init bt 337* ``ZEP-1195`` - Wrong ATT error code passed to the application 338* ``ZEP-1199`` - [L2CAP] No credits to receive packet 339* ``ZEP-1219`` - [L2CAP] Data sent exceeds maximum PDU size 340* ``ZEP-1221`` - Connection Timeout during pairing 341* ``ZEP-1226`` - cortex M7 port assembler error 342* ``ZEP-1227`` - ztest native testing not working in unified kernel 343* ``ZEP-1232`` - Daily build is failing asserts 344* ``ZEP-1234`` - Removal of fiber* APIs due to unified migration breaks USB mass storage patchset 345* ``ZEP-1247`` - Test tests/legacy/benchmark/latency_measure is broken for daily sanitycheck 346* ``ZEP-1252`` - Test test_chan_blen_transfer does not build for quark_d2000_crb 347* ``ZEP-1277`` - Flash driver (w25qxxdv) erase function is not checking for offset alignment 348* ``ZEP-1278`` - Incorrect boundary check in flash driver (w25qxxdv) for erase offset 349* ``ZEP-1287`` - ARC SPI 1 Port is not working 350* ``ZEP-1289`` - Race condition with k_sem_take 351* ``ZEP-1291`` - libzephyr.a dependency on phony "gcc" target 352* ``ZEP-1293`` - ENC28J60 driver doesn't work on Arduino 101 353* ``ZEP-1295`` - incorrect doxygen comment in kernel.h:k_work_pending() 354* ``ZEP-1297`` - test/legacy/kernel/test_mail: failure on ARC platforms 355* ``ZEP-1299`` - System can't resume completely with DMA suspend and resume operation 356* ``ZEP-1302`` - ENC28J60 fails with rx/tx of long frames 357* ``ZEP-1303`` - Configuration talks about >32 thread prios, but the kernel does not support it 358* ``ZEP-1309`` - ARM uses the end of memory for its init stack 359* ``ZEP-1310`` - ARC uses the end of memory for its init stack 360* ``ZEP-1312`` - ARC: software crashed at k_mbox_get() with async sending a message 361* ``ZEP-1319`` - Zephyr is unable to compile when CONFIG_RUNTIME_NMI is enabled on ARM platforms 362* ``ZEP-1341`` - power_states test app passes wrong value as power state to post_ops functions 363* ``ZEP-1343`` - tests/drivers/pci_enum: failing on QEMU ARM and X86 due to missing commit 364* ``ZEP-1345`` - cpu context save and restore could corrupt stack 365* ``ZEP-1349`` - ARC sleep needs to pass interrupt priority threshold when interrupts are enabled 366* ``ZEP-1353`` - FDRM k64f Console output broken on normal flash mode 367 368Known Issues 369************ 370 371* ``ZEP-1405`` - function l2cap_br_conn_req in /subsys/bluetooth/host/l2cap_br.c 372 references uninitialized pointer 373