Zephyr Kernel 1.12.0¶
We are pleased to announce the release of Zephyr kernel version 1.12.0.
Major enhancements with this release include:
Asymmetric multiprocessing (AMP) via integration of OpenAMP
Persistent storage support for Bluetooth Low Energy including Mesh
802.1Q - Virtual Local Area Network (VLAN) traffic on an Ethernet network
Support multiple concurrent filesystem devices, partitions, and FS types
Ethernet network management interface
Networking traffic prioritization on a per-connection basis
Support for Ethernet statistical counters
Support for TAP net device on the native POSIX port
Command-line Zephyr meta-tool “west”
SPI slave support
Runtime non-volatile configuration data storage system (settings)
The following sections provide detailed lists of changes by component.
Added k_thread_foreach API
kernel/sched: Fix preemption logic
kernel/sched: Fix SMP scheduling
kernel/sched: Don’t preempt cooperative threads
kernel: Scheduler rewrite
kernel: Fix sloppy wait queue API
kernel/mempool: Handle transient failure condition
kernel: handle early entropy issues
kernel: Earliest-deadline-first scheduling policy
kernel: Add “meta IRQ” thread priorities
kernel: introduce initial stack randomization
k_poll: expose to user mode
k_queue: allow user mode access via allocators
mempool: add API for malloc semantics
userspace: add support for dynamic kernel objects
arch: arc: refactor the arc stack check support
arch: arc: add the support of STACK_SENTINEL
arch: arc: optimize the _SysFatalErrorHandler
arch: arc: bug fixes in irq_load
arch: arc: bug fixes and optimization in exception handling
arch: arm: Fix zero interrupt latency priority level
arch: arm: refactor default _FaultDump to provide fatal error code
arch: arm: Define & implement API for test target (Non-Secure)
arch: arm: thread built-in stack guard implementation
arch: arm: lpc: Added support for Cortex-M0+ on lpc54114 soc
arch: arm: Secure fault handling for Cortex-M23
arch: arm: SecureFault Handling for Cortex-M33A
arch: arm: Change method of __swap processing
arm_mpu: reduce boot MPU regions for various soc
arm: userspace: fix initial user sp location
arm: userspace: Rework system call arguments
arm: syscalls: fix some register issues
dts: nios2-qemu: add device tree support
dts: nios2f: Add device tree support
dts: x86: derive RAM and ROM size from dts instead of Kconfig
dts: xtensa: Add device tree support for xtensa
newlib: fix heap user mode access for MPU devices
nxp_imx/mcimx7_m4: Added support for i.MX7 Cortex M4 core
x86: minnowboard: Enable the userspace mode
arch: x86: Unwind the stack on fatal errors
xtensa: provide XCC compiler support for Xtensa
Added support for the following Arm boards:
Added support for the following RISC-V boards:
Added support for the following Xtensa boards:
arc: Added device tree support for all ARC SoCs
arm: Renamed lpcxpresso54114 to lpcxpresso54114_m4
nios2: Added device tree support for qemu_nios2 and altera_max10
Continued adding dts support for device drivers (gpio, spi, i2c, sensors, usb)
Drivers and Sensors¶
can: Added CAN driver support for STM32 SoCs
display: Added ILI9340 LCD display driver
dma: Added dma driver for Nios-II MSGDMA core
dma: Introduce Intel CAVS DMA
ethernet: Added ethernet driver for native posix arch
gpio: Added support for i.MX GPIO
gpio: Added driver for SX1509B
gpio: Added GPIO for SAM family
gpio: Added GPIO driver for stm32l0x
i2s: Introduce CAVS I2S
ieee802154: Added OpenThread modifications to KW41Z driver
interrupts: introduce CAVS interrupt logic
interrupts: Introduce Designware interrupt controller
ipm: Added mcux ipm driver for LPC SoCs
led: Added new public API and driver support for TI LP3943
pinmux: Added pinmux driver for stm32l0x
rtc: Added mcux RTC driver for Kinetis SoCs
sensor: Added sensorhub support to lsm6dsl driver
sensor: Added trigger support to lsm6dsl
serial: Added support for i.MX UART interface
spi: Added shims for nrfx SPIS and SPIM drivers
spi: Updated mcux shim driver to new SPI API
spi: Updated sensor and radio drivers to new SPI API
usb: Added usb device driver for Kinetis USBFSOTG controller
usb: Added usb support for stml072/73, stm32f070/72
usb: Enable usb2.0 on intel_s1000
usb: Added nRF52840 USB Device Controller Driver
watchdog: Added mcux watchdog driver for Kinetis SoCs
watchdog: Added nrfx watchdog driver for NRF SoCs
wifi: Added winc1500 WiFi driver
Minimal server side websocket support.
Add network support to syslog.
Reducing net_pkt RAM usage.
TCP code refactoring. TCP code is now in one place in tcp.c
Support MSG_DONTWAIT and MSG_PEEK in recvfrom() socket call.
Support MSG_DONTWAIT in sendto() socket call.
Add support for freeaddrinfo() API.
Allow empty service in getaddrinfo() API.
Add PRIORITY support to net_context. This is working same way as SO_PRIORITY in BSD sockets API.
Add network traffic classification support to Rx and Tx paths. This allows prioritization of incoming or outgoing network traffic. Both Rx and Tx can have max 8 network queues.
Add network interface up/down command to net-shell.
Create ethernet driver for native_posix board. The driver is enabled automatically if networking is active when compiling for native_posix board.
Support network packet checksum calculation offloading. This is available for ethernet based boards.
Add support for ethernet virtual LANs (VLAN). Following ethernet drivers support VLANs: frdm_k64f, sam_e70_explained, native_posix and qemu.
Allow network statistics collection / network interface.
Add network management support to ethernet sub-system.
Add network capabilities support to ethernet network drivers. This is used for management purposes.
Allow collection of ethernet statistics. Currently only native_posix ethernet driver supports this.
Add OpenThread support for KW41Z driver.
Add initial WiFi management API definitions.
Add a shell module for controlling WiFi devices.
Add dedicated net mgmt hooks for WiFi offload devices.
Use proper IPv4 source address when sending IPv4 packets.
Add support for energy detection scan on IEEE 802.15.4 driver API.
Add support for filtering source short IEEE 802.15.4 addresses.
Add RPL border router sample application.
LWM2M code refactoring.
LWM2M OPTIONAL resource fixes.
LWM2M source port fixes.
LWM2M resource usage enhancements.
Fixing network management event ordering.
Fix ENC28J70 ethernet driver.
CoAP sample application fixes.
Network timeout fixes.
ICMPv6 error check fixes.
Net-app API port number fixes.
WPAN USB driver and sample application fixes.
BSD socket sample application fixes.
Fix IPv4 echo-request (ping) in net-shell when having multiple network interfaces.
Fixing IPv6 compile error in certain configuration.
settings-based persistent storage functionality for BLE (including CCC) and Mesh
Mesh-specific optimizations to avoid flash wear
Added a new API to set the identity address from the application
Old bt_storage API removed from the codebase
Rewrote the HCI SPI driver to comply with the new API
Added BLE support for the standard entropy driver via an ISR-friendly call
Multiple BLE Mesh bugfixes and improvements
Added option to use the identity address for advertising even when using privacy
Added support for L2CAP dynamically allocated PSM values
GATT CCC handling fixes
GATT attribute declaration macros reworked for clarity
Fixed handlng of connection cancellation in the controller
Fixed a potential assertion failure in the controller related to white list handling
Build and Infrastructure¶
build: use git version and hash for boot banner
kconfig: Drop support for CONFIG_TOOLCHAIN_VARIANT
kconfig: Remove the C Kconfig implementation
scripts: kconfig: Add a Python menuconfig implementation
scripts: west: introduce common runner configuration
scripts: debug, debugserver and flash scripts for intel_s1000
xtensa: provide XCC compiler support for Xtensa
Libraries / Subsystems¶
subsys/disk: Added support for multiple disk interfaces
subsys/fs: Added support for multiple instances of filesystem
subsys/fs: Added Virtual File system Switch (VFS) support
lib/posix: Added POSIX Mutex support
lib/posix: Added POSIX semaphore support
crypto: Updated mbedTLS to 2.9.0
Imported libmetal and OpenAMP for IPC
altera: Add modular Scatter-Gather DMA HAL driver
atmel: Added winc1500 driver from Atmel
cmsis: Update ARM CMSIS headers to version 5.3.0
nordic: Import SVD files for nRF5 SoCs
nordic: Update nrfx to version 1.0.0
nxp: imported i.MX7 FreeRTOS HAL
nxp: Added dual core startup code for lpc54114 based on mcux 2.3.0
stm32l0x: Add HAL for the STM32L0x series
Added description for kernel test cases through extensive doxygen comments
Discovered some API docs were missing, and fixed
Documentation added covering system calls and userspace, kernel, and threading APIs, POSIX compatibility, VLANs, network traffic classification, and the sanitycheck script used by CI.
Documented writing guidelines and local doc generation process
Improved Sphinx search results output (removed markup)
Improved configuration options auto-generated documentation
Significantly reduced local doc regeneration time
Tests and Samples¶
Added test for POSIX mutex
Added Apple iBeacon sample application
Enhanced threads test suite
Added tests for memory domain