...

Zephyr что это за программа

About the Zephyr Project

The Zephyr Project is a Linux Foundation hosted Collaboration Project. It’s an open source collaborative effort uniting developers and users in building a best-in-class small, scalable, real-time operating system (RTOS) optimized for resource-constrained devices, across multiple architectures.

The Zephyr Project is a neutral project where silicon vendors, OEMs, ODMs, ISVs, and OSVs can contribute technology to reduce costs and accelerate time to market for billions of connected embedded devices. The software is a perfect choice for simple connected sensors, LED wearables, modems, and small wireless gateways. Because Zephyr is modular and supports multiple architectures, developers can create a solution that meets their needs.

As an open source project, the community evolves the project to support new hardware, developer tools, sensors, and device drivers. Improvements are frequently delivered to incorporate enhancements in security, device management capabilities, connectivity stacks, and file systems.

Why create another RTOS?

Change is happening fast in the connected devices space, and the technical requirements are vast. No one person or company has all the answers. Collaboration is key to driving down costs and accelerating time to market. A platform to facilitate collaboration must be commercially neutral, inclusive of all contributors, and governed such that all interests are fairly represented.

That’s why the Zephyr Project was created. We’re using an open, collaborative environment to deliver an RTOS that’s open source, applicable in a wide diversity of use cases, and currently supports more than 170 hardware devices, more than any other RTOS, while giving members a clear path for upstreaming code and participating in the future roadmap.

Engage with our community. We’re happy to answer your questions and share how becoming a member of the Zephyr Project was the right choice.

Learn more about the benefits of using Zephyr in your application.

Architecture

Zephyr is a full-featured OS with an architecture that allows developers to focus on the application.

  • Highly configurable and modular
  • Supports cooperative and preemptive threading
  • Memory and resources are typically statically allocated, benefitting long-running systems
  • An integrated device driver interface
  • Offers memory protection via stack overflow protection, kernel object and device driver permission tracking, and thread isolation
  • Bluetooth® Low Energy (BLE 4.2, 5.0) support, with both controller and host, BLE Mesh
  • 802.15.4 OpenThread compliant
  • A native, fully featured and optimized networking stack
  • Supports a range of subsystems, including USB, filesystem, logging, DFU

Introduction¶

The Zephyr OS is based on a small-footprint kernel designed for use on resource-constrained and embedded systems: from simple embedded environmental sensors and LED wearables to sophisticated embedded controllers, smart watches, and IoT wireless applications.

  • ARCv2 (EM and HS) and ARCv3 (HS6X)
  • ARMv6-M, ARMv7-M, and ARMv8-M (Cortex-M)
  • ARMv7-A and ARMv8-A (Cortex-A, 32- and 64-bit)
  • ARMv7-R, ARMv8-R (Cortex-R, 32- and 64-bit)
  • Intel x86 (32- and 64-bit)
  • MIPS (MIPS32 Release 1 specification)
  • NIOS II Gen 2
  • RISC-V (32- and 64-bit)
  • SPARC V8
  • Tensilica Xtensa

The full list of supported boards based on these architectures can be found here .

Licensing¶

Zephyr is permissively licensed using 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 .

Distinguishing Features¶

Zephyr offers a large and ever growing number of features including:

Extensive suite of Kernel services

Zephyr offers a number of familiar services for development:

  • Multi-threading Services for cooperative, priority-based, non-preemptive, and preemptive threads with optional round robin time-slicing. Includes POSIX pthreads compatible API support.
  • 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 overarching, application or policy-defined, System Power Management and fine-grained, driver-defined, Device Power Management.

Zephyr provides a comprehensive set of thread scheduling choices:

  • Cooperative and Preemptive Scheduling
  • Earliest Deadline First (EDF)
  • Meta IRQ scheduling implementing “interrupt bottom half” or “tasklet” behavior
  • Timeslicing: Enables time slicing between preemptible threads of equal priority
  • Multiple queuing strategies:
    • Simple linked-list ready queue
    • Red/black tree ready queue
    • Traditional multi-queue ready queue

    Allows an application to incorporate only the capabilities it needs as it needs them, and to specify their quantity and size.

    Cross Architecture

    Supports a wide variety of supported boards with different CPU architectures and developer tools. Contributions have added support for an increasing number of SoCs, platforms, and drivers.

    Memory Protection

    Implements configurable architecture-specific stack-overflow protection, kernel object and device driver permission tracking, and thread isolation with thread-level memory protection on x86, ARC, and ARM architectures, userspace, and memory domains.

    For platforms without MMU/MPU and memory constrained devices, supports combining 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.

    Compile-time resource definition

    Allows system resources to be defined at compile-time, which reduces code size and increases performance for resource-limited systems.

    Optimized Device Driver Model

    Provides a consistent device model for configuring the drivers that are part of the platform/system and a consistent model for initializing all the drivers configured into the system and allows the reuse of drivers across platforms that have common devices/IP blocks.

    Devicetree Support

    Use of devicetree to describe hardware. Information from devicetree is used to create the application image.

    Native Networking Stack supporting multiple protocols

    Networking support is fully featured and optimized, including LwM2M and BSD sockets compatible support. OpenThread support (on Nordic chipsets) is also provided — a mesh network designed to securely and reliably connect hundreds of products around the home.

    Bluetooth Low Energy 5.0 support

    Bluetooth 5.0 compliant (ESR10) and Bluetooth Low Energy Controller support (LE Link Layer). Includes Bluetooth mesh and a Bluetooth qualification-ready Bluetooth controller.

    • Generic Access Profile (GAP) with all possible LE roles
    • Generic Attribute Profile (GATT)
    • Pairing support, including the Secure Connections feature from Bluetooth 4.2
    • Clean HCI driver abstraction
    • Raw HCI interface to run Zephyr as a Controller instead of a full Host stack
    • Verified with multiple popular controllers
    • Highly configurable
    • Relay, Friend Node, Low-Power Node (LPN) and GATT Proxy features
    • Both Provisioning bearers supported (PB-ADV & PB-GATT)
    • Highly configurable, fitting in devices with at least 16k RAM

    A command-line CMake build environment runs on popular developer OS systems. A native POSIX port lets you build and run Zephyr as a native application on Linux and other OSes, aiding development and testing.

    Virtual File System Interface with LittleFS and FATFS Support

    LittleFS and FATFS Support, FCB (Flash Circular Buffer) for memory constrained applications, and file system enhancements for logging and configuration.

    Powerful multi-backend logging Framework

    Support for log filtering, object dumping, panic mode, multiple backends (memory, networking, filesystem, console, …) and integration with the shell subsystem.

    User friendly and full-featured Shell interface

    A multi-instance shell subsystem with user-friendly features such as autocompletion, wildcards, coloring, metakeys (arrows, backspace, ctrl+u, etc.) and history. Support for static commands and dynamic sub-commands.

    Settings on non-volatile storage

    The settings subsystem gives modules a way to store persistent per-device configuration and runtime state. Settings items are stored as key-value pair strings.

    Non-volatile storage (NVS)

    NVS allows storage of binary blobs, strings, integers, longs, and any combination of these.

    Native POSIX port

    Supports running Zephyr as a Linux application with support for various subsystems and networking.

    Community Support¶

    Community support is provided via mailing lists and Discord; see the Resources below for details.

    Resources¶

    Here’s a quick summary of resources to help you find your way around:

    • Help: Asking for Help Tips
    • Documentation: http://docs.zephyrproject.org (Getting Started Guide)
    • Source Code: https://github.com/zephyrproject-rtos/zephyr is the main repository; https://elixir.bootlin.com/zephyr/latest/source contains a searchable index
    • Releases: https://github.com/zephyrproject-rtos/zephyr/releases
    • Samples and example code: see Sample and Demo Code Examples
    • Mailing Lists: users @ lists . zephyrproject . org and devel @ lists . zephyrproject . org are the main user and developer mailing lists, respectively. You can join the developer’s list and search its archives at Zephyr Development mailing list. The other Zephyr mailing list subgroups have their own archives and sign-up pages.
    • Nightly CI Build Status: https://lists.zephyrproject.org/g/builds The builds @ lists . zephyrproject . org mailing list archives the CI nightly build results.
    • Chat: Real-time chat happens in Zephyr’s Discord Server. Use this Discord Invite to register.
    • Contributing: see the Contribution Guide
    • Wiki: Zephyr GitHub wiki
    • Issues: https://github.com/zephyrproject-rtos/zephyr/issues
    • Security Issues: Email vulnerabilities @ zephyrproject . org to report security issues; also see our Security documentation. Security issues are tracked separately at https://zephyrprojectsec.atlassian.net.
    • Zephyr Project Website: https://zephyrproject.org

    Fundamental Terms and Concepts¶

    © Copyright 2015-2023 Zephyr Project members and individual contributors. Last updated on Sep 24, 2023.

    What is Zephyr?

    Zephyr for JIRA is a native application that exists in JIRA and brings quality test management capabilities to any JIRA project. When Zephyr is used with JIRA, the test can be created, viewed in any JIRA project, and executed immediately or as part of a testing cycle that may be linked to other issues. The detailed testing metrics can be tracked via customizable Zephyr gadgets.

    Features of Zephyr for JIRA

    • Native to JIRA allowing users to test right inside JIRA
    • Testing is integrated into the project cycles and it enables you to track software quality and make empowered go/no-go decisions.
    • Create, Plan, and Execute Tests
    • Create, view, and modify test steps and attachments for individual tests. Build test execution cycles, execute the tests, and link defects to specific tests.
    • Track Quality Metrics
    • Zephyr provides easy-to-use dashboard which provides testing metrics on the testing activities throughout every project.

    How to install and configure Zephyr?

    1. Login as JIRA Administrator.
    2. Click on Add-ons.

    3. Search for Zephyr plugin.

    4. If the plugin has successfully installed, You will see the Tests menu on the top menu bar. If you do not see Tests in the menu bar, simply refresh your screen.

    5. Go to Projects.

    6. Click on the project you have just created. In this example, I am adding Zephyr into “demo-qa” project.

    7. On the left navigation bar, there is an Issue Type Schemes link. Click on it to add a new issue type. Here you should drag and drop issue type Test into the box Issue Types for Current Scheme. When you are finished click on save.

    8. Now click on the TestsCreate and note you are now able to select issue type “Test”.

    При подготовке материала использовались источники:
    https://zephyrproject.org/learn-about/
    https://d25yug97gus487.cloudfront.net/latest/introduction/index.html
    https://medium.com/automationmaster/installing-and-configuring-zephyr-for-jira-af57708b0980

Оцените статью