Luviner generates pure C code that runs on any microcontroller. Here are the tested and supported platforms.
| Architecture | Examples | Min Flash | Min RAM | Plan required |
|---|---|---|---|---|
| ARM Cortex-M4 | STM32F4, nRF52840, SAM D51 | 32 KB | 8 KB | Explorer+ |
| ARM Cortex-M7 | STM32H7, i.MX RT1060 | 32 KB | 8 KB | Builder+ |
| ESP32 | ESP32, ESP32-S3, ESP32-C3 | 32 KB | 8 KB | Builder+ |
| RISC-V | ESP32-C3, GD32VF103, BL602 | 32 KB | 8 KB | Production+ |
| ARM Cortex-M0/M0+ | STM32L0, nRF52832, RP2040 | 16 KB | 4 KB | Production+ |
| ARM Cortex-M33 | STM32U5, nRF5340, LPC55S69 | 32 KB | 8 KB | Production+ |
Luviner models are exceptionally compact thanks to proprietary quantization and architecture optimization:
| Model complexity | Flash | RAM | Typical use |
|---|---|---|---|
| Small | 4 – 8 KB | 1 – 2 KB | Simple classification (3-5 classes, few features) |
| Medium | 8 – 16 KB | 2 – 4 KB | Sensor fusion, activity recognition |
| Large | 16 – 32 KB | 4 – 8 KB | Complex patterns, many classes, high accuracy |
For comparison, a traditional MLP with equivalent accuracy requires ~6x more memory (~82 KB vs ~14 KB average).
Luviner models consume 30x less energy than traditional quantized networks during inference:
To compile the exported library into your firmware, you need the standard toolchain for your target:
| Target | Toolchain | Command |
|---|---|---|
| ARM Cortex-M | arm-none-eabi-gcc | arm-none-eabi-gcc -mcpu=cortex-m4 ... |
| ESP32 | ESP-IDF / Arduino | idf.py build |
| RISC-V | riscv32-unknown-elf-gcc | riscv32-unknown-elf-gcc ... |