Supported probes
If you don’t name a probe anywhere, Embedder uses XDS110.
Prepare CCS
- Install CCS with its scripting support, target database, and drivers for your probe and device.
- Connect and power the target. Close other CCS sessions that use the probe.
- Build a debug artifact that CCS can load, such as an ELF-format
.outfile, with matching symbols. - Identify the TI target configuration (
.ccxml) for the board, or the TI device name. For a multicore device, note the core you want from that configuration. - Run
/debugand ask Embedder to check the installation, probe version, target configuration, and device before connecting.
If CCS is installed somewhere else, set
EMBEDDER_CCS_ROOT (or CCS_ROOT) to the CCS folder that contains ccs_base and scripting, in the environment that launches Embedder. You can also give the folder in your request.
Choose the target configuration
Embedder resolves the probe, device, and.ccxml from, in order of priority:
- Values you give in your request.
- The project’s saved CCS configuration in
.embedder/ccs.json. Debug InterfaceandTarget MCUin EMBEDDER.md.
.ccxml is given, Embedder searches the project, .embedder/targetConfigs/, ~/ti, and the C2000Ware folder named by C2000WARE_ROOT for one that matches the probe and device. If several match, Embedder lists them so you can choose one. If none match and the device is known, it generates one at .embedder/targetConfigs/<probe>-<device>.ccxml.
It can’t generate a configuration for XDS100v1 with devices that use ICEPick routing or a CLA. Supply a TI-authored .ccxml for those.
Embedder saves the resolved setup in .embedder/ccs.json and reuses it. If you change boards or probes, give the new device, probe, and .ccxml explicitly, or delete .embedder/ccs.json to start discovery again.
Program and debug
main. Starting a CCS session closes any open J-Link, OpenOCD, or XMOS debugger session.
Once connected, you can ask for:
- Breakpoints, run, and interrupt.
- Step, step over, and step out.
- Register and memory reads.
- Expression evaluation.
- The call stack, with modern CCS scripting only. Frames don’t include local variables; evaluate an expression to read a variable.
Script the connection
For a repeatable check, save a hardware script under.embedder/hardware/:
Attach to existing firmware
For firmware already on the board, ask for attach-only with the matching artifact. Embedder loads symbols without loading the program, then halts the target. Ask for no-halt as well to skip that halt. The TI connection sequence can still affect execution. CCS handles no-halt on a programming connection differently from J-Link and OpenOCD: it loads the program, then starts execution. Don’t use no-halt as a substitute for attach-only.Read C28x memory
On C28x, memory addresses are target word addresses, and read sizes are in bytes. Each 16-bit word is returned low byte first, and the result is trimmed to the byte count you asked for.Troubleshoot
- No compatible CCS installation found: repair the CCS installation so its scripting support, probe connection files, C28x drivers, and device definitions are present, or set
EMBEDDER_CCS_ROOT. - Generic XDS100 is ambiguous: specify
xds100v1,xds100v2, orxds100v3, or supply the matching.ccxml. - Multiple target configurations match: give the intended
.ccxmlexplicitly. - Configuration conflicts with the requested device or probe: use the correct TI configuration instead of forcing mismatched values.
- A CCS device is required: give the device name, or set
Target MCUinEMBEDDER.md. - Automatic target configuration is unavailable: supply a TI-authored
.ccxml, especially for routed or CLA devices with XDS100v1. - Stack query is unsupported: the session uses legacy CCS scripting. Use register, memory, and expression queries, or a modern CCS setup.