Zephyr Kernel 1.13.0¶
We are pleased to announce the release of Zephyr kernel version 1.13.0.
Major enhancements with this release include:
- Extensible and Pluggable Tracing Support
- Compartmentalized application memory organization
- Logging System Overhaul
- Introduce system calls for BSD socket APIs
- Support for IEEE 802.1AS-2011 generalized Precision Time Protocol (gPTP)
- Link Layer Discovery Protocol (LLDP) TX support
- Support for TLS and DTLS using BSD socket API
- Support for Link Layer Multicast Name Resolution (LLMNR)
- Introduced reworked ADC API and updated Nordic, NXP, Atmel, and Synopsys DesignWare drivers
- Support OS driven Power Management framework
- Basic support for Arm TrustZone in Armv8-M
The following sections provide detailed lists of changes by component.
Kernel¶
- Remove kernel event manager, replaced by generic tracing interface
- Enhanced Timeout and Tick handling in kernel
- Compartmentalized application memory organization
- Fix errno access for user mode
Architectures¶
- arch: arc: improve the reset code
- arch: arc: use a separate stack for exception handling
- arch: arc: refactor the arc stack check support
- arch: arm: stm32: enable instruction and data caches on STM32F7
- arch: arm: implement ARMv8-M MPU driver
- irq: Fix irq_lock api usage
- arch: arm: macro API for defining non-secure entry functions
- arch: arm: allow processor to ignore/recover from faults
- arm: nxp: mpu: Consolidate k64 mpu regions
- arm: Print NXP MPU error information in BusFault dump
- arch: ARM: Change the march used by cortex-m0 and cortex-m0plus
- arch: arm: integrate ARM CMSE with CMake
- arch: arm: basic Arm TrustZone-M functionality for Cortex-M23 and Cortex-M33
- arch: arm: built-in stack protection using Armv8-M SPLIM registers
- arch: arm: API for using TT intrinsics in Secure/Non-Secure Armv8-M firmware
- arch: arm: clean up MPU code for ARM and NXP
- arch: arm: Set Zero Latency IRQ to priority level zero
- arch/arm: Fix locking in __pendsv
Boards & SoC Support¶
- x86: add SoC configuration for Apollo Lake
- x86: add support for UP Squared (Pentium/Celeron)
- arc: Support Synopsys ARC nSim instruction set simulator
- riscv32: riscv-privilege: Microsemi Mi-V support
- Added support for the following Arm boards:
- efr32_slwstk6061a
- nrf52_adafruit_feather
- nrf52810_pca10040
- nrf52840_pca10059
- nucleo_f207zg
- reel_board
- stm32f723e_disco
- stm32f746g_disco
- stm32f769i_disco
- udoo_neo_full_m4
- warp7_m4
Drivers and Sensors¶
- adc: Introduced reworked API and updated Nordic, NXP, Atmel, and Synopsys DesignWare drivers
- audio: Added TLV320DAC310x audio DAC driver
- can: Added can support for STM32L432
- clock_control: Added STM32F7 family clock control
- entropy: Added support for STM32F7
- eth: Enabled gPTP support in mcux and gmac drivers
- eth: Added promiscuous mode support to native_posix
- eth: mcux: Added an option for randomized, but stable MAC address
- gpio: Added STM32F7 GPIO support
- interrupt_controller: Added STM32F7 EXTI support
- i2c: Added support for STM32F7
- i2c: Added i.MX shim driver
- i2c: Implemented slave support for stm32_v2
- i2c: Added EEPROM I2C slave driver
- i2c: Added shims for nrfx TWI and TWIM drivers
- i2s: Exposed i2s APIs to user mode
- led: Added TI LP5562 and NXP PCA9633 drivers
- modem: Added Wistron WNC-M14A2A LTE-M Modem driver
- modem: Added modem receiver (tty) driver
- pinmux: Added STM32F7 pinmux support
- pwm: Added i.MX shim driver
- pwm: Added shim for nrfx PWM HW driver
- serial: Added power management to nRF UART driver
- serial: Added STM32F7 UART support
- serial: Allow to pass arbitrary user data to irq callback
- serial: Added UARTE driver for the nRFx family
- sensor: Added adxl372, mma8451q, adt7420 drivers
- sensor: lis2dh: Fix I2C burst read/write operations
- rtc: Added support for STM32
- usb: Added support for OTG FS on STM32F2 and STM32F7
- usb: Added High Speed support for DesignWare USB
- wifi: Added SimpleLink WiFi Offload Driver (wifi_mgmt only)
Networking¶
- Introduce system calls for BSD socket APIs.
- Add IPv4 autoconf support. This adds support for IPv4 link-local addresses (169.254.*.*)
- Add TLS and DTLS support to BSD socket API. They are configured via setsockopt() API.
- Add support for IEEE 802.1AS-2011 generalized Precision Time Protocol (gPTP) for ethernet networks. A sample application is created to show how to interact with gPTP code.
- Add support for PTP clock driver. This driver will be used by gPTP supported ethernet drivers.
- Add Link Layer Discovery Protocol (LLDP) TX support.
- Add support for managing Qav credit-based shaper algorithm.
- Add generic TX timestamping support.
- Add carrier detection support to ethernet L2 driver.
- Add support for having vendor specific ethernet statistics.
- Add getter support to ethernet management interface.
- Add promiscuous mode support to network interface. A sample application is created that shows how to use the user API for getting all network packets. The native_posix ethernet driver supports promiscuous mode at this point.
- Add support for Link Layer Multicast Name Resolution (LLMNR). LLMNR is used in Microsoft Windows networks for local name resolution.
- Add API to net_pkt to prefill a network packet to a pre-defined value.
- Add IEEE 802.1Qav support to Atmel GMAC ethernet driver.
- Add hardware TX timestamping support to Atmel GMAC ethernet driver.
- Add multiple hardware queue support to Atmel GMAC ethernet driver.
- Add gPTP support to Atmel GMAC ethernet driver.
- Add support for TI SimpleLink WiFI offload driver.
- Add support for randomized but stable MAC address in NXP MCUX ethernet driver.
- Add extra prints to net-shell for ethernet based network interfaces. The supported features and priority queue information is printed.
- Add and fix string to integer conversions in net-shell.
- Allow user to configure MAC address filters into ethernet devices.
- Catch network interface ON and OFF events in DHCPv4 and renew address lease if we re-connected.
- Remove forever timeouts when waiting a new network buffer to be available.
- Relay network interface up/down command from net-shell to Linux host for native_posix ethernet driver.
- No need to join IPv6 solicited node multicast group for Bluetooth IPSP supported nodes.
- Allow external program to be started for native_posix ethernet driver. This allows for example startup of wireshark when zeth is created.
- Network packet priority and traffic class fixes and clarifications.
- Lower memory consumption in net by using packed enums when applicable.
- Correctly notify net_app server when TCP is disconnected.
- Register OpenThread used unicast and multicast IPv6 addresses for network interface.
- Enable Fast Connect policy for TI SimpleLink ethernet driver.
- Fix ieee802154 simulator driver channel/tx power settings.
- Handle large IPv6 packets properly.
- Enable gPTP support in native_posix, NXP mcux and Atmel GMAC ethernet drivers. The native_posix ethernet driver gPTP support is only for testing purposes.
- Network configuration (net_config) library split from the net_app library. (This change requires updating application configs to refer to corresponding NET_CONFIG_* options instead of NET_APP_*).
- Moving all layer 2 (L2) network code into subsys/net/l2 directory.
- Add MSS option on sending TCP SYN request.
- Fix TCP by processing zero window probes when our receive window is 0.
- IPv4, IPv6, ICMPv6, ARP code refactoring and cleanup.
- IPv6 address lifetime fixes.
- IPv6 fragmentation fixes.
- ARP fixes when using VLAN.
- Timeout too long lasting ARP requests.
- DHCPv4 fixes and timeout management refactoring.
- TCP retry, RST packet handling, and memory leak fixes.
- IP address print function enhancements.
- HTTP fix when sending the last chunk.
- MQTT fixes.
- LWM2M cleanups and fixes.
- Fix cache support in Atmel GMAC ethernet driver.
- Fix NXP MCUX ethernet driver to detect carrier lost event.
- Port native API echo-server/echo-client samples to BSD sockets API, with TLS/DTLS support.
- Handle out-of-buf situations gracefully in echo-client and echo-server sample applications.
Bluetooth¶
- New user-friendly service population using a refreshed BT_GATT_CHARACTERISTIC macro.
- Added support for Bluetooth hardware in the native_posix board, allowing developers to use the native POSIX architecture with Bluetooth.
- Added a new helper API to parse advertising data.
- Added a new flag, BT_LE_ADV_OPT_USE_NAME, to include the Bluetooth Device Name in the advertising data.
- Added support for fixed passkeys to use in bonding procedures.
- Added a new Bluetooth shell command to send arbitrary HCI commands to the controller.
- Added a new feature to support multiple local identities using a single controller.
- Added a new, board-specific mesh sample for the nRF52x series that
implements the following models:
- Generic OnOff client and server.
- Generic Level client and server.
- Generic Power OnOff client and server.
- Light Lightness client and server.
- Light CTL client and server.
- Vendor Model.
- Controller: Added a TX Power Kconfig option.
- Controller: Use the newly available nrfx utility functions to access the nRF5x hardware.
- Controller: Multiple bug fixes.
- Controller: Added support for the nRF52810 SoC from Nordic Semiconductor.
- New HCI driver quirks API to support controllers that need uncommon reset sequences.
- Host: Multiple bug fixes for GATT and SMP.
- Mesh: Multiple bug fixes.
Build and Infrastructure¶
- Kconfig: Remove redundant ‘default n’ properties
- cmake: replace PROJECT_SOURCE_DIR with ZEPHYR_BASE
- Kconfig: Switch to improved globbing statements
Libraries / Subsystems¶
- Tracing: Basic support SEGGER systemview
- Logging: Introduce a new logging subsystem
- fs/nvs: Improved nvs for larger blocksizes
- subsys: console: Refactor code to allow per-UART “tty” wrapper
HALs¶
- ext/hal: stm32cube: STM32L4: Enable legacy CAN API
- ext: Import Atmel SAMD20 header files from ASF library
- ext: gecko: Add Silabs Gecko SDK for EFR32FG1P SoCs
- drivers: add i.MX I2C driver shim
- hal: stm32f2x: Add HAL for the STM32F2x series
- ext: stm32cube: update stm32l4xx cube version
- ext: stm32cube: update stm32f7xx cube version
- ext: stm32cube: update stm32f4xx cube version
- ext: stm32cube: update stm32f3xx cube version
- ext: stm32cube: update stm32f1xx cube version
- ext: hal: nordic: Update nrfx to version 1.1.0
- net: drivers: wifi: SimpleLink WiFi Offload Driver (wifi_mgmt only)
- ext/hal/nxp/imx: Import the nxp imx6 freertos bsp
Documentation¶
- Simplified and more maintainable theme applied to documentation. Latest and previous four releases regenerated and published to https://docs.zephyrproject.org
- Updated contributing guidelines
- General organization cleanup and spell check on docs including content generated from Kconfig files and doxygen API comments.
- General improvements to documentation following code, implementation changes, and in support of new features, boards, and samples.
- Documentation generation now supported on Windows host systems (previously only linux doc generation was supported).
- PDF version of documentation can now be created
Tests and Samples¶
- Enhanced benchmarks to support userspace
- Improve test coverage for the kernel