The Jerusalem PostIran split screen: When US, Israeli interests reach a fork in the road - analysisRTP DesportoBrandon McNulty fugiu para o arco-íris na prova de fundoESPN DeportesPumas se derrumba en casa y San Luis marca el terceroESPNUSC suspends LB Stephens after ejection for hit on Oregon QB MooreDaily MaverickUK PM Burnham refuses to back Heathrow’s third runway projectVanguardSerbia’s President resigns to run for PM in October electionBillboardFans Choose Madonna & Charli xcx’s ‘Danceteria Afterhours’ as This Week’s Favorite New MusicBBC NewsWhat we know about RAF base counter-terror investigationNOSRecordwarm einde van september op komstDeadlineBill Gates Warns Unregulated AI Development Could “Cause A Billion Deaths”Aitnewsمايكروسوفت تعيد تصميم Copilot.. تطبيق واحد يجمع الذكاء الاصطناعي وتطبيقات والبرمجةABC NewsUK police arrest 5 men under terrorism, explosives acts close to US air base
The Daily Newsstand · Free, Always
Sunday, September 27, 2026

Основы Universal Measurement and Calibration Protocol (XCP)

Translate

XCP (Universal Measurement and Calibration Protocol) — это бинарный автомобильный интерфейсно-независимый протокол прикладного уровня модели OSI-7. Используется при разработке и отладке ECU. Появился в далёком 2003 году как потомок ранее существующего протокола CCP.

Для чего нужен XCP?

XCP предназначен для чтения и записи памяти микроконтроллера ЭБУ. Это обычно диагностика, калибровка и измерение. Основные действия по XCP:

  1. Настройка внутренних параметров ECU

  2. Калибровка ECU

  3. Обновление прошивки для целей разработки

  4. Извлечение данных из ECU (показания датчиков, переменных программы)

  5. Ввод данных в ECU

Основная задача XCP — предоставить инженеру-разработчику возможность в реальном времени наблюдать за внутренними переменными ECU и изменять их, не перепрошивая электронный блок. XCP используется исключительно на этапе разработки и калибровки ECU.

Важное преимущество XCP — это его независимость от физической шины. Обозначение "X" в названии означает, что протокол может работать поверх CAN, CAN FD, Ethernet, FlexRay, UART и других интерфейсов. Это делает его универсальным инструментом, пригодным для разработки самых разных систем.

Почему появился XCP на фоне UDS?

Нужен был диагностический протокол, который для своей реализации потребует меньше системных ресурсов от RAM, Flash памяти и мощности CPU.

Нужен был протокол, который позволит достигнуть большей битовой скорости в таких интерфейсах как CAN, UART и прочие.

Основные принципы работы XCP

Протокол XCP обычно работает поверх канального протокола CAN, однако XCP также может работать поверх других протоколов, таких как UART, SPI, CAN-FD, Ethernet: TCP или UDP, FlexRay, USB и другим.

В сети XCP есть одно ведущее устройство (master) и несколько ведомых (slave). Работает по принципу запрос-ответ. Master инициирует сессию общения. Slave отвечает. Широковещательных пакетов нет (за исключением сообщения GET_SLAVE_ID). Master периодически посылает сообщения Data stimulation без ожидания ответа на них. Slave не может одновременно общаться с несколькими мастерами. Программа на ПК является ведущим и адресно опрашивает конкретный ECU.

Произвольный доступ к ячейкам памяти ECU (RAM, Flash) позволяет считывать любые переменные (сигналы с датчиков, коэффициенты ПИД-регулятора) и изменять калибровочные таблицы (топливные карты, углы опережения зажигания) на лету.

Структура сообщения XCP

Сообщение протокола XCP в общем случае состоит из трёх частей: заголовка, пакета и хвоста.

Структура сообщения XCP

Структура сообщения XCP

Пакет XCP содержит следующие поля:

Поле

Размер

Описание

Identification field

1-4 байта

Идентифицирует лишь тип пакета, само устройство адресуется по CAN ID

Timestamp field

1-4 байта

Метка времени

Data field

0..N байт

Данные

Есть два типа пакетов:

  1. CTO (Command Transfer Object) — для передачи команд управления

  2. DTO (Data Transfer Object) — для передачи синхронных данных

Пример обмена данными по XCP:

Пример обмена данными по XCP

Пример обмена данными по XCP

