CMSIS-Stream
CMSIS-Stream copied to clipboard
CMSIS-Stream software component
CMSIS-Stream
CMSIS-Stream is a Python package and small set of C++ headers that can be used on embedded devices to process streams of samples with :
- low memory usage
- minimal overhead
- deterministic scheduling
- modular design
- graphical representation
CMSIS-Stream makes it easier to build streaming solutions by connecting components into a graph and computing a scheduling of this graph at build time with several memory optimizations.
Stream of samples are processed by this graph as illustrated on the following animation:

Python is used to:
-
Describe the graph
-
Generate a static scheduling of this graph that is computed at build time with several memory optimizations.
-
Generate the code for this scheduler as a simple C++ file (with a C API).
- The scheduler can be run on bare metal devices. There is no dependencies to any RTOS. The scheduler is a sequence of function calls
-
Generate a graphical representation of the graph
C++ is only used for strong types and static typing (template). The only part of the C++ library that is used is the memory allocator to create the objects.
License Terms
CMSIS-Stream is licensed under Apache License 2.0.
Table of contents
-
How to get started
- Simple graph creation example
-
How to write the Python script and the C++ wrappers
- How to describe the graph in Python
- How to write the C++ wrappers to use your functions in the graph
- DSP Nodes for working with CMSIS-DSP
- Details about the generated C++ scheduler
-
Examples
-
API Details
-
Python API for creating a graph and its scheduling
-
C++ default nodes for C++ wrappers
-
Python default nodes for Python wrappers
-
-
Memory optimizations
-
Integration in a system
-
Extensions
-
Cyclo-static scheduling
-
Dynamic / Asynchronous mode
-
-
Maths principles
-
FAQs