Zephyr Project Requirements
Zephyr System Requirements

Zephyr System Requirements

UID:
VERSION:
CLASSIFICATION:
PREFIX:
ZEP-SYRS-
Type
Level
UID
STATUS
TYPE
COMPONENT
REFS
Title
Statement
USER_STORY
TEXT

SPDX-License-Identifier: Apache-2.0

SECTION
1
Atomic Service
REQUIREMENT
1.1
ZEP-SYRS-26
Draft
Functional
Atomic Service
ZEP-SYRS-26
Atomic Service

The Zephyr RTOS shall provide an interface to perform atomic operations on variables, guaranteeing that all reads and writes are free from tearing across all processors.

REQUIREMENT
2
ZEP-SYRS-3
Draft
Functional
C Library
ZEP-SYRS-3
Support Subset of Standard C Library

The Zephyr RTOS shall support a subset of the standard C library.

As a Zephyr RTOS user I want to have a selection of standard C library implementations e.g. a full extend and a minimal with a smaller footprint or a particular fast executing implementation.

SECTION
3
Condition Variables
REQUIREMENT
3.1
ZEP-SYRS-21
Draft
Non-Functional
Condition Variables
ZEP-SYRS-21
Condition Variables

The Zephyr RTOS shall provide a framework to synchronize threads based on a condition variable.

REQUIREMENT
4
ZEP-SYRS-4
Draft
Functional
Device Drivers
ZEP-SYRS-4
Device Driver Abstraction

The Zephyr RTOS shall provide a framework for managing device drivers and peripherals.

As a Zephyr RTOS user I want my application to be portable between different MCU architectures (ARM Cortex-M/A, Intel x86, RISCV etc.) and MCU vendors (STM, NXP, Intel, etc.) without having to change the MCU peripherals access.

REQUIREMENT
5
ZEP-SYRS-5
Draft
Functional
Exception and Error Handling
ZEP-SYRS-5
Fatal error and exception handling

The Zephyr RTOS shall provide a framework for error and exception handling.

As a Zephyr RTOS user I want errors and exceptions to handled and react according to my applications requirements (e.g. reach/establish the applications safety state).

SECTION
6
Events
REQUIREMENT
6.1
ZEP-SYRS-27
Draft
Functional
Events
ZEP-SYRS-27
Events

The Zephyr RTOS shall provide a mechanism to synchronize threads based on a set of events.

As a Zephyr RTOS user I want a thread to wait until one or more application-defined events have occurred so that it can coordinate its execution with other threads and ISRs.

SECTION
7
FIFOs
REQUIREMENT
7.1
ZEP-SYRS-24
Draft
Functional
FIFOs
ZEP-SYRS-24
FIFOs data passing

The Zephyr RTOS shall implement FIFOs which can be used to pass data between threads and interrupt service routines.

REQUIREMENT
8
ZEP-SYRS-6
Draft
Functional
File Systems
ZEP-SYRS-6
Common File system operation support

The Zephyr RTOS shall provide a framework for managing file system access.

As a Zephyr RTOS user I want a posix / c like file system access to store data.

REQUIREMENT
9
ZEP-SYRS-1
Draft
Functional
Hardware Architecture Interface
ZEP-SYRS-1
Architecture Layer Interface

The Zephyr RTOS shall provide a framework to communicate with a set of hardware architectural services.

As a Zephyr RTOS user I want to be able to easily switch my application to a different MCU architecture (x86, ARM Cortex-M/A, RISCV etc.).

REQUIREMENT
10
ZEP-SYRS-2
Draft
Functional
Hardware Architecture Interface
ZEP-SYRS-2
Support multiprocessor management

The Zephyr RTOS shall support symmetric multiprocessing on multiple cores.

As a Zephyr RTOS user I want to use Zephyr OS on multi core (SMP-)MCUs/MPUs.

REQUIREMENT
11
ZEP-SYRS-7
Draft
Functional
Interrupts
ZEP-SYRS-7
Interrupt Management

