1.. _introducing_zephyr: 2 3Introduction 4############ 5 6The Zephyr OS is based on a small-footprint kernel designed for use on 7resource-constrained and embedded systems: from simple embedded environmental 8sensors and LED wearables to sophisticated embedded controllers, smart 9watches, and IoT wireless applications. 10 11The Zephyr kernel supports multiple architectures, including: 12 - ARC EM and HS 13 - ARMv6-M, ARMv7-M, and ARMv8-M (Cortex-M) 14 - ARMv7-A and ARMv8-A (Cortex-A, 32- and 64-bit) 15 - ARMv7-R, ARMv8-R (Cortex-R, 32- and 64-bit) 16 - Intel x86 (32- and 64-bit) 17 - NIOS II Gen 2 18 - RISC-V (32- and 64-bit) 19 - SPARC V8 20 - Tensilica Xtensa 21 22The full list of supported boards based on these architectures can be found :ref:`here <boards>`. 23 24Licensing 25********* 26 27Zephyr is permissively licensed using the `Apache 2.0 license`_ 28(as found in the ``LICENSE`` file in the 29project's `GitHub repo`_). There are some 30imported or reused components of the Zephyr project that use other licensing, 31as described in :ref:`Zephyr_Licensing`. 32 33.. _Apache 2.0 license: 34 https://github.com/zephyrproject-rtos/zephyr/blob/main/LICENSE 35 36.. _GitHub repo: https://github.com/zephyrproject-rtos/zephyr 37 38 39Distinguishing Features 40*********************** 41 42Zephyr offers a large and ever growing number of features including: 43 44**Extensive suite of Kernel services** 45 Zephyr offers a number of familiar services for development: 46 47 * *Multi-threading Services* for cooperative, priority-based, 48 non-preemptive, and preemptive threads with optional round robin 49 time-slicing. Includes POSIX pthreads compatible API support. 50 51 * *Interrupt Services* for compile-time registration of interrupt handlers. 52 53 * *Memory Allocation Services* for dynamic allocation and freeing of 54 fixed-size or variable-size memory blocks. 55 56 * *Inter-thread Synchronization Services* for binary semaphores, 57 counting semaphores, and mutex semaphores. 58 59 * *Inter-thread Data Passing Services* for basic message queues, enhanced 60 message queues, and byte streams. 61 62 * *Power Management Services* such as tickless idle and an advanced idling 63 infrastructure. 64 65**Multiple Scheduling Algorithms** 66 Zephyr provides a comprehensive set of thread scheduling choices: 67 68 * Cooperative and Preemptive Scheduling 69 * Earliest Deadline First (EDF) 70 * Meta IRQ scheduling implementing "interrupt bottom half" or "tasklet" 71 behavior 72 * Timeslicing: Enables time slicing between preemptible threads of equal 73 priority 74 * Multiple queuing strategies: 75 76 * Simple linked-list ready queue 77 * Red/black tree ready queue 78 * Traditional multi-queue ready queue 79 80**Highly configurable / Modular for flexibility** 81 Allows an application to incorporate *only* the capabilities it needs as it 82 needs them, and to specify their quantity and size. 83 84**Cross Architecture** 85 Supports a wide variety of :ref:`supported boards<boards>` with different CPU 86 architectures and developer tools. Contributions have added support 87 for an increasing number of SoCs, platforms, and drivers. 88 89**Memory Protection** 90 Implements configurable architecture-specific stack-overflow protection, 91 kernel object and device driver permission tracking, and thread isolation 92 with thread-level memory protection on x86, ARC, and ARM architectures, 93 userspace, and memory domains. 94 95 For platforms without MMU/MPU and memory constrained devices, supports 96 combining application-specific code with a custom kernel to create a 97 monolithic image that gets loaded and executed on a system's hardware. Both 98 the application code and kernel code execute in a single shared address 99 space. 100 101**Compile-time resource definition** 102 Allows system resources to be defined at compile-time, which reduces code 103 size and increases performance for resource-limited systems. 104 105**Optimized Device Driver Model** 106 Provides a consistent device model for configuring the drivers that are part 107 of the platform/system and a consistent model for initializing all the 108 drivers configured into the system and Allows the reuse of drivers across 109 platforms that have common devices/IP blocks 110 111**Devicetree Support** 112 Use of :ref:`devicetree <dt-guide>` to describe hardware. 113 Information from devicetree is used to create the application image. 114 115**Native Networking Stack supporting multiple protocols** 116 Networking support is fully featured and optimized, including LwM2M and BSD 117 sockets compatible support. OpenThread support (on Nordic chipsets) is also 118 provided - a mesh network designed to securely and reliably connect hundreds 119 of products around the home. 120 121**Bluetooth Low Energy 5.0 support** 122 Bluetooth 5.0 compliant (ESR10) and Bluetooth Low Energy Controller support 123 (LE Link Layer). Includes Bluetooth mesh and a Bluetooth qualification-ready 124 Bluetooth controller. 125 126 * Generic Access Profile (GAP) with all possible LE roles. 127 * GATT (Generic Attribute Profile) 128 * Pairing support, including the Secure Connections feature from Bluetooth 129 4.2 130 * Clean HCI driver abstraction 131 * Raw HCI interface to run Zephyr as a Controller instead of a full Host 132 stack 133 * Verified with multiple popular controllers 134 * Highly configurable 135 136 Mesh Support: 137 138 * Relay, Friend Node, Low-Power Node (LPN) and GATT Proxy features 139 * Both Provisioning bearers supported (PB-ADV & PB-GATT) 140 * Highly configurable, fitting in devices with at least 16k RAM 141 142**Native Linux, macOS, and Windows Development** 143 A command-line CMake build environment runs on popular developer OS 144 systems. A native POSIX port, lets you build and run Zephyr as a native 145 application on Linux and other OSes, aiding development and testing. 146 147**Virtual File System Interface with LittleFS and FATFS Support** 148 LittleFS and FATFS Support, 149 FCB (Flash Circular Buffer) for memory constrained applications, and 150 file system enhancements for logging and configuration. 151 152**Powerful multi-backend logging Framework** 153 Support for log filtering, object dumping, panic mode, multiple backends 154 (memory, networking, filesystem, console, ..) and integration with the shell 155 subsystem. 156 157**User friendly and full-featured Shell interface** 158 A multi-instance shell subsystem with user-friendly features such as 159 autocompletion, wildcards, coloring, metakeys (arrows, backspace, ctrl+u, 160 etc.) and history. Support for static commands and dynamic sub-commands. 161 162**Settings on non-volatile storage** 163 The settings subsystem gives modules a way to store persistent per-device 164 configuration and runtime state. Settings items are stored as key-value pair 165 strings. 166 167**Non-volatile storage (NVS)** 168 NVS allows storage of binary blobs, strings, integers, longs, and any 169 combination of these. 170 171**Native POSIX port** 172 Supports running Zephyr as a Linux application with support for various 173 subsystems and networking. 174 175 176.. include:: ../../README.rst 177 :start-after: start_include_here 178 179 180Fundamental Terms and Concepts 181****************************** 182 183See :ref:`glossary` 184