Machines › Computers › Adafruit › Metro M4 Express
Metro M4 Express
2018
The Metro M4 Express (2018) is an Adafruit development board in the Arduino Uno format, built around the Microchip SAMD51: a 120MHz ARM Cortex-M4F with 512KB flash and 192KB RAM. It runs real compiled firmware and shows the on-board surface a Metro M4 actually exposes: the built-in D13 LED on PA16, a single WS2812 NeoPixel on PB22, and a SERCOM3 serial console. The board has no on-board speaker, so it is honestly silent.
Metro M4 Express Online Emulator
Play Metro M4 Express using JavaScript directly in your browser.
Controls
Runs real compiled Adafruit Metro M4 Express firmware on an in-browser Microchip SAMD51 (ARM Cortex-M4F, 120 MHz). The default "NeoPixel Rainbow" is a bare-metal C program that cycles a smooth rainbow on the single on-board WS2812 NeoPixel (PB22), blinks the D13 built-in LED (PA16) as a heartbeat, and announces each colour over the SERCOM3 serial console — so the board lights AND prints out of the box. The NeoPixel colour is REAL: the program bit-bangs the 800 kHz WS2812 one-wire protocol on PB22 and the board decodes the HIGH-pulse widths into a live RGB value (a long LOW latches the frame). "Blink D13" toggles the built-in LED (PA16) with the real SAMD51 PORT OUTSET/OUTCLR registers. "TC0 Timer Blink" enables the SAMD51 TC0 timer/counter and drives the LED straight from a bit of the running COUNT register (read back with a READSYNC command). "Serial Terminal" brings up the SERCOM3 USART and echoes whatever you type back to the console (click the on-screen keyboard in the Controller panel, or just type) toggling the LED each keystroke. Open the debugger, or add ?debug, to single-STEP real Thumb instructions from flash at 0x00000000, set PC breakpoints and write watchpoints, and read the ARM registers (r0-r15, xPSR, N/Z/C/V) and the real SAMD51 memory map live (FLASH 0, SRAM 0x20000000, peripherals 0x40000000, PORT 0x41008000, SERCOM3 0x41014000, DAC 0x43002400). A Metro M4 has no on-board speaker, so it is honestly silent.
Runs real compiled Adafruit Metro M4 Express firmware on an in-browser Microchip SAMD51 (ARM Cortex-M4F, 120 MHz). The default "NeoPixel Rainbow" is a bare-metal C program that cycles a smooth rainbow on the single on-board WS2812 NeoPixel (PB22), blinks the D13 built-in LED (PA16) as a heartbeat, and announces each colour over the SERCOM3 serial console — so the board lights AND prints out of the box. The NeoPixel colour is REAL: the program bit-bangs the 800 kHz WS2812 one-wire protocol on PB22 and the board decodes the HIGH-pulse widths into a live RGB value (a long LOW latches the frame). "Blink D13" toggles the built-in LED (PA16) with the real SAMD51 PORT OUTSET/OUTCLR registers. "TC0 Timer Blink" enables the SAMD51 TC0 timer/counter and drives the LED straight from a bit of the running COUNT register (read back with a READSYNC command). "Serial Terminal" brings up the SERCOM3 USART and echoes whatever you type back to the console (click the on-screen keyboard in the Controller panel, or just type) toggling the LED each keystroke. Open the debugger, or add ?debug, to single-STEP real Thumb instructions from flash at 0x00000000, set PC breakpoints and write watchpoints, and read the ARM registers (r0-r15, xPSR, N/Z/C/V) and the real SAMD51 memory map live (FLASH 0, SRAM 0x20000000, peripherals 0x40000000, PORT 0x41008000, SERCOM3 0x41014000, DAC 0x43002400). A Metro M4 has no on-board speaker, so it is honestly silent.
Runs real compiled Adafruit Metro M4 Express firmware on an in-browser Microchip SAMD51 (ARM Cortex-M4F, 120 MHz). The default "NeoPixel Rainbow" is a bare-metal C program that cycles a smooth rainbow on the single on-board WS2812 NeoPixel (PB22), blinks the D13 built-in LED (PA16) as a heartbeat, and announces each colour over the SERCOM3 serial console — so the board lights AND prints out of the box. The NeoPixel colour is REAL: the program bit-bangs the 800 kHz WS2812 one-wire protocol on PB22 and the board decodes the HIGH-pulse widths into a live RGB value (a long LOW latches the frame). "Blink D13" toggles the built-in LED (PA16) with the real SAMD51 PORT OUTSET/OUTCLR registers. "TC0 Timer Blink" enables the SAMD51 TC0 timer/counter and drives the LED straight from a bit of the running COUNT register (read back with a READSYNC command). "Serial Terminal" brings up the SERCOM3 USART and echoes whatever you type back to the console (click the on-screen keyboard in the Controller panel, or just type) toggling the LED each keystroke. Open the debugger, or add ?debug, to single-STEP real Thumb instructions from flash at 0x00000000, set PC breakpoints and write watchpoints, and read the ARM registers (r0-r15, xPSR, N/Z/C/V) and the real SAMD51 memory map live (FLASH 0, SRAM 0x20000000, peripherals 0x40000000, PORT 0x41008000, SERCOM3 0x41014000, DAC 0x43002400). A Metro M4 has no on-board speaker, so it is honestly silent.
Runs real compiled Adafruit Metro M4 Express firmware on an in-browser Microchip SAMD51 (ARM Cortex-M4F, 120 MHz). The default "NeoPixel Rainbow" is a bare-metal C program that cycles a smooth rainbow on the single on-board WS2812 NeoPixel (PB22), blinks the D13 built-in LED (PA16) as a heartbeat, and announces each colour over the SERCOM3 serial console — so the board lights AND prints out of the box. The NeoPixel colour is REAL: the program bit-bangs the 800 kHz WS2812 one-wire protocol on PB22 and the board decodes the HIGH-pulse widths into a live RGB value (a long LOW latches the frame). "Blink D13" toggles the built-in LED (PA16) with the real SAMD51 PORT OUTSET/OUTCLR registers. "TC0 Timer Blink" enables the SAMD51 TC0 timer/counter and drives the LED straight from a bit of the running COUNT register (read back with a READSYNC command). "Serial Terminal" brings up the SERCOM3 USART and echoes whatever you type back to the console (click the on-screen keyboard in the Controller panel, or just type) toggling the LED each keystroke. Open the debugger, or add ?debug, to single-STEP real Thumb instructions from flash at 0x00000000, set PC breakpoints and write watchpoints, and read the ARM registers (r0-r15, xPSR, N/Z/C/V) and the real SAMD51 memory map live (FLASH 0, SRAM 0x20000000, peripherals 0x40000000, PORT 0x41008000, SERCOM3 0x41014000, DAC 0x43002400). A Metro M4 has no on-board speaker, so it is honestly silent.
Configurations
| Configuration | Emulator | Machine | OS | Legal | |
|---|---|---|---|---|---|
| Blink D13 | Metro M4 Express | Metro M4 Express | open | Open ⛶ | |
| NeoPixel Rainbow | Metro M4 Express | Metro M4 Express | open | Open ⛶ | |
| TC0 Timer Blink | Metro M4 Express | Metro M4 Express | open | Open ⛶ | |
| Serial Terminal | Metro M4 Express | Metro M4 Express | open | Open ⛶ |
Downloads — ROMs & software
| Title | Type | Size (bytes) | Legal | |
|---|---|---|---|---|
| Blink D13 | demo | 0 | open | Download ↓ |
| Serial Terminal | demo | 0 | open | Download ↓ |
| NeoPixel Rainbow | demo | 0 | open | Download ↓ |
| TC0 Timer Blink | demo | 0 | open | Download ↓ |
Chips
Emulators
| Emulator | Type | License | Site |
|---|---|---|---|
| Metro M4 Express | online | CC0 | Website ↗ |