Skip to main content

SA Engine Nano

SA Engine Nano is a small-footprint version of SA Engine for use on small hardware such as microcontrollers.

Platforms and installation

SA Engine Nano can be ported to any target hardware that has a C99 compliant C compiler.

Porting to customer-specific microcontrollers can be carried out in collaboration projects with Stream Analyze. A porting normally consists of two parts:

  • an executable of SA Engine that has been compiled for the platform
  • a C program that handles the SA Engine life cycle and passes relevant signals to SA Engine

These are put together in a package that is installed using the normal procedure of the respective platform.

The executable of SA Engine Nano takes up around 17 kB of RAM and around 200-400 kB of flash memory.

The microcontroller also needs to have space for the C integration code, and for the analysis models that are deployed to SA Engine. The size of the model code depends enterily on the model, from a few kB for a simple model up to a few hundred kB for a larger neural network.

A general recommendation is to have in total 64-256 kB of RAM and 256kB-1MB of flash available.

Interacting with SA Engine Nano

When using the full version of SA Engine on an edge device, it is possible to write queries and functions directly in the edge device. The most common way of working is however to connect the edge SA Engine over ethernet to an SA Federation and interact through a client interface.

SA Engine Nano does not contain the SA Engine optimizer and compiler. Instead it is connected to an SA Federation through a relay instance of SA Engine called SA Twin. The twin optimizes and cross-compiles all queries before sending them to the nano edge. The microcontroller edge is connected to the computer or device that runs SA Twin through a serial cable.

SA Nano connected to a federation through a relay

SA Nano connected to a federation through a relay.