Embedder

Build Firmware
with AI Agents

Embedder reads your datasheets, writes the code, flashes the board, runs the tests, and fixes its own mistakes.

Featured Ecosystems

Embedder is an AI agent for firmware that reads your datasheets, writes the code, flashes the board, runs the tests, and fixes its own mistakes — grounded in reference manuals, schematics, and errata, with closed-loop validation across 500+ MCUs, 3,000+ peripherals, and 30+ pieces of test equipment.

Datasheet Intelligence

Every line of generated code cites the reference manual section it came from. No hallucinated registers. No invented clock trees.

Learn More →
EMBEDDER
How do I configure USART2 for 9600 …×
+
How do I configure USART2 for 9600 baud on STM32F407?
dispatched 4 subagents in parallel
searched §30.6.3 · Baud rate generation
searched Table 136 · baud error @ fCK = 42 MHz
searched §30.6.6 · USART_BRR register layout
searched §30.3.2 · PCLK1 clock tree
Set USART2->BRR = 0x1117. PCLK1 runs at 42 MHz, so USARTDIV = 42 MHz / (16 × 9 600) ≈ 273.44 → mantissa 273, fraction 7/16. Per Table 136 in RM0090 (§30.6.3), this produces an error of +0.02%.
Try: Explain OVER8 sampling mode
+
Debug
RM0090.pdf
1014/1745
100%
USARTRM0090
30.6.3

Baud rate generation

The baud rate for the receiver and transmitter (Rx and Tx) are both set to the same value as programmed in the Mantissa and Fraction values of USARTDIV.

Tx/Rx baud = fCK / (8 × (2 − OVER8) × USARTDIV)

USARTDIV is an unsigned fixed-point number coded on the USART_BRR register:

  • The 12-bit mantissa of USARTDIV is programmed in the DIV_Mantissa[11:0] bits of USART_BRR.
  • The fraction of USARTDIV is programmed in the DIV_Fraction[3:0] bits. When OVER8 = 1, bit DIV_Fraction[3] must be cleared.
  • After writing a new value in USART_BRR the baud counter is replaced by the new one. The new value therefore takes effect at the next byte transfer.
Table 136. Error calculation for programmed baud rates at fCK = 42 MHz, OVER8 = 0
Baud rate
USARTDIV
BRR (hex)
Error
2 400
1093.75
0x4443
0.00%
9 600
273.437
0x1116
−0.01%
19 200
136.718
0x0888
−0.02%
38 400
68.359
0x0444
+0.03%
57 600
45.572
0x02D9
−0.05%
115 200
22.787
0x016C
+0.04%
230 400
11.393
0x00B6
+0.16%
460 800
5.696
0x005B
−0.39%
921 600
2.848
0x002D
+0.45%
1014/1745DocID018909 Rev 20

Schematic Ingestion

Embedder reads your schematics alongside your datasheets — so generated code already knows how the board is wired.

Learn More →
PR001-3.kicad_sch
KICAD SCHEMATIC
142
NETS
87
PARTS
SHEETS11
power.sch
main_mcu.sch
sensors.sch
header.sch
usb.sch
clock.sch
debug.sch
led_matrix.sch
rf_front.sch
boot.sch
io_expander.sch
2/4
100%
5.23, 101.69 mm

Hardware Interaction

Embedder drives the test equipment your team owns — debug probes, logic analyzers, power profilers, oscilloscopes — and folds the signals back into the loop.

Learn More →

Runtime visibility without leaving the session

Embedder reads serial output and drives GDB sessions, stepping breakpoints, inspecting registers and memory, and correlating runtime state with the code under review. Failures get diagnosed against what the chip actually did, not what the source implied.

ConnectFilterClearDetect baud
[00.004] [boot] STM32F407VG @ 168 MHz, RAM 192 KB
[00.008] [boot] HAL init ok, SysTick 1 kHz
[00.012] [boot] USART2 up · 115200 8N1
[00.018] [boot] I2C1 400 kHz · scanning bus
[00.041] [i2c] MPU-6050 @ 0x68 present
[00.050] [imu] gyro cal gx=-12 gy=+4 gz=-3
[00.052] [app] entering main loop
[02.110] [imu] s=0423 ax= 128 ay= -64 az=8192
[02.115] [ctrl] pid u=+0.12 err=+0.003
[02.120] [imu] s=0425 ax=32767 ay=32767 az=32767
[02.121] [imu] WARN saturated axis, retry
[02.125] [i2c] NACK @ 0x68 (attempt 3)
[02.131] [halt] target stopped — SIGTRAP (imu.c:192)
PORT/dev/cu.usbmodem2103BAUD115200
Debug Output×
(gdb) target extended-remote :3333
Remote debugging using :3333.
(gdb) break imu.c:192 if buf[0] == 0xff
Breakpoint 2 at 0x08003b10: imu.c, line 192.
(gdb) continue
 
