-
Notifications
You must be signed in to change notification settings - Fork 0
MCU Targets
ATOME is designed to run on the cheapest hardware possible. Here is the full compatibility matrix, tested with realistic RAM accounting (including all pathway scratch buffers, KV cache, and router weights).
| MCU | RAM | Flash | atome-nano (14KB) | atome-micro (52KB) | atome-mini (103KB) | atome-base (205KB) |
|---|---|---|---|---|---|---|
| ESP32-S3 | 512 KB | 8 MB | YES | YES | YES | YES |
| ESP32-C3 | 400 KB | 4 MB | YES | YES | YES | YES |
| RP2040 | 264 KB | 2 MB | YES | YES | YES | NO |
| STM32F4 | 256 KB | 1 MB | YES | YES | YES | NO |
| nRF52840 | 256 KB | 1 MB | YES | YES | YES | NO |
RAM accounting reserves 30% for stack, heap, and RTOS overhead.
#define ATOME_D_MODEL 32
#define ATOME_MAX_SEQ 16
#define ATOME_N_LAYERS 2
#define ATOME_N_PATHWAYS 3- 10K parameters, 2.5 KB weights, ~14 KB RAM
- Good for: wake-word detection, simple classification, anomaly detection
- Runs on: every MCU with >20 KB RAM
#define ATOME_D_MODEL 64
#define ATOME_MAX_SEQ 32
#define ATOME_N_LAYERS 4
#define ATOME_N_PATHWAYS 3- 50K parameters, 12 KB weights, ~52 KB RAM
- Good for: intent classification, short text generation, sensor pattern recognition
- Runs on: ESP32, STM32F4, RP2040, nRF52840, and anything with >64 KB RAM
#define ATOME_D_MODEL 128
#define ATOME_MAX_SEQ 32
#define ATOME_N_LAYERS 4
#define ATOME_N_PATHWAYS 3- 200K parameters, 50 KB weights, ~103 KB RAM
- Good for: multi-turn interaction, longer generation, complex classification
- Runs on: ESP32 family, RP2040
#define ATOME_D_MODEL 256
#define ATOME_MAX_SEQ 32
#define ATOME_N_LAYERS 4
#define ATOME_N_PATHWAYS 3- 500K parameters, 125 KB weights, ~205 KB RAM
- Good for: the most demanding on-device tasks
- Runs on: ESP32-S3 (512 KB RAM), ESP32-C3 (400 KB RAM)
Model weights are stored in flash/ROM, not RAM. The atome_model_t struct contains only pointers into flash. Only the inference state (atome_state_t) consumes RAM.
This means a chip with 256 KB RAM and 1 MB flash can hold a model with up to ~250 KB of weights while still having room for inference buffers.
arm-none-eabi-gcc -O2 -std=c99 -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -c atome.cAdd atome.c and atome.h to your ESP-IDF component. Set the defines in your CMakeLists.txt or in a config header included before atome.h.
Add atome.c to your CMakeLists.txt sources. The Pico SDK provides a standard C99 environment.
| Application | Recommended model | Target MCU |
|---|---|---|
| Smart bulb voice commands | atome-nano | ESP32-C3 |
| Wearable intent detection | atome-micro | nRF52840 |
| Industrial sensor anomaly | atome-micro | STM32F4 |
| Robot command parsing | atome-mini | ESP32-S3 |
| IoT gateway text processing | atome-base | ESP32-S3 |