Zephyr (operating system)
| Zephyr | |
|---|---|
| File:Zephyr RTOS logo 2015.svg Zephyr Project logo | |
| Developer | Linux Foundation, Wind River Systems |
| Written in | C |
| OS family | Real-time operating systems |
| Working state | Current |
| Source model | Open source |
| Initial release | 26 July 2016[1] |
| Latest release | 4.3.0 / 13 November 2025[2][3] |
| Repository |
|
| Marketing target | Internet of things, embedded systems |
| Available in | English |
| Supported platforms | ARM (Cortex-M, Cortex-R, Cortex-A), ARC, MIPS, Nios II, RISC-V, Xtensa, SPARC, x86, x86-64 |
| Kernel type | Microkernel (pre-v1.6)[4][5][6] Monolithic (v1.6+)[5][6] |
| License | Apache 2.0 |
| Preceded by | Wind River Rocket |
| Official website | {{ |
Zephyr (/ˈzɛf ər/) is a small real-time operating system (RTOS)[7] for connected, resource-constrained and embedded devices (with an emphasis on microcontrollers) supporting multiple architectures and released under the Apache License 2.0. Zephyr includes a kernel, and all components and libraries, device drivers, protocol stacks, file systems, and firmware updates, needed to develop full application software.[8]
It is named after Zephyrus, the ancient Greek god of the west wind.[9]
History
[edit | edit source]Zephyr originated from Virtuoso RTOS for digital signal processors (DSPs).[10][11] In 2001, Wind River Systems acquired Belgian software company Eonic Systems, the developer of Virtuoso. In November 2015, Wind River Systems renamed the operating system to Rocket, made it open-source and royalty-free.[11] Compared to Wind River's other RTOS, VxWorks, Rocket had much smaller memory needs, especially suitable for sensors and single-function embedded devices. Rocket could fit into as little as 4 KB of memory, while VxWorks needed 200 KB or more.[11]
In February 2016, Rocket became a hosted collaborative project of the Linux Foundation under the name Zephyr.[10][12][1] Wind River Systems contributed the Rocket kernel to Zephyr, but still provided Rocket to its clients, charging them for the cloud services.[13][11] As a result, Rocket became "essentially the commercial version of Zephyr".[13]
Since then, early members and supporters of Zephyr include Intel, NXP Semiconductors, Synopsys, Linaro,[14] Texas Instruments, Nordic Semiconductor, Oticon, and Bose.[15]
As of January 2025[update], Zephyr had the largest number of contributors and commits compared to other RTOSes (including Mbed, RT-Thread, NuttX, and RIOT).[16]
Features
[edit | edit source]Zephyr intends to provide all components needed to develop resource-constrained and embedded or microcontroller-based applications. This includes:[8]
- A small kernel
- A flexible configuration and build system for compile-time definition of required resources and modules
- A set of protocol stacks (IPv4 and IPv6, Constrained Application Protocol (CoAP), LwM2M, MQTT, 802.15.4, Thread, Bluetooth Low Energy, CAN)
- A virtual file system interface with several flash file systems for non-volatile storage (FatFs, LittleFS, NVS)
- Management and device firmware update mechanisms
Configuration and build system
[edit | edit source]Zephyr uses Kconfig and devicetree as its configuration systems, inherited from the Linux kernel, but implemented in Python programming language for portability to non-Unix operating systems.[17] The RTOS build system is based on CMake, which allows Zephyr applications to be built on Linux, macOS, and Microsoft Windows.[18]
West utility tool
[edit | edit source]Zephyr has a general-purpose tool called West for managing repositories, downloading programs to hardware, etc.
Kernel
[edit | edit source]Early Zephyr kernels used a dual nanokernel plus microkernel design.[4][5][6] In December 2016, with Zephyr 1.6, this changed to a monolithic kernel.[5][6]
The kernel offers several features that distinguish it from other small OSes:[8]
- Single address space
- Multiple scheduling algorithms
- Highly configurable and modular for flexibility, with resources defined at compile-time
- Memory protection unit (MPU) based protection
- Asymmetric multiprocessing (AMP, based on OpenAMP) and symmetric multiprocessing (SMP) support
Security
[edit | edit source]A group is dedicated to maintaining and improving the security.[19] Also, being owned and supported by a community means the world's open source developers are vetting the code, which significantly increases security.[12]
See also
[edit | edit source]References
[edit | edit source]- ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ a b c d Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ a b c d Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ a b c Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ a b c d Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).