Skip to main content
Select xcore.ai during project setup. For XMOS projects, include your XTC Tools version, target configuration, and xTAG connection. Record the project’s xrun, xflash, and xgdb commands in EMBEDDER.md; use xSCOPE to observe application output.
Check the project setup picker for current availability. Flashing and debugging depend on the tools and connections supported by your board.

Catalog platforms

Board-specific skills

Embedder auto-loads a board reference skill when the project targets a matching XMOS platform. The generic xcore.ai entry does not select a board-specific reference; see board-skill setup if the board is absent from the picker. Each skill covers the physical board: pinout, power, clocks, peripherals, boot, and xTAG connections. Use them alongside the general xmos and debug-xmos skills. Skills identify the exact board revision they describe. Check the PCB marking before trusting a connector table; boards that share a package or firmware family are not automatically interchangeable.

Configure .embedder/xmos.json

All XMOS project settings live in .embedder/xmos.json at the project root. EMBEDDER.md no longer carries xmos_xe, xscope_*, xmos_adapter_id, or xmos_sim keys; only Debug Interface = xgdb stays there. When Embedder detects leftover legacy keys it surfaces a one-line notice from serial_config and hardware_status. A missing file means defaults. Every field is optional:
The VS Code serial sidebar writes its Port, App, Adapter, and Target selections back into this file, so it stays the single source of truth. .xe selection order for every tool is: an explicit tool parameter, then xe in .embedder/xmos.json, then EMBEDDER_XMOS_XE, then the newest .xe under the project. Set xe whenever the project builds several apps so an old artifact is never run.

Hardware or simulator

Every XMOS tool resolves the target the same way:
  1. An explicit tool parameter (simulator: true, adapter_id: "…").
  2. The VS Code serial sidebar selection.
  3. target and adapterId in .embedder/xmos.json.
  4. EMBEDDER_XMOS_SIM and EMBEDDER_XMOS_ADAPTER_ID.
  5. Automatic detection: exactly one usable xTAG selects hardware.
Nothing falls back silently.
  • Several xTAGs attached with no adapterId set: the call fails and lists the serials.
  • No xTAG attached and no simulator choice: the call fails with a hint to plug in an xTAG, set "target": "simulator", or pass simulator: true.
  • Missing XTC Tools: the call fails and points at the install page.
target = "simulator" with an xTAG attached still uses the simulator.

Profile a session

Enable profiling when you start a debug or simulator session and Embedder captures xgprof reports from every execution interval until the session closes. Hardware sessions produce sampled xgprof output; simulator sessions produce execution-count data. Do not compare the two as equivalent counts. Turn it on with profile=True on gdb.xmos_connect(...) or xsim.start(...) from a hardware script, then read reports back at three levels:
gdb.xmos_profile_status, gdb.xmos_profile_report, and gdb.xmos_profile_stop provide the same lifecycle for a hardware or debugger-owned simulator session. Reports carry per-tile and per-core rows, xgprof’s own units, and the raw report paths. Missing values mean unavailable, not zero. Artifacts live under .embedder/artifacts/xmos-profiles/<profile_id>/ and include the frozen .xe, per-tile application ELFs, raw .gprof files, and generated text reports. They remain readable after you rebuild the original program. A session terminated forcibly is recorded as incomplete and its partial artifacts are still available. Profiling captures include startup and every execution interval, so use a fixed, repeatable workload for before-and-after experiments. Keep the input, iteration count, target, clocks, optimization, and dependency revisions constant across runs.

Choose a workflow

Last modified on September 19, 2026