You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wasm3/docs/Hardware.md

4.2 KiB

Wasm3 hardware support

Compatibility table

Device Chipset Architecture Clock Flash RAM
Espressif ESP32 Xtensa LX6 ⚠️ 240MHz 4 MB 520KB
Particle Argon, Boron, Xenon nRF52840 Cortex-M4F 64MHz 1 MB 256KB
Particle Photon, Electron STM32F205 Cortex-M3 120Mhz 1 MB 128KB
Sparkfun Photon RedBoard STM32F205 Cortex-M3 120Mhz 1 MB 128KB
Air602 WM W600 Cortex-M3 80MHz 1 MB 160KB+128KB
Adafruit PyBadge ATSAMD51J19 Cortex-M4F 120MHz 512KB 192KB
Realtek RTL8711 Cortex-M3 166MHz 2 MB 2 MB+512KB
Nordic nRF52840 Cortex-M4F 64MHz 1 MB 256KB
Nordic nRF52833 Cortex-M4F 64MHz 512KB 128KB
P-Nucleo WB55RG STM32WB55RG Cortex-M4F 64MHz 1 MB 256KB
Teensy 4.0 NXP iMXRT1062 Cortex-M7 600MHz 2 MB 1 MB
Teensy 3.5 MK64FX512 Cortex-M4F 120MHz 512KB 192KB
MXChip AZ3166 EMW3166 Cortex-M4 100MHz 1 MB+2 MB 256KB
Arduino Due AT91SAM3X8E Cortex-M3 84MHz 512KB 96KB
Sipeed MAIX Kendryte K210 RV64IMAFDC 400MHz 16 MB 8 MB
Fomu (soft CPU) Lattice ICE40UP5K RV32I 12MHz 2 MB 128KB

Limited support

The following devices can run Wasm3, however they cannot afford to allocate even a single Linear Memory page (64KB). This means memoryLimit should be set to the actual amount of RAM available, and that in turn usually breaks the allocator of the hosted Wasm application (which still assumes the page is 64KB and performs OOB access).

Device Chipset Architecture Clock Flash RAM
Espressif ESP8266 Xtensa L106 ⚠️ 160MHz 4 MB ~50KB (available)
Teensy 3.1/3.2 NXP MK20DX256 Cortex-M4 72MHz 288KB 64KB
Blue Pill STM32F103 Cortex-M3 72MHz 64KB 20KB
Arduino MKR* SAMD21 Cortex-M0+ ⚠️ 48MHz 256KB 32KB
Arduino 101 Intel Curie ARC32 32MHz 196KB 24KB
SiFive HiFive1 Freedom E310 RV32IMAC 320MHz 16 MB 16KB
Nordic nRF52832 Cortex-M4F 64MHz 256/512KB 32/64KB
Nordic nRF51822 Cortex-M0 ⚠️ 16MHz 128/256KB 16/32KB
Wicked Device WildFire ATmega1284 8-bit AVR ⚠️ 20MHz 128KB 16KB

Legend:

⚠️ This architecture/compiler currently fails to perform TCO (Tail Call Optimization/Elimination), which leads to sub-optimal interpreter behaviour (intense native stack usage, lower performance).
There are plans to improve this in future 🦄.