Know-how · Calibration
XCP
Diagnostics tells you what the ECU decided. XCP lets you watch the internal variables it decided with, while the engine is running.
In short
XCP (Universal Measurement and Calibration Protocol) is the ASAM MCD-1 standard that connects a calibration tool to an ECU so internal variables can be measured and calibration parameters changed while the ECU runs. It is transport-independent — the same command set runs over CAN, CAN FD, Ethernet, FlexRay, SxI and USB — which is what the X in the name means. XCP has two modes that matter: polling, where the tool requests a value, and DAQ (Data AcQuisition), where the tool configures a list of addresses once and the ECU then transmits them autonomously on a raster, which is how high-rate measurement is possible at all. STIM is the reverse direction, used to inject values into the ECU. XCP works in addresses, not names: it needs an A2L (ASAP2) file matching the exact ECU software to turn an address into a named, scaled quantity. XCP is the successor to CCP, which was CAN-only.
01
Polling, DAQ and STIM
Polling is request-and-answer: the tool asks for an address, the ECU replies. It is simple and far too slow for anything dynamic, because every sample costs a round trip. For a tip-in event lasting a few hundred milliseconds it is useless.
DAQ changes the direction of control. The tool sends a list of addresses and assigns them to an event channel — a raster tied to something real in the ECU, typically a 10 ms task or a crank-angle event. The ECU then pushes those values itself, timestamped, with no further request. This is why a measurement raster is an ECU property rather than a tool setting, and why asking for a signal at a rate the ECU has no event for does not work.
STIM runs the other way: the tool sends values the ECU consumes at an event, which is how bypass and rapid-prototyping setups override an internal quantity without changing the software.
- PollingOne request, one value. Simple, slow, fine for static checks.
- DAQECU transmits a configured list on its own event raster, timestamped.
- STIMTool sends values into the ECU at an event — bypass and prototyping.
- Event channelThe ECU-side task the raster is tied to; not freely choosable.
02
Why XCP needs an A2L
XCP commands address memory. A DAQ list is a set of addresses, lengths and extensions — there is nothing in the protocol that knows a given address holds an injection quantity in milligrams per stroke. The A2L supplies that: the object name, its address, data type, record layout, axes and the conversion from raw bytes to engineering units.
That is also the usual failure. An A2L from a different build of the ECU software can still connect, configure a DAQ list and return numbers, because the addresses exist — they just hold something else now. The values look plausible and are wrong. Checking the software identity before trusting a measurement is not pedantry; it is the only thing standing between you and a calibration decision based on the wrong variable.
- A2L supplies meaningName, address, type, layout, axes, conversion, units.
- XCP supplies accessRead, write, and autonomous transmission on an event.
- Match the buildA stale A2L returns credible-looking values from the wrong memory.
- RecordingThe result is normally stored as MDF4, with the A2L metadata retained.
03
XCP and CCP
CCP (CAN Calibration Protocol) came first and was bound to CAN. XCP generalised it: the same measurement and calibration model, with the transport factored out into separate specifications. In current programmes XCP is the default and CCP appears mostly on older ECUs still in the field.
The practical difference is bandwidth and reach. XCP on Ethernet makes raster rates possible that CAN never supported, which is why high-rate combustion or electrified-powertrain measurement moved there. The command set an engineer deals with is largely the same.
04
Where this sits in a calibration loop
XCP produces the measurement. CIE Pro uses it to build a model of the response and choose a change, and exports the result as A2L, CDF or HEX. Hexx opens the matching ECU image so the changed object can be inspected in engineering units against its axes. MDX reads the MDF4 recording from before and after, which is how you establish the change did what the model predicted rather than something nearby.
HELIX holds the dataset through review and release, keeping the A2L, the change batch and the validation evidence together — which matters because an XCP measurement is only reproducible if you can still say which software it was taken against.
The instruments
What does what.
- DIGITAL TWIN CALIBRATIONCIE ProModel the measured response and choose the calibration change.→
- OSCILLOSCOPE LAB & MCPMDXOpen the MDF4 recording and compare before and after on one time base.→
- BYTE-TO-MAP MATRIXHexxInspect the changed object in the matching ECU image, in engineering units.→
- RELEASE GOVERNANCE GATEWAYHELIXKeep A2L, dataset change and validation evidence together through release.→
Standards & references
Check the source.
These primary sources define the formats and regulatory context discussed above. They do not certify or endorse VehicleLab products.
Questions
Frequently asked.
What does XCP stand for?
Universal Measurement and Calibration Protocol. The X stands for the transport being interchangeable — the same protocol runs over CAN, CAN FD, Ethernet, FlexRay, SxI and USB.
What is the difference between XCP and CCP?
CCP is the older CAN Calibration Protocol and works only over CAN. XCP keeps the same measurement and calibration model but separates the transport, which is what allows Ethernet and the much higher raster rates that come with it.
What is a DAQ list in XCP?
A set of ECU addresses the tool configures once and assigns to an event channel. The ECU then transmits those values itself on that raster, timestamped, without a request per sample. It is what makes high-rate measurement possible.
Do I need an A2L file to use XCP?
To get meaningful values, yes. XCP addresses memory; the A2L is what turns an address into a named object with a type, axes and a conversion to engineering units. Without a matching A2L you get bytes.
Can XCP change calibration values while the engine runs?
Yes — that is the calibration half of the protocol, and it is the normal way a parameter is tuned on a running engine. Whether a given object may be changed online depends on the ECU and the memory segment it lives in.
Next step
Open one of your own files with us.
Send a measurement, an A2L or an EHANDBOOK container. We will open it in the instruments on a call, with your engineers in the room.
