Zephyr Project Requirements
Zephyr System Requirements

Zephyr System Requirements

STATEMENT:

SPDX-License-Identifier: Apache-2.0

1. Architecture Layer Interface
UID: ZEP-SYRS-1
STATUS: Draft
TYPE: Functional
COMPONENT: Hardware Architecture Interface
child relations:
STATEMENT:

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

USER_STORY:

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.).

2. Support multiprocessor management
UID: ZEP-SYRS-2
STATUS: Draft
TYPE: Functional
COMPONENT: Hardware Architecture Interface
parent relations:
STATEMENT:

The Zephyr RTOS shall support symmetric multiprocessing on multiple cores.

USER_STORY:

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

3. Support Subset of Standard C Library
UID: ZEP-SYRS-3
STATUS: Draft
TYPE: Functional
COMPONENT: C Library
child relations:
STATEMENT:

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

USER_STORY:

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.

4. Device Driver Abstraction
UID: ZEP-SYRS-4
STATUS: Draft
TYPE: Functional
COMPONENT: Device Drivers
STATEMENT:

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

USER_STORY:

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.

5. Fatal error and exception handling
UID: ZEP-SYRS-5
STATUS: Draft
TYPE: Functional
COMPONENT: Exception and Error Handling
STATEMENT:

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

USER_STORY:

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).

6. Common File system operation support
UID: ZEP-SYRS-6
STATUS: Draft
TYPE: Functional
COMPONENT: File Systems
STATEMENT:

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

USER_STORY:

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

7. Interrupt Management
UID: ZEP-SYRS-7
STATUS: Draft
TYPE: Functional
COMPONENT: Interrupts
child relations:
STATEMENT:

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

USER_STORY:

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.

8. Direct ISR, Platform Specific helpers.
UID: ZEP-SYRS-20
STATUS: Draft
TYPE: Functional
COMPONENT: Interrupts
parent relations: child relations:
STATEMENT:

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.

USER_STORY:

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.

9. Logging
UID: ZEP-SYRS-8
STATUS: Draft
TYPE: Functional
COMPONENT: Logging
STATEMENT:

The Zephyr RTOS shall provide a framework for logging events.

USER_STORY:

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

10. Memory Management framework
UID: ZEP-SYRS-9
STATUS: Draft
TYPE: Functional
COMPONENT: Memory Management
STATEMENT:

The Zephyr RTOS shall support a memory management framework.

USER_STORY:

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.

11. Power Management
UID: ZEP-SYRS-10
STATUS: Draft
TYPE: Functional
COMPONENT: Power Management
STATEMENT:

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

USER_STORY:

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.

12. Multi core and SMP

12.1. Multiple CPU scheduling
UID: ZEP-SYRS-11
STATUS: Draft
TYPE: Functional
COMPONENT: SMP and Multi core
STATEMENT:

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

USER_STORY:

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

12.2. Scheduling
UID: ZEP-SYRS-12
STATUS: Draft
TYPE: Functional
COMPONENT: SMP and Multi core
STATEMENT:

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

USER_STORY:

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

13. Thread Synchronization

13.1. Mutex
UID: ZEP-SYRS-13
STATUS: Draft
TYPE: Functional
COMPONENT: Mutex
STATEMENT:

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

USER_STORY:

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

13.2. Counting Semaphore
UID: ZEP-SYRS-14
STATUS: Draft
TYPE: Functional
COMPONENT: Semaphore
child relations:
STATEMENT:

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

14. Threads

14.1. Thread support
UID: ZEP-SYRS-15
STATUS: Draft
TYPE: Functional
COMPONENT: Threads
child relations:
STATEMENT:

The Zephyr RTOS shall support threads.

USER_STORY:

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

14.2. Thread management
UID: ZEP-SYRS-16
STATUS: Draft
TYPE: Functional
COMPONENT: Threads
child relations:
STATEMENT:

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

USER_STORY:

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

14.3. Thread priority
UID: ZEP-SYRS-17
STATUS: Draft
TYPE: Functional
COMPONENT: Threads
child relations:
STATEMENT:

Threads shall have a priority.

USER_STORY:

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

15. Timers
UID: ZEP-SYRS-18
STATUS: Draft
TYPE: Functional
COMPONENT: Timers
child relations:
STATEMENT:

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

USER_STORY:

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

16. Tracing
UID: ZEP-SYRS-19
STATUS: Draft
TYPE: Functional
COMPONENT: Tracing
STATEMENT:

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

USER_STORY:

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

17. Condition Variables

17.1. Condition Variables
UID: ZEP-SYRS-21
STATUS: Draft
TYPE: Non-Functional
COMPONENT: Condition Variables
child relations:
STATEMENT:

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

18. Queues

18.1. Queues data passing
UID: ZEP-SYRS-22
STATUS: Draft
TYPE: Functional
COMPONENT: Queues
STATEMENT:

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

19. LIFOs

19.1. LIFOs data passing
UID: ZEP-SYRS-23
STATUS: Draft
TYPE: Functional
COMPONENT: LIFOs
child relations:
STATEMENT:

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

20. FIFOs

20.1. FIFOs data passing
UID: ZEP-SYRS-24
STATUS: Draft
TYPE: Functional
COMPONENT: FIFOs
child relations:
STATEMENT:

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