Releases: zephyrproject-rtos/zephyr
Zephyr 1.7.0
We are pleased to announce the release of Zephyr kernel version 1.7.0.
This release continues refinement of the unified kernel introduced with
the 1.6.0 kernel release, simplifying the overall Zephyr architecture
and programming interfaces. This is the last release that will support
the deprecated legacy nano- and micro-kernel APIs found in the 1.5.0
release and earlier.
This release introduces a new native IP stack, replacing the legacy uIP
stack, maintaining the legacy functionality, adding additional
capabilities, and allowing future improvements.
We have introduced support for the RISC V and Xtensa architectures and
now support 6 architectures in total.
Device tree support for ARM based boards added. The initial device tree
support includes flash/sram base address and UART devices. Board support
includes NXP Kinetis based SoCs, ARM Beetle, TI CC3200 LaunchXL, and
STML32L476 based SoCs. Plan is to add support for other architectures
and expand device support in upcoming Zephyr releases.
The following sections provide a detailed list of changes, by component,
since kernel version 1.6.0.
Kernel
- Introduction of k_poll API: k_poll() is similar to the
POSIX poll() API in spirit in that it allows a single thread to
monitor multiple events without actively polling them, but rather
pending for one or more to become ready. - Optimized memory use of some thread fields
- Remove usage of micro/nano kernel terminology from kernel code and
introduced a legacy option to enable/disable legacy APIs.
(using legacy.h)
Architectures
- ARM: Added support for device tree
- ARM: Fixed exception priority access on Cortex M0(+)
- ARM: Refactored to use CMSIS
Boards
- Added ARM MPS2_AN385 board
- Added Atmel SAM E70 Xplained board
- Added Nordic pca10056 PDK board
- Added NXP FRDM-KW41Z board
- Added ST Nucleo-F334R8, Nucleo-L476G, STM3210C-EVAL, and
STM32373C-EVAL boards - Added Panther and tinyTILE boards, based on Quark SE C1000 and Intel
Curie - Added support for Zedboard Pulpino, a RISC V based board
- Added Qemu target for RISC V and a simulator target for the
Xtensa architecture.
Drivers and Sensors
- Added Atmel SAM pmc, gpio, uart, and ethernet drivers
- Added STM32F3x clock, flash, gpio, pinmux drivers
- Added stm32cube pwm and clock drivers
- Added cc3200 gpio driver
- Added mcr20a ieee802154 driver
- Added mcux pinmux, gpio, uart, and spi drivers
- Added Beetle clock control and watchdog drivers
Networking
This version removes the legacy uIP stack and introduces a new native IP
stack. Because of this there is lot of changes in the code base. The
native IP stack will support the same functionality as the legacy IP
stack found in 1.6, and add new networking features which are described
below.
- IP stack code is moved to subsys/net/ip directory.
- IP stack supports both IPv6 and IPv4, and they can be
enabled simultaneously. - Multiple network technologies like Bluetooth IPSP and IEEE 802.15.4
can be enabled simultaneously. No routing functionality is provided
by IP stack between enabled network technologies, applications need
to decide where to send the network packets. - Network technologies are abstracted in IP layer 2 (L2) and presented
to rest of the system as network interfaces. There exists L2 driver
for Ethernet, Bluetooth and IEEE 802.15.4. - Created Bluetooth Internet Protocol Support Profile (IPSP) support.
It will provide IPv6 connection over Bluetooth connection oriented
channel (L2CAP). - Created DHCPv4 support.
- Created CoAP implementation called ZoAP which replaces uIP
based one. - Updated 6Lo implementation to support both Bluetooth and IEEE
802.15.4 - Created application API (net_context) for creating connections and
transferring data to external systems. - Added sample application (wpanusb) for exporting IEEE 802.15.4 radio
over USB to external operating systems like Linux. - Added DNS client library.
- Updated TCP implementation.
- Created MQTT publisher support.
- Created network test generator (zperf).
- Created telnet console support.
- Created IRC client sample application.
- Created HTTP server and client sample applications.
- Created net-shell module for interacting with network sub-system.
- Created ieee15_4 shell module for dedicated interaction with IEEE
802.15.4 Soft MAC. - Created network management API for generic network settings request
as well as a network event notification system (sender/listener). - Redesigned buffer & pool allocation API.
Bluetooth
- Redesigned buffer pools for smaller memory consumption
- Redesigned thread model for smaller memory consumption
- Utilized new k_poll API to consolidate all TX threads into a single
one - Added more SDP functionality
- Improved RFCOMM support
- Reduced latencies in the Controller
- Added SPI HCI driver
Libraries
- Updated mbedTLS library
- Updated TinyCrypt to version 0.2.5
HALs
- Updated FAT FS to rev 0.12b
- Updated Nordic MDK header files
- Updated QMSI to 1.4 RC3
- Imported Atmel SDK (ASF) for SAM E70 and SAM3X
- Imported Nordic SDK HAL and 802.15.4 radio driver
- Renamed NXP KSDK to MCUX
- Imported NXP MCUX for KW41Z
- Imported Segger J-Link RTT library
- Imported stm32cube for F4 and L4
Documentation
- General improvements and additions to kernel component docs
- Moved supported board information back to the website site.
- New website documentation theme to go with the new
zephyrproject.org site. - New local-content generation theme (read-the-docs)
- General spelling checks and organizational improvements.
- Site-wide glossary added.
- Porting guides added.
- Sample README files converted to documents included in the website.
- Improved consistency of boards and samples
documentation.
JIRA Related Items
- ZEP-19 - IPSP node support
- ZEP-145 - no 'make flash' for Arduino Due
- ZEP-328 - HW Encryption Abstraction
- ZEP-359 - Move QEMU handling to a central location
- ZEP-365 - Zephyr's MQTT library
- ZEP-437 - TCP/IP API
- ZEP-513 - extern declarations of small microkernel objects in
designated sections require __attribute__((section)) in
gp-enabled systems - ZEP-591 - MQTT Port to New IP Stack
- ZEP-604 - In coap_server sample app, CoAP resource separate is not
able to send separate response - ZEP-613 - TCP/UDP client and server mode functionality
- ZEP-641 - Bluetooth Eddystone sample does not correctly implement
Eddystone beacon - ZEP-648 - New CoAP Implementation
- ZEP-664 - Extend spi_qmsi_ss driver to support save/restore
peripheral context - ZEP-665 - Extend gpio_qmsi_ss driver to support save/restore
peripheral context - ZEP-666 - Extend i2c_qmsi_ss driver to support save/restore
peripheral context - ZEP-667 - Extend adc_qmsi_ss driver to support save/restore
peripheral context - ZEP-686 - docs: Info in Application Development Primer and
Developing an Application and the Build System is largely duplicated - ZEP-706 - cannot set debug breakpoints on ARC side of Arduino 101
- ZEP-719 - Add ksdk uart shim driver
- ZEP-734 - Port AES-CMAC-PRF-128 [RFC 4615] encryption library for
Thread support - ZEP-742 - nRF5x Series: System Clock driver using NRF_RTC
- ZEP-744 - USB WebUSB
- ZEP-748 - Enable mbedtls_sslclient sample to run on quark se board
- ZEP-759 - Add preliminary support for Atmel SAM E70 (Cortex-M7)
chipset family and SAM E70 Xplained board - ZEP-788 - UDP
- ZEP-789 - IPv4
- ZEP-790 - ICMPv4
- ZEP-791 - TCP
- ZEP-792 - ARP
- ZEP-793 - DNS Resolver
- ZEP-794 - Requirements for Internet Hosts - Communication Layers
- ZEP-796 - DHCPv4
- ZEP-798 - IPv6
- ZEP-799 - HTTP over TLS
- ZEP-801 - DNS Extensions to support IPv6
- ZEP-804 - IPv6 Addressing Architecture
- ZEP-805 - Internet Control Message Protocol (ICMP) v6
- ZEP-807 - Neighbor Discovery for IPv6
- ZEP-808 - IPv6 Stateless Autoconfiguration (SLAAC)
- ZEP-809 - IPv6 over 802.15.4
- ZEP-811 - The Trickle Algorithm
- ZEP-812 - Compression Format for IPv6 over 802.15.4
- ZEP-813 - RPL: IPv6 Routing Protocol
- ZEP-814 - Routing Metrics used in Path Selection
- ZEP-815 - Objective Function Zero for RPL
- ZEP-816 - Minimum Rank with Hysteresis (RPL)
- ZEP-818 - CoAP working over the new IP stack
- ZEP-820 - HTTP v1.1 Server Sample
- ZEP-823 - New IP Stack - Documentation
- ZEP-824 - Network Device Driver Porting Guide
- ZEP-825 - Porting guide for old-to-new IP Stack APIs
- ZEP-827 - HTTP Client sample application
- ZEP-830 - ICMPv6 Parameter Problem Support
- ZEP-832 - Hop-by-Hop option handling
- ZEP-847 - Network protocols must be moved to subsys/net/lib
- ZEP-854 - CoAP with DTLS sample
- ZEP-859 - Migrate ENC28J60 driver to YAIP IP stack
- ZEP-865 - convert filesystem sample to a runnable test
- ZEP-872 - Unable to flash Zephyr on Arduino 101 using Ubuntu and
following wiki instructions - ZEP-873 - DMA API Update
- ZEP-875 - 6LoWPAN - Context based compression support
- ZEP-876 - 6LoWPAN - Offset based Reassembly of 802.15.4 packets
- ZEP-879 - 6LoWPAN - Stateless Address Autoconfiguration
- ZEP-882 - 6LoWPAN - IPv6 Next Header Compression
- ZEP-883 - IP Stack L2 Interface Management API
- ZEP-884 - 802.15.4 - CSMA-CA Radio protocol support
- ZEP-885 - 802.15.4 - Beacon frame support
- ZEP-886 - 80...
v1.7.0-rc4
Zephyr 1.7-rc4
v1.7.0-rc3
Zephyr 1.7.0-rc3
v1.7.0-rc2
Zephyr v1.7.0-rc2
v1.7.99
v1.7.0-rc1
Zephyr v1.7.0-rc1
v1.6.99
Zephyr 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.
JIRA Related Items
- ZEP-308 - Build System cleanup and Kernel / Application build
separation - 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
callbacks - ZEP-654 - QMSI shim driver: I2C: Implement suspend and resume
callbacks - ZEP-657 - QMSI shim driver: AONPT: Implement suspend and resume
callbacks - ZEP-661 - QMSI shim driver: SPI: Implement suspend and resume
callbacks - 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
original bootloader - ZEP-758 - Rename Quark SE Devboard to its official name: Quark SE
C1000 - 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
basic_cortex_m3 - 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 ...
v1.6.0-rc4
Zephyr v1.6.0-rc4
v1.6.0-rc3
Zephyr v1.6.0-rc3