CMSIS-Stream icon indicating copy to clipboard operation
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:

SDF_doc

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

  1. How to get started

    1. Simple graph creation example
  2. How to write the Python script and the C++ wrappers

    1. How to describe the graph in Python
    2. How to write the C++ wrappers to use your functions in the graph
    3. DSP Nodes for working with CMSIS-DSP
    4. Details about the generated C++ scheduler
  3. Examples

  4. API Details

    1. Python API for creating a graph and its scheduling

    2. C++ default nodes for C++ wrappers

    3. Python default nodes for Python wrappers

  5. Memory optimizations

  6. Integration in a system

  7. Extensions

    1. Cyclo-static scheduling

    2. Dynamic / Asynchronous mode

  8. Maths principles

  9. FAQs