The Zephyr RTOS shall provide a framework for interrupt and interrupt service routine management.

As the Zephyr RTOS user I want the Kernel to provide abstracted interfaces to the platform enabling me to implement standard interrupts interrupt service routines without detailed knowledge of the platform architecture and programming model.

REQUIREMENT
12
ZEP-SYRS-20
Draft
Functional
Interrupts
ZEP-SYRS-20
Direct ISR, Platform Specific helpers.

Zephyr RTOS shall support development of direct ISRs by providing platform specific code fragments and factory functions including, minimal header instructions, minimal footer instructions, low power termination, and ISR construction.

As the Zephyr RTOS user I want the Kernel to provide support for implementing standard low latency and low power interrupt service routines without detailed knowledge of the platform architecture and programming model.

SECTION
13
Kernel Timing
REQUIREMENT
13.1
ZEP-SYRS-28
Draft
Functional
Kernel Timing
ZEP-SYRS-28
Time measurement

The Zephyr RTOS shall provide services to measure the passage of time.

As a Zephyr RTOS user I want to measure elapsed time so that I can implement time-dependent application behavior.

REQUIREMENT
13.2
ZEP-SYRS-34
Draft
Functional
Kernel Timing
ZEP-SYRS-34
Delaying thread execution

The Zephyr RTOS shall provide services to delay the execution of a thread for a period of time.

As a Zephyr RTOS user I want to delay a thread for a defined period so that I can pace my application against the passage of real time.

REQUIREMENT
13.3
ZEP-SYRS-35
Draft
Functional
Kernel Timing
ZEP-SYRS-35
Timeout specification

The Zephyr RTOS shall provide a means to specify the timeout of a kernel operation as a relative duration or as an absolute point in time.

As a Zephyr RTOS user I want to express when a kernel operation times out either as a delay from the current time or as a fixed point in time so that recurring operations do not accumulate drift.

SECTION
14
LIFOs
REQUIREMENT
14.1
ZEP-SYRS-23
Draft
Functional
LIFOs
ZEP-SYRS-23
LIFOs data passing

The Zephyr RTOS shall implement a LIFOs which can be used to pass data between threads and interrupt service routines.

REQUIREMENT
15
ZEP-SYRS-8
Draft
Functional
Logging
ZEP-SYRS-8
Logging

The Zephyr RTOS shall provide a framework for logging events.

As a Zephyr RTOS user I want to be able to log application defined events as well as framework exceptions.

SECTION
16
Mailboxes
REQUIREMENT
16.1
ZEP-SYRS-25
Draft
Functional
Mailboxes
ZEP-SYRS-25
Mailboxes

The Zephyr RTOS shall provide a framework to pass messages of arbitrary size between threads.

REQUIREMENT
17
ZEP-SYRS-9
Draft
Functional
Memory Management
ZEP-SYRS-9
Memory Management framework

The Zephyr RTOS shall support a memory management framework.

As a Zephyr RTOS user I want memory to be allocated and protected to my application threads preventing mistakenly access to foreign memory as far as the hardware allows.

SECTION
18
Message Queues
REQUIREMENT
18.1
ZEP-SYRS-31
Draft
Functional
Message Queues
ZEP-SYRS-31
Message Queues

The Zephyr RTOS shall provide a mechanism for threads and interrupt service routines to asynchronously exchange fixed-size data items.

SECTION
19
Multi core and SMP
REQUIREMENT
19.1
ZEP-SYRS-11
Draft
Functional
SMP and Multi core
ZEP-SYRS-11
Multiple CPU scheduling

The Zephyr RTOS shall support scheduling of threads on multiple hardware CPUs.

As a Zephyr RTOS user I want Zephyr OS to run on MCUs/CPUs with one or more CPU cores.

REQUIREMENT
19.2
ZEP-SYRS-12
Draft
Functional
SMP and Multi core
ZEP-SYRS-12
Scheduling

The Zephyr RTOS shall provide an interface to assign a thread to a specific CPU.

As a Zephyr RTOS user, I want to be able to control which thread will run on which CPU.