CAN

При работе поверх протокола CAN заголовок будет отсутствовать.

Структура сообщения XCP при работе с CAN

Структура сообщения XCP при работе с CAN

UART/SPI

При работе по UART либо SPI пакет выглядит следующим образом:

Структура сообщения XCP при работе по UART

Структура сообщения XCP при работе по UART

По сравнению с CAN, в варианте по UART добавляются следующие поля:

Поле

Длина

Описание

LEN

2 байта

Длина пакета (не считая заголовка или хвоста)

CTR

2 байта

Последовательный номер пакета

FILL

0..N

Заполнение (используется, если по каким то причинам требуется посылать пакеты какого-то специфического размера)

CS

2 байта

Контрольная сумма вычисляется простым суммированием байтов в XCP-заголовке, XCP-пакете и XCP-хвосте, не считая самого поля CS. Переполнение игнорируется.

Описание структуры данных XCP

XCP обращается к переменным не по имени, а по их адресу в физической памяти (RAM или Flash). Соответствие между адресами и именами переменных находятся в текстовом A2L-файле, который стандартизован ASAM MCD-2 MC. Это значит, что для доступа к переменной в ECU не надо добавлять в прошивку какой бы то ни было отдельный Си-код, как это происходит в случае с протоколом UDS. Прошивка просто содержит минималистическое ядро XCP-протокола, которое только лишь читает и пишет физическую память (как и, к примеру, с JTAG).

A2L — это текстовый файл, описывающий структуру данных, передаваемых по протоколу A2L. A2L перечисляет в себе, с какими переменными мы будем работать (читать и писать). Файл A2L содержит информацию о переменных в памяти ЭБУ. Формат A2L файла таков, чтобы его было легко синтаксически анализировать всяческими утилитами.

Пример файла A2L

Пример файла A2L

В файле A2L могут быть комментарии в стиле C, есть include. Файл задаёт переменные, их типы данных, адреса в памяти.

Структура файла A2L

Структура файла A2L

Переменные, описываемые в файле A2L, могут быть различных типов данных:

Формат файла A2L не следует путать с такими форматами, как DBC или ARXML, так как последние два используются для описания структуры CAN, Ethernet и SOME/IP-сообщений, но не структур данных в CCP или XCP.

Часто внутри ECU функции даже не вычисляются формулами. Вместо этого в прошивку загружаются Look Up таблицы. Значения этих таблиц порой приходится редактировать, чтобы снова сохранить в ROM. Это как раз делают по протоколу XCP.

XCP позволяет гибко калибровать любой параметр и считывать любой сигнал, при этом в коде программы никаких действия для этого не нужно делать, т.к. XCP-модуль напрямую общается с памятью, а вся информация о переменных хранится в файле *.а2l.

Преимущества XCP

Благодаря XCP и совместимому с ним софту можно строить графики и даже анимации поверхностей по тем данным, что читаются из ECU. В этом плане XPC похож на утилиту Segger J-Scope. Такой диагностики не достигнуть через текстовые CLI терминалы и ASCII графику.

К примеру, в CanEasy можно использовать как протокол CCP, так и XCP, с последующим выводом полученных от ЭБУ данных на любой тип панелей, начиная от простых индикаторов сигнала, до навороченных RichPanels.

Термины и обозначения

XCP

Universal Measurement and Calibration Protocol

CCP

CAN calibrarion protocol

PDU

Protocol Data Unit

OEM

Original equipment manufacturer

MC

Measurement and calibration

MCD

Measurement, Calibration and Diagnostic systems

CAN

Controller Area Network

A2L

File Extension for an ASAM 2MC Language File (ASAM MCD-2 MC Language)

UDP

User Datagram Protocol

ODT

Object Description Table

USB

Universal Serial Bus

PID

Packet IDentifier

SxI

SPI или SCI

ASAM

Association for Standardization of Automation and Measuring Systems

CAN FD

Controller Area Network Flexible Data rate

DBC

CAN database

SCI

Serial Communications Interface

SPI

Serial Peripheral Interface

ECU

Electronic Control Unit

Список использованных источников

  1. CCP / XCP on CAN Explained - A Simple Intro [2025]

  2. CANape – The ECU Measurement & Calibration Tool

  3. XCP The standard protocol for the embedded Development

  4. CanEasy: working with XCP: basics

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.