Supported Architectures
ARMv6-M and ARMv7-M (32-bit ARM Cortex-M microcontrollers) are currently fully supported. This includes common cores like Cortex-M0/M0+/M1 (ARMv6) and Cortex-M3/M4/M7 (ARMv7) found in IoT devices, automotive ECUs, industrial controllers, and more.
Support for additional ISAs (e.g. ARMv8 and MIPS) are on the roadmap.
Supported Operating Systems
Metalware supports all bare metal and RTOS applications. This includes, but is not limited to, FreeRTOS, VxWorks, QNX, ThreadX, Zephyr, and Nucleus.
We do not currently support Linux, Windows, or other full-fledged operating systems.
Supported Fuzzing Interfaces
Metalware fuzzes MMIO registers (Memory-Mapped I/O), simulating peripheral hardware responses. In embedded systems, MMIO (Memory-Mapped I/O) is the mechanism by which the CPU interacts with hardware peripherals. Rather than using a separate I/O bus, peripheral registers are mapped into the systemโs memory space so that reading or writing to those addresses triggers hardware operations.
This means that Metalware fuzzes the vast majority of communication protocolsโsuch as Bluetooth, CAN, LPWAN, ZigBee, WiFi, Ethernet, USB, SPI, I2C, SD/MMC, and much moreโwhich are implemented by dedicated peripheral controllers. These controllers are typically interfaced with the CPU via MMIO. The CPU can configure the peripheral, initiate data transfers, and monitor status by reading from or writing to specific MMIO addresses assigned to the controller. MMIO serves as the bridge between the CPU and the communication protocol controllers, enabling software to control and interact with these peripherals efficiently.