https://github.com/arm-software/cmsis-stream
CMSIS-Stream software component
https://github.com/arm-software/cmsis-stream
arm cortex-m dataflow dsp embedded ml streaming
Last synced: 7 months ago
JSON representation
CMSIS-Stream software component
- Host: GitHub
- URL: https://github.com/arm-software/cmsis-stream
- Owner: ARM-software
- License: apache-2.0
- Created: 2023-05-10T14:36:34.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-06-12T07:04:27.000Z (7 months ago)
- Last Synced: 2025-06-12T07:16:26.533Z (7 months ago)
- Topics: arm, cortex-m, dataflow, dsp, embedded, ml, streaming
- Language: Python
- Homepage:
- Size: 8.7 MB
- Stars: 25
- Watchers: 7
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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](LICENSE).
## Table of contents
1. ### How to get started
1. [Simple graph creation example](Examples/simple/README.md)
2. ### How to write the Python script and the C++ wrappers
1. [How to describe the graph in Python](Documentation/WritePython.md)
2. [How to write the C++ wrappers to use your functions in the graph](Documentation/WriteCPP.md)
3. [DSP Nodes for working with CMSIS-DSP](Examples/simpledsp/README.md)
4. [Details about the generated C++ scheduler](Examples/example1/README.md)
3. ### [Examples](Examples/README.md)
4. ### API Details
1. ### [Python API for creating a graph and its scheduling](Documentation/PythonAPI.md)
2. ### [C++ default nodes for C++ wrappers](Documentation/CPPNodes.md)
3. ### [Python default nodes for Python wrappers](Documentation/PythonNodes.md)
5. ### [Memory optimizations](Documentation/Memory.md)
6. ### [Integration in a system](Documentation/Integration.md)
7. ### Extensions
1. #### [Cyclo-static scheduling](Documentation/CycloStatic.md)
2. #### [Dynamic / Asynchronous mode](Documentation/Async.md)
8. ### [Maths principles](Documentation/MATHS.md)
9. ### [FAQs](Documentation/FAQ.md)