XCP or "Universal Measurement and Calibration Protocol" is a network protocol originating from ASAM for connecting calibration systems to electronic control units, ECUs. It enables read and write access to variables and memory contents of microcontroller systems at runtime. Entire datasets can be acquired or stimulated synchronous to events triggered by timers or operating conditions. In addition, XCP also supports programming of flash memory.
ASAM states "The primary purpose of XCP is to adjust internal parameters and acquire the current values of internal variables of an ECU. The first letter X in XCP expresses the fact that the protocol is designed for a variety of bus systems."
In 2003, the protocol was standardized as "ASAM MCD-1 XCP". XCP is a successor to CAN Calibration Protocol (CCP) that was developed back in the mid-1990s. At that time, CAN was the dominant networking system in the automobile industry. Over time, other bus systems such as LIN, MOST and FlexRay emerged and made it necessary to extend the protocol to other transport media. In addition, XCP supports synchronous and asynchronous serial interfaces. With Ethernet or USB as the transport medium, XCP can also serve as a standardized interface to
Due to its broad range of use, a primary goal in the development of XCP was to achieve an implementation in the ECU as lean as possible. Another goal was high scalability of features and resource utilization. XCP can even be implemented on 8-bit microcontrollers for CAN or SCI with few resources and it exploits the full potential of FlexRay or Ethernet on high-performance platforms.
As a two-layer protocol, XCP consistently separates the protocol and transport layers from one another
and adheres to a Single-Master/Multi-Slave concept. XCP always uses the same protocol layer independent
of the transport layer. The "X" in its name stands for the variable and interchangeable transport layer.
Currently, the following transport layers are defined as standard by ASAM as of May 2010:
|Transport Layer||Supported by ADTF3|
|XCP on CAN||yes|
|XCP on CAN FD||no|
|XCP on SxI (SPI, SCI)||no|
|XCP on Ethernet (TCP/IP and UDP/IP)||yes|
|XCP on USB||no|
|XCP on FlexRay||yes|
In addition to supporting other transport layers, the successor to the CCP protocol contains many functional improvements such as: