_xcp
DESCRIPTION
XCP ProtocolTRANSCRIPT
-
XCP
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."[1]
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 analog measurement devices and to hardware
interface converters to RAM emulators, JTAG or other microcontroller debug interfaces.
Due to its broad range of use, a primary goal in the development of XCP was to achieve as
lean an implementation in the ECU as possible and 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:[2]
XCP on CAN
XCP on CAN FD
XCP on SxI (SPI, SCI)
XCP on Ethernet (TCP/IP and UDP/IP)
XCP on USB
XCP on FlexRay
In addition to supporting other transport layers, the successor to the CCP protocol contains
many functional improvements such as:[3]
Better resource utilization in the ECU
Synchronous data stimulation
-
Support of start-up measurements
Optimized communication by block transfer commands
Plug & play configuration
More precise measurement data acquisition by measuring the time stamps in the
ECU (Slave)
XCP allows a client to access memory on the ECU using a format defined in a separate
A2L file. Because the A2L format file contains all the information to access the
information, the ECU code does not have to be recompiled to access different
measurements or calibrations