REQUIREMENT
20
ZEP-SYRS-10
Draft
Functional
Power Management
ZEP-SYRS-10
Power Management

The Zephyr RTOS shall provide an interface to control hardware power states.

As a Zephyr RTOS user I want to be able to control the power mode of the MCU and its peripherals to take advantage of the hardware features and to be able to implement low power or battery driven long life applications.

SECTION
21
Pipes
REQUIREMENT
21.1
ZEP-SYRS-32
Draft
Functional
Pipes
ZEP-SYRS-32
Pipes

The Zephyr RTOS shall provide a mechanism to transfer a stream of bytes between threads.

SECTION
22
Polling
REQUIREMENT
22.1
ZEP-SYRS-33
Draft
Functional
Polling
ZEP-SYRS-33
Polling

The Zephyr RTOS shall provide a mechanism for a thread to wait concurrently for any one of multiple conditions to be satisfied.

SECTION
23
Queues
REQUIREMENT
23.1
ZEP-SYRS-22
Draft
Functional
Queues
ZEP-SYRS-22
Queues data passing

The Zephyr RTOS shall implement a queue which can be used to pass data between threads and interrupt service routines.

SECTION
24
Stacks
REQUIREMENT
24.1
ZEP-SYRS-30
Draft
Functional
Stacks
ZEP-SYRS-30
Stacks

The Zephyr RTOS shall implement a stack which can be used to pass data between threads and interrupt service routines.

SECTION
25
Thread Synchronization
REQUIREMENT
25.1
ZEP-SYRS-13
Draft
Functional
Mutex
ZEP-SYRS-13
Mutex

The Zephyr RTOS shall provide an interface for managing communication between threads.

As a Zephyr RTOS user I want to able to exchange information between threads in a thread-safe manner guaranteeing data consistence.

REQUIREMENT
25.2
ZEP-SYRS-14
Draft
Functional
Semaphore
ZEP-SYRS-14
Counting Semaphore

The system shall implement a semaphore synchronization primitive for coordinating access to shared resources among multiple threads.

SECTION
26
Threads
REQUIREMENT
26.1
ZEP-SYRS-15
Draft
Functional
Threads
ZEP-SYRS-15
Thread support

The Zephyr RTOS shall support threads.

As a Zephyr RTOS user, I want to be able to have support for the kernel objects named threads for processing work.

REQUIREMENT
26.2
ZEP-SYRS-16
Draft
Functional
Threads
ZEP-SYRS-16
Thread management

The Zephyr RTOS shall provide a framework for managing multiple threads of execution.

As a Zephyr RTOS user, I want to be able to manage the execute of multiple threads with different priorities.

REQUIREMENT
26.3
ZEP-SYRS-17
Draft
Functional
Threads
ZEP-SYRS-17
Thread priority

Threads shall have a priority.

As a Zephyr RTOS user, I want to be able to give my threads different priorities for execution.

REQUIREMENT
27
ZEP-SYRS-18
Draft
Functional
Timers
ZEP-SYRS-18
Timers

The Zephyr RTOS shall provide a framework for managing time-based events.

As a Zephyr RTOS user, I want to start, suspend, resume and stop timers which shall trigger an event on a set expiration time.

REQUIREMENT
28
ZEP-SYRS-19
Draft
Functional
Tracing
ZEP-SYRS-19
Tracing

Zepyhr shall provide a framework mechanism for tracing low level system operations (NOTE: system calls, interrupts, kernel calls, thread, synchronization, etc.).

As a Zephyr RTOS user, I want to be able to trace different OS operations.

SECTION
29
Work Queues
REQUIREMENT
29.1
ZEP-SYRS-37
Draft
Functional
Work Queues
ZEP-SYRS-37
Work Queues

The Zephyr RTOS shall provide a framework to offload the processing of work items to a dedicated thread.

As a Zephyr RTOS user I want an ISR or a high-priority thread to defer non-urgent processing to a lower-priority thread so that time-sensitive processing is not impacted.