XCP服务
一、XCP协议简介
核心功能:通过ECU网络接口在线实现变量观测、参数修改和程序旁路
应用场景:ECU复杂算法参数需在整车运行后实时调整,如发动机控制参数标定
1. ECU中算法参数的确定
- 开发难点:ECU运行的复杂算法(如PID控制)包含大量无法在开发阶段确定的参数。
- 解决方案:需在整车实际运行中实时修改参数并观测反馈,例如:
- 修改燃油喷射脉宽参数;
- 观测发动机转速响应曲线;
- 最终确定最优参数值组合。
2. ASAM组织的成立
- 成立背景:1990年代德系车企与供应商联合推动标准化。
- 主要成员:
- OEM:奥迪、宝马、奔驰、大众;
- 供应商:BOSCH、ETAS、Vector。
- 首个成果:基于CAN总线的CCP标定协议。
3. XCP协议的产生
- 技术演进:
- CAN总线局限性(8字节payload/1M带宽)无法满足大数据量传输;
- 从CCP协议扩展为支持多总线的XCP协议。
- 协议特点:
- "X"代表多总线支持:CAN/TCP/IP/UDP/USB/FlexRay;
- 保持CCP核心功能的同时提升传输效率。
4. XCP协议的功能演示
-
系统组成:
- 上位机软件(如CANape);
- 网络接口卡(物理/Virtual CAN);
- 目标ECU。
-
操作流程:
- 建立通信连接;
- 清空Trace记录;
- 通过指令交互验证连接。
-
核心功能演示:
- 实时观测:图形化显示ECU传输的正弦波信号;
- 参数修改:振幅从20调整为10再调整为5,修改立即生效并反映在波形上;
- Map标定:支持二维坐标点参数修改;
- 同步传输:整张Map数据实时上传更新。
-
协议分层:
- CAN总线:协议层→传输层→数据链路层→物理层;
- 以太网:增加网络层(TCP/IP模块);
- 特殊机制:类似J1939协议的传输层包重组功能。
二、AUTOSAR框架下的XCP协议
1. XCP协议的系统描述
- PDU类型:在System Editor中可查看General Purpose PDU(通用属性PDU),这是XCP协议的基础通信单元。
- 协议实现:本章使用的XCP协议是在CAN总线上实现的,可通过Frame查看相关报文。
- 报文分类:
- 接收报文:上位机指令和广播指令;
- 发送报文:ECU反馈的Response指令;
- 数据采集:包含3个DAQ(Data Acquisition)指令。
- 协议特性:
- 不产生Signal传递到ASW层;
- 不需要Signal映射到PDU;
- 核心概念包括CMD、Response、DAQ、Steam Calibration等。
- 参考文档:需查阅ASAM组织发布的XCP协议标准文档了解详细定义。
2. 现有工程下XCP系统描述的移植
(1)查找已有XCP系统描述文件
- 文件定位:使用AR Explorer工具在File System中查找;
- 存储位置:系统描述存储在"srg_dbc_system_description.arxml"文件中。
(2)复制XCP系统描述到目标目录
- 操作要点:
- 目标工程目录与源文件同名(工具自动生成);
- 可直接使用复制粘贴操作进行迁移;
- 涉及6条XCP报文需要转移。
(3)粘贴XCP系统描述到目标AR XML文件
- 操作步骤:
- 在PDU Package中找到6条XCP报文(编号1-6);
- 使用拷贝功能粘贴到目标ARXML文件;
- Signal层不涉及XCP部分,无需操作;
- Frame层同样包含6条需要转移。
(4)处理XCP报文挂载与端口粘贴
- ECU配置:
- 将XCP报文全部挂载在LLCE0控制器下;
- 需要复制Frame Port和IPDU Port到目标工程;
- 注意保持系统描述的完整性。
(5)检查并修改不正确的名字
- 验证步骤:
- 使用AR Explorer检查VCU Starter系统描述;
- 手动修改Frame Port和IPDU Port的控制器名称;
- 确保所有引用关系正确建立。
(6)BSW部分的配置思路整理
- 配置层级:
- XCP到CANIF的ECUC配置;
- XCP模块本身的配置;
- CANIF到CAN的配置。
- 注意事项:
- 避免使用自动配置工具(会覆盖手动配置);
- 手动配置存储在"ecu_config_bsw_generation/project.ecu_values.arxml";
- XCP属于应用层协议,包含协议解析和传输层功能。
3. BSW的配置
(1)创建XCP模块
- 模块独立性:为XCP功能单独创建AR XML文件存储相关信息,保持功能模块的独立性;
- 复用性优势:将功能独立性强的模块集中存放,便于后续工程直接复用;
- 描述挂载:可将ECUC描述同时挂载到新建的XCP.ARXML文件中。
(2)配置XCP模块
① XCP模块描述与生成
- 文件位置:
- ECUC描述位于BSW工具生成的Project_ECUC_Values.ARXML;
- XCP模块位于新建的XCP.ARXML文件。
- 功能整合:建议将XCP相关功能(PDU、CAN等)集中存放。
② XCP模块的功能整合
- 完整导入:模块化设计允许将XCP模块整体导入/切换工程;
- 配置隔离:自动配置工程时不会影响XCP模块本身配置。
③ 复制与删除重复描述
- 操作步骤:
- 将ECUC_TIF整体拷贝到XCP.ARXML;
- 删除XCP文件中重复的ECUC描述;
- 同步删除CRB Settings冗余配置。
④ 创建PDU
- 数量要求:需要创建6条PDU;
- 操作位置:在XCP.ARXML文件的ECUC下创建。
⑤ 引入ECUC Values问题
- 问题现象:ECUC未正确引入Values描述;
- 根本原因:XCP.ARXML文件路径配置异常。
⑥ 修改文件路径
- 解决方案:
- 使用AR Explorer查看工程;
- 将XCP路径修改为与Project_ECUC一致(ECUC Module Configuration Values);
- 使用Rename功能完成路径统一。
⑦ 验证PDU创建
- 验证方法:双击打开两个ARXML文件;
- 验证结果:新建的6个PDU已出现在ECUC模块下。
⑧ 使用Split View功能
- 功能作用:同时展示多个文件的模块描述;
- 核心优势:
- BSW配置工具更新时不会覆盖XCP.ARXML中的自定义配置;
- 支持多文件共同描述同一模块。
⑨ PDU命名与配置
- 命名规则:
- 按VCU接收的CAN消息类型命名;
- 明确方向标识(CAN IF→XCP模块)。
- 配置检查:
- Command命令接收于上位机;
- Response需配置为XCP模块→CAN IF方向。
⑩ 保存配置
- 保存时点:完成所有PDU配置和方向检查后;
- 注意事项:确保响应消息方向配置正确(XCP→CAN IF)。
(3)配置XCP模块下的子项
① a two l文件的配置与生成
- 文件生成机制:AB工具会根据配置自动生成a two l文件,包含core load、event channel声明和tp层声明;
- 配置内容:
- 包含core load配置项;
- 包含event channel声明;
- 包含tp层声明;
- 使用建议:该功能在初始配置阶段可以暂不启用。
② elf文件创建与使用
- 替代方案:系统编译完成后可直接使用elf文件创建,无需依赖ISO lo AB功能;
- 配置时机:当前阶段建议暂不配置该选项。
③ General配置详解
- 功能裁剪:
- 扩展地址:不使用;
- 下载功能:允许;
- 上传功能:允许;
- 标定功能:允许。
- 特殊配置:
- Received notification:不使用;
- 命名校验:启用(使上位机可获取daq和配置信息);
- Call out:不使用。
- 内存限制:
- DAQ memory:建议4k空间(需根据ECU实际RAM大小调整);
- RAM shifting:不使用。
- 错误处理:为简化工程,XCP模块错误不进行处理。
- 时间基准:
- Main function peer reason决定模块运行基准时间;
- 需选择最小分频满足未来数据获取需求(如1ms获取数据则需设定小于1ms);
- 常用1ms时间基准已足够快。
④ 配置错误处理与检查
- 错误类型:删除已创建的element value会导致错误提示;
- 解决方法:需直接删除对应element而非仅删除value;
- 检查要点:完成配置后必须逐一检查所有配置项。
⑤ 其他重要配置选项
- 产品线选择:建议选择CS mo四二;
- 安全功能:可根据实际需求开启XCP锁定/解锁功能;
- 同步功能:
- 同步数据获取:建议开启;
- 同步数据激励:建议开启;
- 时间参数:
- 时间桌ticks:选择1;
- 时间戳单位:使用100微秒。
⑥ 配置说明与参数填写
- 参考依据:右侧配置说明提供详细参数填写指导;
- 注意事项:需严格按说明内容填写各项参数。
⑦ 确定XCP版本与必要配置
- 版本确认:需明确XCP协议版本;
- 配置标识:
- 加黑部分为必要配置项;
- 未加黑部分也可能包含重要配置;
- 配置原则:根据实际使用需求逐一确认每个配置项的开启状态和参数设置。
(4)配置传输层
① 传输层基础配置
- 配置位置:在XCP config中进行传输层配置;
- 初始选项:
- Event Channel(事件通道):稍后配置;
- Transport Layer(传输层):优先配置。
② 传输层参数设置
- 总线类型声明:创建XSP模块时自动创建传输层,需声明总线类型;
- 关键参数:
- 使用4096配置(与J Nero部分保持一致);
- XTP功能过载通知:选择不发出通知;
- 以太网包对齐方式:因使用CAN协议,不做配置。
③ 报文与时间戳配置
- 报文长度:CTO/DTO:与CAN报文数据长度保持一致;
- 时间戳配置:使用1字节描述XCP时间戳;
- ID配置:
- 工具可能不会自动生成未加黑/无星号的ID;
- 示例:手动配置ID为0;
- 传输通道命名:需为传输通道命名;
- 物理层协议:选择XCP on CAN。
④ PDU配置
接收PDU配置
- 指令类型:
- 必须包含command接收通道(建立XCP协议必需);
- 可选stream指令;
- ID配置策略:
- 部分ID由工具自动生成;
- 建议暂不填写,通过配置校验阶段提示补全;
- 事件通道引用:接收PDU不涉及事件通道,保持空置;
- 引用配置:
- 引用ECOC中配置的IPU;
- 选择CANIF到XCP模块的路径。
发送PDU配置
- 服务类型:
- 选择Response;
- 或Response+Event Channel服务(支持未来共用);
- ID处理:同样暂不填写;
- 事件通道引用:创建前保持空置。
⑤ 事件通道建立
- 命名规则:
- 示例:ev0(可自定义);
- Short name对应为e0;
- 优先级设置:
- 范围:255为最高;
- 示例配置为1;
- 时间周期:配置1ms表示每毫秒处理一次;
- 通道类型:选择常用DAQ类型;
- 引用配置:
- 创建后需返回tx PDU配置引用;
- bypass功能未启用。
⑥ 配置完成说明
- 扩展建议:
- 可建立多个事件通道;
- 可配置多条发送PDU;
- 后续步骤:
- 完成传输层配置后进入CAN模块;
- 继续配置数据链路层和物理层。
(5)配置数据链路层和物理层
① 配置接收与发送报文数量
- 初始配置:在CAN IF模块中需要明确接收和发送的报文数量,示例中配置了1条接收和1条发送报文;
- 配置顺序:先完成XCP层的配置(1收1发),再进入CAN IF层进行详细配置。
② 配置rx pdu
- ID设置:
- 接收ID暂定为,实际使用;
- 数据长度设为8字节;
- PDU序列的ID index保持空白;
- 上层模块:选择XCP作为上层模块,当前未配置H2H;
- 标准检查:需要检查模块的标准接收函数;
- PDU选择:复用ECUC中的Rx Command PDU;
- 控制器选择:使用FlexCAN 0控制器。
③ 配置h2h
- 注意事项:由于CAN控制器的mailbox已被占用且都是Full类型,需先在CAN中创建后才能完成引用;
- 配置顺序:先完成CAN层的mailbox创建,再返回CAN IF层完成剩余配置。
④ 配置发送的mailbox
- 基础设置:
- 标准帧ID设为;
- 选择Tx Confirmation类型;
- mailbox分配:指定在mailbox 5上发送;
- 引用关系:复用ECUC中配置的PDU。
⑤ 配置hth
- 复用策略:采用已有mailbox进行配置,避免重复创建;
- 验证步骤:需要检查发送mailbox 5的配置状态。
⑥ 建立相关mailbox
- 操作要点:在CAN层建立与PDU对应的mailbox;
- 复用原则:可复用已有mailbox资源。
⑦ 确认mailbox 5类型
- 类型修改:将mailbox 5从Full类型改为Basic类型;
- 验证方法:通过CanHandleIdType参数确认当前类型。
⑧ 建立接收hardware object
- 命名规则:沿用已有命名规范,编号为6;
- 属性设置:
- 类型为接收;
- 需要引用对应的controller;
- 完成标志:配置完成后可返回CAN IF层。
⑨ 完成h2h应用
- 关联配置:将H2H与已建立的PDU和mailbox进行关联;
- 验证方法:检查各层配置的引用关系是否正确。
⑩ 配置总结与校验阶段
- 配置顺序:协议层数据→数据传输层→数据链路层→物理层;
- 连接方式:使用PDU将各层配置连接起来;
- 校验提示:可能出现AUTOSAR配置规则问题,需按工具提示逐步解决。
三、内容总结
1. XCP协议基础
- 协议目的:XCP协议是为实现高效、可靠的通信而设计的应用层协议;
- 演示工具:使用KAP工具可以直观展示XCP协议的实际使用效果;
- 网络层级:在AUTOSAR架构下,XCP协议位于网络模型的应用层。
2. 协议实现架构
- 功能分层:
- 协议层:由AUTOSAR BSW层的XCP模块实现;
- 数据传输层:负责协议数据的实际传输;
- 配置关联:XCP模块配置与底层通信配置存在交叉参考关系。
3. 配置要点
- 配置内容:
- 协议层参数配置;
- 数据传输层参数配置;
- 注意事项:
- PDU配置时需要明确upper layer模块;
- 数据链路层和物理层配置可参考CAN通信配置;
- 学习建议:将XCP配置与CAN通信配置对比学习,理解其相似的逻辑流程。
四、知识小结
知识点 | 核心内容 | 考试重点/易混淆点 | 难度系数 |
---|---|---|---|
XCP协议概述 | 用于ECU参数在线标定的通信协议,支持多种总线(CAN/TCP/IP/UDP等) | 与CCP协议的区别:CCP仅支持CAN总线 | ⭐⭐ |
协议发展历史 | 由ASAM协会(奥迪/宝马/奔驰等组成)从CCP协议拓展而来 | 关键演进原因:CAN总线带宽限制(1M/8字节) | ⭐ |
核心功能 | 实时观测/修改ECU变量、参数旁路、数据同步上传 | DAQ数据采集与标定功能的区别 | ⭐⭐⭐ |
协议分层结构 | 应用层(协议本身)+传输层+数据链路层+物理层 | 以太网版本多网络层 | ⭐⭐⭐⭐ |
CANape工具演示 | 展示正弦波振幅实时修改(20→10→5)、MAP图标定 | Trace窗口数据流分析 | ⭐⭐⭐ |
AUTOSAR实现 | XCP模块配置:协议层(General配置)+传输层(Transport配置) | Event Channel时间周期设置(1ms) | ⭐⭐⭐⭐ |
PDU配置流程 | 6条PDU分类(Command/Response/DAQ)+CAN Mailbox配置 | 硬件对象类型转换(Basic/Full) | ⭐⭐⭐⭐ |
工程移植方法 | 通过ARXML文件迁移系统描述(PDU/Frame/ECU端口) | 文件路径冲突处理 | ⭐⭐⭐ |