MCU Frameworks

code

MCU Inference Runtimes

TensorFlow Lite for Microcontrollers

Google's C++ inference runtime designed for MCUs with no OS, no dynamic memory allocation, and no standard C library dependencies. The reference implementation for TinyML. Supports Cortex-M, ESP32, Arduino, and more via a flat .tflite model.

Key Features
  • No OS or dynamic allocation required
  • Minimal C++ runtime (~20 KB Flash)
  • Flatbuffer .tflite model format
  • INT8 quantized inference (CMSIS-NN backend)
  • Supports Cortex-M0 through M7, ESP32, AVR
Similar Technologies
microTVMEdge Impulse EONCMSIS-NN direct
Edge Impulse

End-to-end cloud platform for building and deploying TinyML models. Covers data collection, labelling, training, compression with the EON Compiler, and SDK export for dozens of MCU targets. Ideal for rapid prototyping and teams without deep ML backgrounds.

Key Features
  • Web-based data collection & labelling
  • AutoML + transfer learning pipelines
  • EON Compiler: optimises for RAM/Flash target
  • Hardware profiling before deployment
  • OTA model update support
Similar Technologies
TFLite Micro + manual pipelineSensiMLNanoEdge AI Studio (STM32)
Apache TVM / microTVM

Compiler-based approach: lower a model (ONNX, TFLite, PyTorch) through Apache TVM's Relay IR and compile to optimised bare-metal C for a specific MCU. Achieves the lowest latency of any framework through target-specific code generation.

Key Features
  • Accepts ONNX, TFLite, PyTorch, MXNet
  • Target-specific kernel auto-tuning (AutoTVM)
  • Minimal 4 KB runtime footprint
  • No OS dependency
  • Supports custom accelerators via BYOC
Similar Technologies
TFLite MicroIREE microGlow (Meta)
CMSIS-NN

ARM's hand-optimised neural network kernel library for Cortex-M processors. Uses SIMD intrinsics (DSP extension) to perform INT8 MAC operations as fast as the hardware allows. Used internally by TFLite Micro and microTVM as a backend.

Key Features
  • Hand-written ARM Cortex-M assembly/C
  • SIMD INT8 dot-product instructions
  • Kernels: conv, depthwise, FC, pooling, ReLU
  • Cortex-M4/M7/M33/M55 optimised variants
  • Used as backend by TFLite Micro
Similar Technologies
Custom RISC-V kernelsESP-NN (Espressif)NMSIS-NN (RISC-V)
Emlearn

Converts scikit-learn classical ML models (decision trees, random forests, k-NN, PCA) to tiny C code that runs on any MCU. Perfect when neural networks are overkill — decision trees for vibration classification can fit in under 1 KB.

Key Features
  • Exports scikit-learn models to C
  • Decision trees, random forests, SVM
  • PCA for dimensionality reduction
  • Models as small as 100 bytes
  • Zero dependencies, pure C output
Similar Technologies
m2cgensklearn-portermicroML
EloquentTinyML

Arduino-friendly wrapper around TFLite Micro. Simplifies model loading from a C header array and inference to a few lines of Arduino code. Ideal for hobbyist projects on Arduino Nano 33 BLE Sense, Raspberry Pi Pico, etc.

Key Features
  • Arduino library (PlatformIO / Arduino IDE)
  • Load model from PROGMEM header array
  • Simple predict() API
  • Works with Edge Impulse exported headers
  • Community tutorials for common use cases
Similar Technologies
TFLite Micro directEdge Impulse Arduino SDKTensorFlowLite_ESP32
table_chart

Framework Comparison

FrameworkMaintainerMin RAMModel FormatToolchainBest For
TFLite MicroGoogle~20 KB.tflite flatbufferTensorFlow, C++General TinyML, broad HW support
Edge ImpulseEdge Impulse~10 KBEON Compiler outputWeb UI + SDKRapid prototyping, beginners
microTVMApache TVM~4 KBONNX, Relay IRPython + LLVMOptimal code-gen, custom MCUs
CMSIS-NNARMBare kernelsC functionsC / C++Hand-tuned Cortex-M kernels
EmlearnCommunity~1 KBscikit-learn exportPython + CClassical ML on tiny MCUs
EloquentTinyMLCommunity~4 KB.tflite via headerArduino C++Arduino ecosystem
build

Development & Tooling

TensorFlow Model Optimization Toolkit

Python library for applying quantization, pruning, and clustering to TensorFlow/Keras models before export. Integrates directly with the Keras training loop.

Key Features
  • QAT: tf.quantization.quantize_model
  • Magnitude-based weight pruning
  • Weight clustering (K-means)
  • Combined pruning + quantization
  • Export to TFLite .tflite
Similar Technologies
PyTorch quantization (torch.ao)ONNX quantize_staticBrevitas
xxd / bin2c (Model to C Array)

Utility step to embed a .tflite flatbuffer as a C byte array for inclusion in firmware. Edge Impulse and TFLite Micro both rely on this pattern — the model lives in Flash as a const array.

Key Features
  • xxd -i model.tflite > model_data.h
  • Places model in .rodata / PROGMEM
  • No filesystem required
  • Model loaded at runtime from Flash
  • Supported by all MCU toolchains
Similar Technologies
Edge Impulse auto-generationLittleFS model fileExternal Flash
PlatformIO

Cross-platform embedded development IDE and build system. Supports hundreds of MCU boards with consistent library management. First-class support for TFLite Micro, Edge Impulse, and CMSIS-NN.

Key Features
  • Unified build system for 1200+ boards
  • Library registry with TinyML libs
  • VS Code integration
  • Unit testing on device + simulator
  • OTA firmware update support
Similar Technologies
Arduino IDESTM32CubeIDEZephyr + west
functions

Supported Operators in TFLite Micro

OperatorINT8 SupportCMSIS-NN OptimisedCommon Use
Conv2DYesYesImage feature extraction
DepthwiseConv2DYesYesMobileNet-style blocks
FullyConnected (Dense)YesYesClassification head
LSTM / RNNPartialPartialAudio, time-series
Softmax / ReLU / ReLU6YesYesActivations
MaxPool / AveragePoolYesYesSpatial downsampling
Reshape / TransposeYesNoTensor manipulation