本文是CCP/XCP协议全集的第一篇:历史概述和数据包格式。
1.概述
1996年6月,ASAP组织首次发布了CCP协议的实际应用2.0版,这个版本为ECU标定系统开发提供了标准平台,并逐渐得到了世界各大汽车公司的认可和应用。
要认识清楚CCP协议,就需要先了解一下ASAM组织(自动化及测量系统标准协会),该组织的主要工作之一是推动汽车工业自动化和测量系统的标准化,它的前身是Audi、BMW、Mercedes-Benz、Volkswagen等欧洲汽车公司成立的标准化组织ASAP,致力于推动汽车ECU标定系统的标准化。
目前CCP协议的最新版本是V2.1,随着汽车上的通信方式逐渐增多,基于CAN的标定协议已经无法满足需求,ASAM组织又发布了XCP协议,XCP协议支持CAN、Ethernet、FlexRay、SPI、SCI以及USB等通讯方式。
XCP的最新版本是1.5,其1.0版本于2003年发布。
2.ECU标定
汽车上需要标定的ECU主要包括发动机ECU、VCU、变速箱ECU、ABS、EBS、转向助力ECU等。
由于汽车的运行工况非常之多,温度、压强、湿度等外部环境,都会影响机械和电子零部件的运行状况,因为组成这些事物的微观粒子,它们是在不断运动着,它们的运动会受到环境的影响,微观影响宏观。而标定通过调整和优化ECU内部参数,使得整个控制系统适应它的运行环境,确保在各种工况下都能达到最佳性能。
例如:
a = 5;
b = 2;
y = a * x + b;
在示例中,如果偏移量b和因子a取决于具体的车辆,那么a和b的值必须根据车辆的具体条件进行个别调整。这意味着算法本身保持不变,但参数值会随车辆的不同而变化。
XCP从属设备并非绝对需要在ECU中使用。它可以在不同的环境中实现:从基于模型的开发环境到硬件在环(HIL)和软件在环(SIL)环境,再到用于通过调试接口(如JTAG、NEXUS和DAP)访问ECU内存的硬件接口。
3.XCP协议数据包
通过XCP协议的机制,可以实现对内存内容的读写访问。这些访问是以地址为导向的方式进行的。读访问允许从RAM中测量参数,而写访问则允许校准RAM中的参数。XCP允许与ECU中的事件同步执行测量,这确保了测量值之间的相关性。每次重新启动测量时,都可以自由选择要测量的信号。对于写访问,需要校准的参数必须存储在RAM中,这就要求有一个校准概念。
这引出了两个重要问题:
1.XCP协议的用户如何知道RAM中测量和校准参数的正确地址?
2.校准概念是什么样的?
第一个问题通过A2L文件解决,A2L文件(ASAM MCD-2 MC Calibration Package,即ASAM标准化组织制定的汽车测量、标定和数据交换标准中的标定包文件)是ECU标定过程中非常重要的一个文件,它包含了ECU的硬件和软件信息,包括参数的地址、类型、单位、范围等,使得标定工具能够正确地与ECU进行通信和数据交换。通过A2L文件,XCP协议的用户可以获取到RAM中测量和校准参数的正确地址。
而校准概念则是一个更广泛的主题,它涉及到如何定义和管理ECU中的参数,包括参数的初始化、存储、校准流程、数据持久化等方面,后面的文章会说明。
协议数据格式
在XCP(统一标定协议)中,数据在主从设备之间是通过基于消息的方式进行交换的。整个“XCP消息帧”被嵌入到传输层的一个帧中(在以太网环境下使用UDP时,XCP消息帧会被封装在UDP数据包中)。这个帧由三个部分组成:XCP头部、XCP数据包和XCP尾部。
关于CTO和DTO,网上的解释基本都是错误的,真实的解释如下:
CTOs(命令传输对象)用于从主设备向从设备传输命令,以及从从设备向主设备传输响应。
DTOs(数据传输对象)用于从设备在事件触发时,发送测量和校准数据到主设备。
其中各个值的含义如下:
Identification域
在消息交换过程中,主设备和从设备都必须能够确定对方发送的是哪条消息。这是通过标识符字段来实现的。这就是为什么每条消息都以数据包标识符(PID)开始的原因。
在传输CTO(命令传输对象)时,PID字段完全足以识别CMD(命令)、RES(响应)或其他CTO数据包。在图中,可以看到从主设备发送到从设备的命令使用从0xC0到0xFF的PID。而XCP从设备使用从0xFC到0xFF的PID来响应主设备或向主设备发送信息。
Timestamp域
DTO(数据传输对象)数据包使用时间戳,传输CTO(命令传输对象)消息时则不使用时间戳。从设备使用时间戳来提供与测量值相关的时间信息。这意味着主设备不仅获得了测量值,还获得了获取该测量值的时间点。测量值到达主设备所需的时间长短已不再重要,因为测量值和时间点之间的关系直接来自从设备。
从设备发送时间戳是可选的。
Data域
XCP数据包包含存储在数据字段中的数据。在CTO(命令传输对象)数据包的情况下,数据字段由不同命令的特定参数组成。DTO(数据传输对象)数据包包含从从设备获取的测量值,而在发送STIM(激励)数据时,数据包则包含来自主设备的值。
4.总结
本文讲解了CCP/XCP协议的来源,分析了协议的用途和协议数据包格式,后面将继续讲解协议的其他部分,欢迎关注。
开源了几个项目:
基于UDS on CAN的Bootloader的刷写上位机:
https://github.com/sydyg/UDS-on-Bootloader.git
OSEKNM协议栈:
https://github.com/sydyg/OSEK_NM
嵌入式、汽车电子学习笔记: