The Zephyr OS is based on a small-footprint kernel designed for use on resource-constrained systems: from simple embedded environmental sensors and LED wearables to sophisticated smart watches and IoT wireless gateways.
The Zephyr kernel supports multiple architectures, including ARM Cortex-M, Intel x86, ARC, NIOS II, Tensilica Xtensa, and RISC-V. The full list of supported boards can be found here.
Zephyr uses the Apache 2.0 license (as found in the LICENSE file in the project’s GitHub repo). There are some imported or reused components of the Zephyr project that use other licensing, as described in Licensing of Zephyr Project components.
The Zephyr kernel offers a number of features that distinguish it from other small-footprint OSes:
- Single address-space. Combines application-specific code with a custom kernel to create a monolithic image that gets loaded and executed on a system’s hardware. Both the application code and kernel code execute in a single shared address space.
- Highly configurable. Allows an application to incorporate only the capabilities it needs as it needs them, and to specify their quantity and size.
- Compile-time resource definition. Allows system resources to be defined at compile-time, which reduces code size and increases performance.
- Minimal error checking. Provides minimal runtime error checking to reduce code size and increase performance. An optional error-checking infrastructure is provided to assist in debugging during application development.
- Extensive suite of services. Offers a number of familiar services
- Multi-threading Services for priority-based, non-preemptive and preemptive threads with optional round robin time-slicing.
- Interrupt Services for compile-time registration of interrupt handlers.
- Memory Allocation Services for dynamic allocation and freeing of fixed-size or variable-size memory blocks.
- Inter-thread Synchronization Services for binary semaphores, counting semaphores, and mutex semaphores.
- Inter-thread Data Passing Services for basic message queues, enhanced message queues, and byte streams.
- Power Management Services such as tickless idle and an advanced idling infrastructure.
The Zephyr Project Developer Community includes developers from member organizations and the general community all joining in the development of software within the Zephyr Project. Members contribute and discuss ideas, submit bugs and bug fixes, and provide training. They also help those in need through the community’s forums such as mailing lists and IRC channels. Anyone can join the developer community and the community is always willing to help its members and the User Community to get the most out of the Zephyr Project.
Welcome to the Zephyr community!
Here’s a quick summary of resources to find your way around the Zephyr Project support systems:
Zephyr Project Website: The https://zephyrproject.org website is the central source of information about the Zephyr Project. On this site, you’ll find background and current information about the project as well as all the relevant links to project material. For a quick start, refer to the Zephyr Introduction and Getting Started Guide.
Releases: Source code for Zephyr kernel releases are available at https://zephyrproject.org/developers/#downloads. On this page, you’ll find release information, and links to download or clone source code from our GitHub repository. You’ll also find links for the Zephyr SDK, a moderated collection of tools and libraries used to develop your applications.
Source Code in GitHub: Zephyr Project source code is maintained on a public GitHub repository at https://github.com/zephyrproject-rtos/zephyr. You’ll find information about getting access to the repository and how to contribute to the project in this Contribution Guide document.
Samples Code: In addition to the kernel source code, there are also many documented Sample and Demo Code Examples that can help show you how to use Zephyr services and subsystems.
Documentation: Extensive Project technical documentation is developed along with the Zephyr kernel itself, and can be found at https://zephyrproject.org/doc. Additional documentation is maintained in the Zephyr GitHub wiki.
Issue Reporting and Tracking: Requirements and Issue tracking is done in the Github issues system: https://github.com/zephyrproject-rtos/zephyr/issues. You can browse through the reported issues and submit issues of your own.
Security-related Issue Reporting and Tracking: For security-related inquiries or reporting suspected security-related bugs in the Zephyr OS, please send email to email@example.com. We will assess and fix flaws according to our security policy outlined in the Zephyr Project Security Overview.
Security related issue tracking is done in JIRA. The location of this JIRA is https://zephyrprojectsec.atlassian.net.
Mailing List: The Zephyr Mailing Lists are perhaps the most convenient way to track developer discussions and to ask your own support questions to the Zephyr project community. You can also read through message archives to follow past posts and discussions, a good thing to do to discover more about the Zephyr project.
IRC Chatting: You can chat online with the Zephyr project developer community and other users in our IRC channel #zephyrproject on the freenode.net IRC server. You can use the http://webchat.freenode.net web client or use a client-side application such as pidgin.