CARME
CARME · For embedded developers
Preview

The board is late. Your firmware does not have to be.

CARME gives every developer every board, on the laptop and in CI. The binary you build is the binary it runs. When the hardware arrives, the firmware is already written, debugged and tested.

nrf52840dk.cmboardrunning
nRF52840Cortex-M4FQSPIIMUANTUSB
uart0
*** Booting Zephyr OS ***
shell
$ west build -b nrf52840dk/nrf52840 samples/bluetooth/peripheral_hr
$ carme boards/nrf52840dk.cmboard --firmware build/zephyr/zephyr.elf --uart uart0
*** Booting Zephyr OS ***
Bluetooth initialized
Advertising successfully started
What changes for you

Every board, for every developer, all the time.

01

No waiting for hardware

Start on the day the part is chosen. 250+ boards and SoCs are ready, and a custom board is a short .cmboard on top of a listed SoC.

02

No hardware on your desk

No probes, no cables, no “who has the board”. Every developer has as many boards as they want, and the same ones.

03

No flaky test rack

Firmware CI on emulated boards is fast, parallel and gives the same result every time. A failure is a bug, not a loose USB cable.

04

Debugging the board cannot give you

Stop every core at once. Watch a peripheral register. Break when DMA writes a buffer. Step back from a crash to the write that caused it. Trace every interrupt with its exact time.

Your stack, as it is

Nothing to replace.

  • Operating systems

    Zephyr, FreeRTOS, NuttX, Tock, seL4, embedded Linux, bare metal

  • Toolchains

    GCC, LLVM/Clang, vendor toolchains; any ELF, binary, HEX or S-record

  • Build systems

    west, CMake, Make, Yocto, Buildroot, vendor IDE projects

  • Debuggers

    GDB, and every IDE that speaks to GDB: VS Code, Eclipse-based vendor IDEs, CLion

  • Test tools

    .cmtest (pytest style), plus anything that talks over UART, sockets or GDB

  • CI

    GitHub Actions, GitLab CI, Jenkins, Buildkite, in a container

Things you can finally test

The tests a board on a desk never gets to run.

  • The bootloader and the update:power cut in the middle of a firmware update, then check the device still boots.

  • The radio network:a gateway and fifty nodes, with packet loss, out of range nodes and interference you set.

  • The sensor at its limits:replay a recorded flight into the IMU, a heat soak into the thermometer, a drained battery into the fuel gauge.

  • The long run:a week of uptime in minutes, to find the counter that wraps and the leak that grows.

  • The CAN bus:four ECUs, one bus, error frames and bus-off on demand.

Multi-node, one clock

A mesh network that behaves the same on every run.

Connect boards over Ethernet, CAN, BLE, 802.15.4, LoRa and UART in a .cmsystem. Every node runs its own firmware, and every run plays out the same way, so a timing bug in a mesh network can be replayed and fixed.

ble_mesh.cmsystem · 1 gateway · 6 nodesrunning
gatewaynRF52840node1node2node3node4node5node6
BLE802.15.4CANETHt = 0 ms
Where silicon teams help you

Start on a chip before samples exist.

When your silicon vendor ships a CARME model of a new chip, you start on it before samples exist. Their virtual dev kit runs the same SDK and the same examples as the board will.

Questions

Common questions.

Is it a simulator of my code, or of the hardware?

Of the hardware. CARME runs the machine code your compiler produced on emulated CPUs and peripherals, so you test the binary you will ship.

How fast is it?

Most microcontroller firmware runs faster than real time. Linux boots in seconds to minutes depending on the platform, and a checkpoint lets every test start after boot.

What if a peripheral I use is not modelled?

Write it in Python from its register description, or ask us: we add models for test partners first.

Does it replace the board completely?

For development and CI, most of the time. Keep a few boards for final validation, analogue behaviour and RF; run everything else on CARME.

Bring your firmware and the board you wish you had more of.

Privacy settings

Choose what this site may use. You can change your mind at any time from the Privacy settings link at the bottom of every page.

What the site needs to work, and the record of the choice you make here, kept in your browser. No cookies are set.

Always on

Would let us count visits and see which pages are useful, without advertising or cross-site tracking. We do not use any analytics today, so nothing is loaded whichever you choose.

Cookie policy · Privacy policy