# XCP 模块规范 (Specification of Module XCP) > **AUTOSAR CP Release 4.4.0** > **文档 ID 412: AUTOSAR_SWS_XCP** ## 元信息 | 项目 | 内容 | | --- | --- | | 文档标题 | XCP 模块规范 | | 文档所有者 | AUTOSAR | | 文档责任方 | AUTOSAR | | 文档标识号 | 412 | | 文档状态 | Final | | 所属 AUTOSAR 标准 | Classic Platform | | 所属标准版本 | 4.4.0 | ## 文档变更历史 | 日期 | 版本 | 变更方 | 变更说明 | | --- | --- | --- | --- | | 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 细微更正 | | 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 修正/澄清 | | 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 以太网支持增强 | | 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 编辑修正 | | 2014-10-31 | 4.2.1 | AUTOSAR Release Management | DAQ 增强 | | 2014-03-31 | 4.1.3 | AUTOSAR Release Management | 编辑变更 | | 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 增加 XCP on UDP/TCP | | 2013-03-15 | 4.1.1 | AUTOSAR Administration | 引入 XCP | --- ## 目录 - [1. 介绍](#1-介绍) - [2. 缩略语](#2-缩略语) - [3. 相关文档](#3-相关文档) - [4. 约束与假设](#4-约束与假设) - [5. 与其他模块的依赖](#5-与其他模块的依赖) - [6. 需求可追溯性](#6-需求可追溯性) - [7. 功能规范](#7-功能规范) - [8. API 规范](#8-api-规范) - [9. 配置规范](#9-配置规范) --- ## 1. 介绍 本规范规定了 AUTOSAR 基础软件模块 **XCP** (Universal Calibration Protocol) 的功能、API 和配置。 XCP 是 ASAM 标准化的通用测量和标定协议,支持: - 测量(Measurement):读取 ECU 内部变量 - 标定(Calibration):修改 ECU 标定参数 - 数据采集(DAQ):周期或事件触发的数据流 - 数据刺激(STIM):向 ECU 注入数据 XCP 支持多种传输层: - XCP on CAN - XCP on FlexRay - XCP on Ethernet (UDP/TCP) --- ## 2. 缩略语 | 缩略语 | 描述 | | --- | --- | | AUTOSAR | Automotive Open System Architecture | | A2L | ASAM 2MC 语言文件扩展 | | ASAM | Association for Standardization of Automation and Measuring Systems | | BSW | Basic Software | | CAN | Controller Area Network | | CanIf | CAN Interface | | CTO | Command Transfer Object | | DAQ | Data AcQuisition | | DTO | Data Transfer Object | | ECU | Electronic Control Unit | | FrIf | FlexRay Interface | | LPDU | Data Link Layer PDU | | MCD | Measurement Calibration and Diagnostics | | MISRA | Motor Industry Software Reliability Association | | ODT | Object Descriptor Table | | PDU | Protocol Data Unit | | SchM | Schedule Manager | | SRS | Software Requirements Specification | | STIM | Data Stimulation packet | | SW | Software | | SWS | Software Specification | | TCP/IP | Transmission Control Protocol / Internet Protocol | | TS | Time Stamp | | UDP/IP | User Datagram Protocol / Internet Protocol | | XCP | Universal Calibration Protocol | | ISR | Interrupt Service Routine | | DET | Default Error Tracer | --- ## 3. 相关文档 ### 3.1 输入文档 - [0] Basic Software Module Description Template - [1] List of Basic Software Modules - [2] AUTOSAR Layered Software Architecture - [3] General Requirements on Basic Software Modules - [4] Specification of RTE (BSW Scheduler) - [5] Specification of ECU Configuration - [6] Specification of Memory Mapping - [7] Specification of FlexRay Interface - [8] Specification of CAN Interface - [9] Specification of Socket Adaptor - [10] Requirements on XCP Module - [11] AUTOSAR OS Specification - [12] General Specification of Basic Software Modules ### 3.1.1 相关标准 - [13] ASAM XCP – Part1 Overview, Version 1.1 - [14] ASAM XCP – Part3 Transport Layer Specification XCP on CAN, Version 1.2 - [15] ASAM XCP – Part3 Transport Layer Specification XCP on Ethernet (TCP_IP & UDP_IP), Version 1.1 - [16] ASAM XCP – Part3 Transport Layer Specification XCP on FlexRay, Version 1.1 ### 3.2 相关规范 SWS BSW General [12] 适用。 --- ## 4. 约束与假设 ### 4.1 限制 不在范围内的功能: - SET_DAQ_ID 命令(XCP CAN 传输层规范) - AUTOSAR RTE 当前不提供 XCP 直接通信 API - NAX 仅通过 ASAM 配置文件 A2L 配置 - LIN 总线不支持 ASAM XCP ### 4.2 适用车域 n/a --- ## 5. 与其他模块的依赖 ### 5.1 AUTOSAR RTE (BSW Scheduler) 调度 XCP main 函数。 ### 5.2 AUTOSAR FlexRay Interface 通过 FlexRay 收发 XCP PDU。 ### 5.3 AUTOSAR CAN Interface 通过 CAN 收发 XCP PDU。 ### 5.4 AUTOSAR SocketAdaptor 通过 Ethernet 收发 XCP PDU。 ### 5.5 AUTOSAR RTE 用于将 ROM/FLASH 中的标定参数复制到 RAM(双指针方法)。 --- ## 6. 需求可追溯性 | 需求 ID | 描述 | 满足者 | | --- | --- | --- | | SRS_BSW_00101 | 初始化 | SWS_Xcp_00010 | | SRS_BSW_00407 | 版本信息 | SWS_Xcp_00020 | | SRS_Xcp_00001 | XCP 协议 | SWS_Xcp_00050 | > **[摘要]** 完整需求追溯表见原文 PDF 第 18-25 页。 --- ## 7. 功能规范 ### 7.1 XCP 协议概述 XCP 是基于 master-slave 的协议: - **Master**:外部工具(标定工具,如 INCA、CANape) - **Slave**:ECU 上的 XCP 模块 通信通过 CTO 和 DTO 进行: - **CTO** (Command Transfer Object):命令/响应 - **DTO** (Data Transfer Object):DAQ/STIM 数据 ### 7.2 标准 XCP 命令 | 命令 | 含义 | | --- | --- | | CONNECT | 建立 XCP 会话 | | DISCONNECT | 关闭会话 | | GET_STATUS | 查询状态 | | GET_ID | 获取标识 | | SET_MTA | 设置内存传输地址 | | UPLOAD | 上传内存 | | DOWNLOAD | 下载到内存 | | FREE_DAQ | 释放 DAQ 列表 | | ALLOC_DAQ | 分配 DAQ 列表 | | WRITE_DAQ | 写 DAQ 项 | | SET_DAQ_LIST_MODE | 配置 DAQ 模式 | | START_STOP_DAQ_LIST | 启动/停止 DAQ | | GET_DAQ_CLOCK | 获取 DAQ 时钟 | | PROGRAM_START | 开始编程 | | PROGRAM | 编程数据 | | PROGRAM_RESET | 编程后复位 | ### 7.3 DAQ 数据采集 #### 7.3.1 DAQ 配置 - DAQ List - ODT (Object Descriptor Table) - ODT Entry #### 7.3.2 DAQ 运行模式 - 周期触发 - 事件触发 - 直接写 ### 7.4 标定页切换 - Calibration Page:RAM 中的标定值 - Working Page:工作页 - Reference Page:参考页(ROM/Flash) ### 7.5 传输层 #### 7.5.1 XCP on CAN - DLC 通常为 8 - 11 位或 29 位 CAN ID #### 7.5.2 XCP on FlexRay - 使用 FlexRay 静态/动态段 - 支持帧拆分 #### 7.5.3 XCP on Ethernet - UDP 或 TCP - 端口可配置 ### 7.6 错误分类 #### 7.6.1 开发错误 | 错误名 | 错误码 | 含义 | | --- | --- | --- | | XCP_E_INIT_FAILED | 0x01 | 初始化失败 | | XCP_E_UNINIT | 0x02 | 未初始化 | | XCP_E_PARAM_POINTER | 0x03 | NULL 指针 | | XCP_E_INVALID_PDUID | 0x04 | 无效 PDU ID | --- ## 8. API 规范 ### 8.1 导入类型 | 模块 | 头文件 | 导入类型 | | --- | --- | --- | | ComStack_Types | ComStack_Types.h | PduIdType, PduInfoType | | Std_Types | Std_Types.h | Std_ReturnType, Std_VersionInfoType | ### 8.2 类型定义 #### 8.2.1 Xcp_ConfigType ```c typedef struct Xcp_ConfigType Xcp_ConfigType; ``` ### 8.3 函数定义 #### 8.3.1 Xcp_Init ```c void Xcp_Init(const Xcp_ConfigType* Xcp_ConfigPtr) ``` | Service ID | 0x00 | | --- | --- | #### 8.3.2 Xcp_GetVersionInfo ```c void Xcp_GetVersionInfo(Std_VersionInfoType* versioninfo) ``` #### 8.3.3 Xcp_Transmit ```c Std_ReturnType Xcp_Transmit( PduIdType TxPduId, const PduInfoType* PduInfoPtr ) ``` #### 8.3.4 Xcp_MainFunction ```c void Xcp_MainFunction(void) ``` #### 8.3.5 Xcp_SetTransmissionMode ```c void Xcp_SetTransmissionMode( NetworkHandleType Channel, Xcp_TransmissionModeType Mode ) ``` ### 8.4 回调通知 #### 8.4.1 Xcp_RxIndication ```c void Xcp_RxIndication( PduIdType RxPduId, const PduInfoType* PduInfoPtr ) ``` #### 8.4.2 Xcp_TxConfirmation ```c void Xcp_TxConfirmation(PduIdType TxPduId) ``` #### 8.4.3 Xcp_TriggerTransmit ```c Std_ReturnType Xcp_TriggerTransmit( PduIdType TxPduId, PduInfoType* PduInfoPtr ) ``` ### 8.5 期望接口 #### 8.5.1 强制接口 - CanIf_Transmit / FrIf_Transmit / SoAd_IfTransmit - Det_ReportError --- ## 9. 配置规范 ### 9.1 容器与配置参数 #### 9.1.1 Xcp 根容器。 #### 9.1.2 XcpConfig 配置集容器。 #### 9.1.3 XcpGeneral | 参数 | 类型 | 说明 | | --- | --- | --- | | XcpDevErrorDetect | bool | DET 启用 | | XcpVersionInfoApi | bool | 版本信息 API | | XcpMainFunctionPeriod | float | main 周期 | | XcpOnCanEnabled | bool | XCP on CAN 启用 | | XcpOnFrEnabled | bool | XCP on FlexRay 启用 | | XcpOnEthernetEnabled | bool | XCP on Ethernet 启用 | #### 9.1.4 XcpDaqList DAQ 列表配置。 #### 9.1.5 XcpEvent 事件配置(周期、信道等)。 #### 9.1.6 XcpSegment, XcpPage 段和页配置(用于标定)。 > **[摘要]** 完整配置详见原文 PDF 第 50-60 页。 --- ## 翻译说明 - 本译本基于 AUTOSAR CP 4.4.0 的 XCP 规范 (Document ID 412,共 62 页) - 摘要标记位置:第 6 章需求追溯、第 9 章配置