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