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.
Kernel¶
- 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
Architectures¶
- 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
Boards¶
- Added support for the following Arm boards:
- 96b_argonkey
- adafruit_feather_m0_basic_proto
- colibri_imx7d_m4
- dragino_lsn50
- lpcxpresso54114_m0
- nrf51_ble400
- nrf52_pca20020
- nucleo_f070rb
- nucleo_f446re
- nucleo_l053r8
- nucleo_l073rzA
- olimex_stm32_h407
- stm32f0_disco
- Added support for the following RISC-V boards:
- hifive1
- Added support for the following Xtensa boards:
- intel_s1000_crb
- 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
Networking¶
- 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.
Bluetooth¶
- 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
HALs¶
- 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
Documentation¶
- 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 compability, 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