blob: 80fef4e33f21e7a7584738cad63c8fba786123b0 [file] [log] [blame]
:orphan:
.. _zephyr_2.0:
Zephyr Kernel 2.0.0 (Working Draft)
####################################
We are pleased to announce the release of Zephyr kernel version 2.0.0.
Major enhancements with this release include:
* The kernel now supports both 32- and 64-bit architectures.
* We added support for SOCKS5 proxy. SOCKS5 is an Internet protocol that
exchanges network packets between a client and server through a proxy server.
* Introduced support for 6LoCAN, a 6Lo adaption layer for Controller Area
Networks.
* We added support for :ref:`Point-to-Point Protocol (PPP) <ppp>`. PPP is a
data link layer (layer 2) communications protocol used to establish a direct
connection between two nodes.
* We added support for UpdateHub which is an end-to-end solution for large scale
over-the-air update of devices.
* We added support for ARM Cortex-R Architecture (EXPERIMENTAL).
The following sections provide detailed lists of changes by component.
Kernel
******
* New kernel API for per-thread disabling of Floating Point Services for
ARC, ARM Cortex-M, and x86 architectures.
* New system call to set the clock frequency at runtime.
* Additional support for compatibility with 64-bit architectures.
* Userspace mutexes are now supported through the new k_futex primitive.
* Improvements to the slab allocator.
* Fixed the implementation of k_thread_name_set() with userspace enabled.
* Boost the default tick rate for tickless kernels in order to improve the
precision of timeouts.
Architectures
*************
* ARM:
* Added initial support for ARM Cortex-R architecture (EXPERIMENTAL)
* We enhanced the support for Floating Point Services in Cortex-M
architecture, implementing and enabling lazy-stacking for FPU
capable threads and fixing stack overflow detection for FPU
capable supervisor threads
* Added Qemu support for ARMv8-M Mainline architecture
* Optimized the IRQ locking time in thread context switch
* Fixed several critical bugs in User Mode implementation
* Added test coverage for ARM-specific kernel features
* Improved support for linking TrustZone Secure Entry functions into
Non-Secure firmware
* ARC:
* Added support for ARC HS architecture
* Added SMP support for ARC HS architecture
* Added support for ARC SecureShield based TEE (EXPERIMENTAL)
* Fixed several critical bugs in interrupt and exception handling
* Enhance the support for Floating Point Services
* POSIX:
* Fix race condition with terminated threads which had never been
scheduled by kernel. On very loaded systems it could cause swap errors.
* x86:
* Support for the Quark microcontroller family has been dropped.
* A new lightweight PCI implementation has been introduced which supports
MSI and other features required for PCIe devices. The previous PCI
implementation has been deprecated and will be removed in 2.1.
Boards & SoC Support
********************
* Add native_posix_64: A 64 bit variant of native_posix
* Added support for the following ARC boards:
* emsdp
* hsdk
* nsim for hs
* Added support for the following ARM boards:
* atsamr21_xpro
* cc1352r1_launchxl
* cc26x2r1_launchxl
* holyiot_yj16019
* lpcxpresso55s69
* mec15xxevb_assy6853
* mikroe_mini_m4_for_stm32
* mimxrt1015_evk
* mps2_an521
* nrf51_pca10031
* nrf52811_pca10056
* nucleo_g071rb
* nucleo_wb55rg
* qemu_cortex_r5
* stm32h747i_disco
* stm32mp157c_dk2
* twr_ke18f
* v2m_musca_b1
* 96b_avenger96
* 96b_meerkat96
* 96b_wistrio
* Added support for the following RISC-V boards:
* hifive1_revb
* litex_vexriscv
* qemu_riscv64
* Added support for the following x86 boards:
* gpmrb
* Added support for the following shield boards:
* frdm_cr20a
* link_board_can
* sparkfun_sara_r4
* wnc_m14a2a
* x_nucleo_iks01a3
* Removed support for the following boards:
* arduino_101
* arduino_101_sss
* curie_ble
* galileo
* quark_d2000_crb
* quark_se_c1000_devboard
* quark_se_c1000_ss_devboard
* quark_se_c1000_ble
* tinytile
* x86_jailhouse
Drivers and Sensors
*******************
* ADC
* Added API to support calibration
* Enabled ADC on STM32WB
* Removed Quark D2000 ADC driver
* Added NXP ADC12 and SAM0 ADC drivers
* Added ADC shell
* Audio
* Added support for 2 microphones (stereo) in mpxxdtyy driver
* CAN
* Added support for canbus Ethernet translator
* Added 6LoCAN implementation
* Added MCP2515, NXP FlexCAN, and loopback drivers
* Added CAN shell
* Clock Control
* Added NXP Kinetis MCG, SCG, and PCC drivers
* Removed Quark SE driver
* Added STM32H7, STM32L1X, and STM32WB support
* Counter
* Added optional flags to alarm configuration structure and extended set channel alarm flags
* Added top_value setting configuration structure to API
* Enabled counter for STM32WB
* Added NXP GPT, "CMOS" RTC, SiLabs RTCC, and SAM0 drivers
* Removed Quark D2000 support from QMSI driver
* Display
* Added ST7789V based LCD driver
* Renamed ssd1673 driver to ssd16xx
* Added framebuffer driver with multiboot support
* Added support for Seeed 2.8" TFT touch shield v2.0
* DMA
* Added API to retrieve runtime status
* Added SAM0 DMAC driver
* Removed Quark SE C1000 support from QMSI driver
* Entropy
* Added TI CC13xx / CC26xx driver
* ESPI
* Added Microchip XEC driver
* Ethernet
* Added LiteEth driver
* Flash
* Removed Quark SE C1000 driver
* Removed support for Quark D2000 from QMSI driver
* Added STM32G0XX and STM32WB support to STM32 driver
* Added RV32M1 and native POSIX drivers
* GPIO
* Added stm32f1x SWJ configuration
* Removed Quark SE C1000 and D2000 support from DesignWare driver
* Added support for STM32H7, STM32L1X, and STM32WB to STM32 driver
* Added Microchip XEC and TI CC13x2 / CC26x2 drivers
* Added HT16K33 LED driver
* Added interrupt support to SAM0 driver
* Hardware Info
* Added ESP32 and SAM0 drivers
* I2C
* Added support for STM32MP1, STM32WB, and STM32L1X to STM32 driver
* Added STM32F10X slave support
* Added power management to nrf TWI and TWIM drivers
* Added TI CC13xx / CC26xx, Microchip MEC, SAM0, and RV32M1 drivers
* Rewrote DesignWare driver for PCI(e) support
* IEEE 802.15.4
* Fixed KW41z fault and dBm mapping
* Interrupt Controller
* Added initial support for ARC TCC
* Added GIC400, LiteX, and SAM0 EIC drivers
* Added support for STM32G0X, STM32H7, STM32WB, and STM32MP1 to STM32 driver
* Removed MVIC driver
* IPM
* Removed Quark SE driver
* Added MHU and STM32 drivers
* LED
* Added Holtek HT16K33 LED driver
* Modem
* Introduced socket helper layer
* Introduced command handler and UART interface driver layers
* Introduced modem context helper driver
* Added u-blox SARA-R4 modem driver
* Pinmux
* Added SPI support to STM32MP1
* Enabled ADC, PWM, I2C, and SPI pins on STM32WB
* Added Microchip XEC and TI CC13x2 / CC26x2 drivers
* PWM
* Added NXP PWM driver
* Added support for STM32G0XX to STM32 driver
* Sensor
* Added STTS751 temperature sensor driver
* Added LSM6DSO and LPS22HH drivers
* Renamed HDC1008 driver to ti_hdc and added support for 1050 version
* Added LED current, proximity pulse length, ALS, and proximity gain configurations to APDS9960 driver
* Reworked temperature and acceleration conversions, and added interrupt handling in ADXL362 driver
* Added BME680 driver and AMS ENS210 drivers
* Serial
* Added Xilinx ZynqMP PS, LiteUART, and TI CC12x2 / CC26x2 drivers
* Added support for virtual UARTS over RTT channels
* Added support for STM32H7 to STM32 driver
* Removed support for Quark D2000 from QMSI driver
* Enabled interrupts in LPC driver
* Implemented ASYNC API in SAM0 driver
* Added PCI(e) support to NS16550 driver
* SPI
* Added support for STM32MP1X and STM32WB to STM32 driver
* Removed support for Quark SE C1000 from DesignWare driver
* Added TI CC13xx / CC26xx driver
* Implemented ASYNC API in SAM0 driver
* Timer
* Added Xilinx ZynqMP PS ttc driver
* Added support for SMP to ARC V2 driver
* Added MEC1501 32 KHZ, local APIC timer, and LiteX drivers
* Replaced native POSIX system timer driver with tickless support
* Removed default selection of SYSTICK timer for ARM platforms
* USB
* Added NXP EHCI driver
* Implemented missing API functions in SAM0 driver
* WiFi
* Implemented TCP listen/accept and UDP support in eswifi driver
Networking
**********
* Add support for `SOCKS5 proxy <https://en.wikipedia.org/wiki/SOCKS>`__.
See also `RFC1928 <https://tools.ietf.org/html/rfc1928>`__ for details.
* Add support for 6LoCAN, a 6Lo adaption layer for Controller Area Networks.
* Add support for :ref:`Point-to-Point Protocol (PPP) <ppp>`.
* Add support for UpdateHub which is an end-to-end solution for large scale
over-the-air update of devices.
See `UpdateHub.io <https://updatehub.io/>`__ for details.
* Add support to automatically register network socket family.
* Add support for ``getsockname()`` function.
* Add SO_PRIORITY support to ``setsockopt()``
* Add support for VLAN tag stripping.
* Add IEEE 802.15.4 API for ACK configuration.
* Add dispatching support to SocketCAN sockets.
* Add user mode support to PTP clock API.
* Add user mode support to network interface address functions.
* Add AF_NET_MGMT socket address family support. This is for receiving network
event information in user mode application.
* Add user mode support to ``net_addr_ntop()`` and ``net_addr_pton()``
* Add support for sending network management events when DNS server is added
or deleted.
* Add LiteEth Ethernet driver.
* Add support for ``sendmsg()`` API.
* Add `civetweb <https://civetweb.github.io/civetweb/>`__ HTTP API support.
* Add LWM2M IPSO Accelerometer, Push Button, On/Off Switch and Buzzer object
support.
* Add LWM2M Location and Connection Monitoring object support.
* Add network management L4 layer. The L4 management events are used
when monitoring network connectivity.
* Allow net-mgmt API to pass information length to application.
* Remove network management L1 layer as it was never used.
* By default a network interface is set to UP when the device starts.
If this is not desired, then it is possible to disable automatic start.
* Allow collecting network packet TX throughput times in the network stack.
This information can be seen in net-shell.
* net-shell Ping command overhaul.
* Accept UDP packet with missing checksum.
* 6lo compression rework.
* Incoming connection handling refactoring.
* Network interface refactoring.
* IPv6 fragmentation fixes.
* TCP data length fixes if TCP options are present.
* SNTP client updates.
* Trickle timer re-init fixes.
* ``getaddrinfo()`` fixes.
* DHCPv4 fixes.
* LWM2M fixes.
* gPTP fixes.
* MQTT fixes.
* DNS fixes for non-compressed answers.
* mDNS resolver fixes.
* LLMNR resolver fixes.
* Ethernet ARP fixes.
* OpenThread updates and fixes.
* Network device driver enhancements:
- Ethernet e1000 fixes.
- Ethernet enc28j60 fixes.
- Ethernet mcux fixes.
- Ethernet stellaris fixes.
- Ethernet gmac fixes.
- Ethernet stm32 fixes.
- WiFi eswifi fixes.
- IEEE 802.15.4 kw41z fixes.
- IEEE 802.15.4 nrf5 fixes.
Bluetooth
*********
* Host:
* GATT: Added support for database hashes
* GATT: Added support for Ready Using Characteristic UUID
* GATT: Added support for static services
* GATT: Added support for disabling the dynamic database
* GATT: Added support for notifying and indicating by UUID
* GATT: Simplified the bt_gatt_notify_cb() API
* GATT: Added additional attributes to the Device Information Service
* GATT: Several protocol and database fixes
* Settings: Transitioned to new, optimized settings model
* Settings: Support for custom backends
* Completed support for directed advertising
* Completed support for Out-Of-Band (OOB) pairing
* Added support for fine-grained control of security establishment, including
forcing a pairing procedure in case of key loss
* Switched to separate, dedicated pools for discardable events and number of
completed packets events
* Extended and improved the Bluetooth shell with several commands
* BLE qualification up to the 5.1 specification
* BLE Mesh: Several fixes and improvements
* BLE split software Controller:
* The split software Controller is now the default
* Added support for the Data Length Update procedure
* Improved the ticker packet scheduler for improved conflict resolution
* Added documentation for the ticker packet scheduler
* Added support for out-of-tree user-defined commands and events
* Added support for Zephyr Vendor Specific Commands
* Added support for user-defined protocols
* Converted several control procedures to be queueable
* Nordic: Added support for Controller-based privacy
* Nordic: Decorrelated address generation from resolution
* Nordic: Added support for fast encryption setup
* Nordic: Added support for RSSI
* Nordic: Added support for low-latency ULL processing of messages
* Nordic: Added support for the nRF52811 IC BLE radio
* Nordic: Added support for PA/LNA on Port 1 GPIO pins
* Nordic: Added support for radio event abort
* BLE qualification up to the 5.1 specification
* Several bug fixes
* BLE legacy software Controller:
* BLE qualification up to the 5.1 specification
* Multiple control procedures fixes and improvements
Build and Infrastructure
************************
* ARM Embedded Toolchain
* Changed ARM Embedded toolchain to default to nano variant of newlib
* TBD
Libraries / Subsystems
***********************
* File Systems
* Added support for littlefs
* TBD
HALs
****
* TBD
Documentation
*************
* We've made many updates to component, subsystem, and process
documentation bringing our documentation up-to-date with code changes,
additions, and improvements, as well as new supported boards and
samples.
Tests and Samples
*****************
* TBD
Issue Related Items
*******************
These GitHub issues were addressed since the previous 1.14.0 tagged
release:
.. comment List derived from GitHub Issue query: ...
* :github:`issuenumber` - issue title
* :github:`99999` - issue title