Breakpoint 2, imu_read (out=0x20001f40)
at imu.c:192
192 out->ax = (buf[0]<<8) | buf[1];
(gdb) info registers r0 pc lr
r0 0x20001f40 537001280
pc 0x08003b10 <imu_read+80>
lr 0x08003afd <imu_read+57>
(gdb) p/x buf
$3 = {0xff, 0xff, 0xff, 0xff}
(gdb) bt
#0 imu_read at imu.c:192
#1 control_loop at ctrl.c:84
#2 main at main.c:63
(gdb)
CORECortex-M4PC0x08003b10STATEhalted

Signals as reviewable evidence

Embedder turns logic analyzer captures and oscilloscope waveforms into structured data. Timing violations, protocol errors, and signal integrity issues surface as reviewable evidence, grounding firmware changes in the electrical behavior of the bus.

100.000 ms150.000 ms200.000 ms250.000 ms300.000 ms
LIN_BUSChannel 0 · 19.2 kbps · digital
ADC_INChannel 1 · 1 kHz · 1.65 V bias

Every microamp accounted for

Embedder drives power profilers like Joulescope and Nordic PPK2 to capture current draw across a workload, correlates the high-draw windows back to what the firmware was doing, and proves every low-power change by re-measuring on real silicon.

8 mA1 mA100 µA2 µA
0 s3 s6 s9 s12 s
AVG41 µASLEEP2.1 µABURST8.1 mAEST. LIFE2.3 yr

Agent Orchestration

Embedder coordinates multiple specialized agents that build, flash, test, and repair firmware in a closed loop — turning multi-hour workflows into minutes.

Learn More →

Divide complex tasks across specialized agents

Embedder decomposes multi-step firmware tasks into parallel subagent work streams that execute concurrently and merge their results.

Build, flash, test, fix — autonomously

The orchestrator chains compilation, flashing, runtime observation, and code repair into a tight loop. When a test fails the agent diagnoses the fault, patches the source, and re-validates without human intervention.

Hallucination Detection

Generic AI tools generate plausible-looking code, and in firmware plausible is dangerous. Embedder flags uncited registers, bit positions, and timing values for review.

Learn More →

Every value checked against the source before it ships

Register addresses, bit fields, reset values, and timing constants are cross-referenced against the reference manual, errata, and SVD device files. When a value has no source, it's flagged and the agent is sent back to the documentation instead of straight to the board.

Generated valueSource
1RCC→CR |= RCC_CR_HSEON;
RM0090 §6.3.1
2FLASH→ACR = FLASH_ACR_LATENCY_5WS;
RM0090 §3.5.1
3GPIOA→MODER |= GPIO_MODER_MODE2_1;
RM0090 §8.4.1
4USART2→BRR = 0x1117;
RM0090 §30.6.3
5ADC1→SMPR3 |= (0x7 << 9);
Blocked

Uncertain values are flagged for review, not silently emitted

Each generated value carries a confidence score based on source corroboration, documentation recency, and how specifically it matches your exact part. Anything below your configured threshold surfaces for human review rather than getting quietly written into firmware.

Security & Compliance

Security &
IP Protection

Embedder runs against your most sensitive IP — schematics, source, and bench instruments. We hold ourselves to the same controls your security team expects from any vendor in the loop.

On-Prem / BYOC

Custom Deployments

Run Embedder fully on-premise or bring your own cloud. Ensure your IP, schematics, and source code never leave infrastructure you control.

SOC 2 Type II

Audited Controls

Independently attested security, availability, and confidentiality controls across our infrastructure, code, and customer data handling.

ISO 27001 / GDPR

Certified & Compliant

A formal ISMS covering risk, access, and incident response, paired with GDPR-ready data protection. Lawful basis, data minimization, and DPA support.

FAQ

Common questions about platform support and agent behavior.

What hardware platforms does Embedder support?

Embedder works with some of the top semiconductor ecosystems in the world: STMicroelectronics (STM32), Espressif (ESP32), Nordic Semiconductor (nRF52/nRF91), Raspberry Pi (RP2040/RP2350), Microchip (SAM, PIC, AVR), NXP, Texas Instruments, Infineon, Silicon Labs, Renesas, and RISC-V families (SiFive, GigaDevice, WCH) — 500+ MCUs in total. New vendors added as toolchains mature.

What peripherals does Embedder support?

3,000+ peripherals across the major vendors: STMicroelectronics, Espressif, Nordic Semiconductor, Microchip, NXP, Texas Instruments, Infineon, Silicon Labs, Renesas, Analog Devices (including Maxim Integrated), and RISC-V families.

What schematic formats does Embedder support?

Altium, KiCad, Eagle, PADS, and Xpedition.

What test equipment can Embedder drive?

Testing is hardware-in-the-loop on real silicon. Embedder drives debug probes (J-Link, ST-Link, OpenOCD, GDB), logic analyzers (Saleae, Digilent), power profilers (Nordic PPK, Joulescope), and bench equipment (Siglent and Rigol oscilloscopes and programmable power supplies).

What actions can Embedder take?

Embedder operates in three modes. It plans, turning your datasheets, schematics, and existing code into a concrete specification. It acts, generating firmware and verifying it against real hardware in the loop. And it debugs, running root-cause analysis against the live board using the integrated test equipment.