01.XCP 标定系统设计方案
本系统以飞思卡尔 32 位 MPC5644 作为微处理器,该微处理器最高总线时钟频率可达到 150 MHz,内部 192 KB RAM ,4 MB 片内 Flash,满足多标定数据要求,其系统设计方案如图 1 所示,
图1 系统设计方案
在此系统中标定工具支持Vector 公司的CANape软件,ETAS 公司的 INCA 软件以及普华 I-CAL 软件,PC 端标定软件与标定工具对应,通信驱动模块可以是 CAN 总线,FlexRay 总线,USB 等,本系统使用 CAN 总线。
本系统的工作原理是安装于 PC 端的标定软件通过 GUI 界面发送指令,标定工具将命令转换为通信数据,发送给微处理器MPC5644 通信驱动模块,XCP 标定协议栈根据命令要求进行相应操作, 其通信命令包括标准命令组,标定命令组,页切换命令组, DAQ 基本命令组,Flash 刷写组, XCP 标定协议栈响应命令返回给PC 标定软件,确认操作是否成功。
02.符合AUTOSAR 架构的XCP 协议实现
在AUTOSAR 软件架构中,通信模块通过 Interface接口模块与驱动模块进行连接,本系统使用 CAN 总线传输标定数据通过 Can Interface 模块嵌入 AUTOSAR 软件架构, 符合 AUTOSAR 软件架构要求可以提高代码重用性,更换处理器型号后,代码不需要重新编写,减少软件系统研发成本,缩短开发周期。
AUTOSAR 通信协议栈一般抽象为总线驱动模块,总线接口模块,网络管理模块,通信管理模块,传输层模块以及内部数据交互模块等。其中,总线驱动模块实现硬件通信驱动,总线接口模块提供协议层数据路由,协议层数据路由通过诊断协议与诊断模块通信实现诊断功能, 网络管理模块通过网络管理协议实现其功能,内部数据交互模块实现 ECU 之间数据交互,同时运行环境抽象层与通信管理模块连接,实现与应用层之间的通信。图 2 显示 XCP 协议在 AUTOSAR 软件架构中的位置,可以基于 CAN 总线, FlexRay 总线或以太网通过总线接口接入AUTOSAR软件架构。
图2 XCP协议在AUTOSAR软件架构位置
XCP 协议实现数据标定与测量,通过 AUTOSAR软件架构的总线接口实现数据发送与接收,嵌入式操作系统的任务调度实现不同通道 DAQ 周期上传,在图 2 中,AUTOSAR XCP 模块在总线接口模块上方,如 FlexRay 或 CAN 总线,并通过总线接口实现 XCP 协议独立标定数据的传输。
2.1 XCP 协议数据发送过程分析
XCP 协议通过 CAN 接口模块的 CanIf_Transmit函数发送数据,发送成功后,调用 CanIf_TxIndication回调函数确认数据发送成功。图 3 详细说明数据发送成功后的处理过程。
图3 XCP协议数据发送过程
2.2 XCP 协议数据接收响应过程分析
XCP 协议通过 CAN 接口模块的 CanIf_RxIndication 函数接收测量数据,并对其进行处理,图 4 详细说明数据接收成功后处理机制, 具体实现了XCP独有Block 传输响应机制,包含DAQ 和STIM 处理流程以及事件错误与命令错误的处理机制, 由于CAN报文每帧最多 8Byte 数据,未满 8Byte 数据需用 0xFF填充,所以完成数据接收后,需先对报文长度进行检查,然后再判断接收命令是否正确,再进行相关处理,在Block 模式下,进行DOWNLOAD 和PROGRAM 命令处理,需先将命令数据包存入缓存池,判断当前标定或刷写命令的总字节长度是否大于6,如果否,则将状态置为接收,如果大于 6,则状态置为模块接收,并将缓存池ID 设置为DNLOAD_NEXT 或PROGRAM_ NEXT 命令,并结束接收过程,
图4 XCP协议数据接收响应过程
03.XCP 协议分析
XCP 协议通过主从模式进行通信, 其中主机一般指 PC 端标定软件,从机一般指包含 XCP 协议的 ECU 模块, 主机通过标准命令组中的 CONNECT 命令进行与从机的连接,建立连接后,主机就可以发送标定命令组的DOWNLOAD 与 UPLOAD 命令进行数据的标定与测定,发送页切换组命令SET_CAL_PAGE,实现 RAM 与 Flash 不同区域切换,发送 DAQ/STIM命令组的 WRITE_DAQ 等命令实现标定数据的实时上传,同时也可以发送Flash 刷写命令组的PROGRAM命令实现数据储存。
XCP 协议接受到命令后,首先判断前期接收到的命令是否处理完成,是否处于空闲状态,再判断接收到的命令是否有效,如果是则进行相应的命令处理,以标准命令处理过程为例,进行说明,
3.1 标准命令分析
在 XCP 协议中,标准命令主要用于主机与从机建立连接,数据的上传与下载以及数据解锁等,其包含的部分命令见表 1, 表1 XCP 协议部分标准命令组
通过 CONNECT 命令主机与从机建立连接, 如果上传与下载数据需要解锁,必须通过 GET_SEED命令获取密钥,并使用UNLOCK 命令进行解锁,解锁成功后,通过 SET_MTA 命令指定工作地址,之后才可以通过 DOWNLOAD 命令下载数据到该地址或通过UPLOAD 命令上传该地址对应的数据, 当完成数据的传输后,可以通过 DISCONNECT 命令断开主机与从机之间的连接, 表中的 DOWNLOAD_NEXT 命令用于 Block 功能传输中。
3.2 CCP通讯方式
采用主从方式,标定工具作为MASTER,发送命令报文(CRO),ECU作为SLAVE应答(DTO)。
polling(查询模式)
由主设备主动向从设备发送指令,从设备做出反馈应答,“一问一答”模式。效率相对较低,实现简单,占用ECU内存空间少;
DAQ(数据采集)
主设备发送一条请求指令后,从设备按照一定周期自动向主设备上报数据;效率高,实现复杂,数据量大,占用ECU内存空间大;
通讯过程中通过指令接收报文(CRO)和数据传输报文(DTO)实现数据及信息的传递。
指令接收报文(CRO),发送指令。
数据传输方向:master -> slave;报文中携带一个指令和在从设备中执行的指令参数;
1:CMD |
2:CTR |
3-8:Date and Parameter |
CMD:命令代码。如连接命令0x01,
CTR: 命令计数器。保证命令和应答的一致性。
数据传输报文(DTO),DTO出了应答命令外,还包括从数据主动上传的DAQ数据包。
1:PID |
2:ERR |
3:CTR |
4-8: Data and Parameter |
PID:包标识 [0XFE-0xFF],0XFF表示命令应答,0XFE表示错误报文
ERR:应答码
CTR: 命令计数器,与命令中的计数器对应。
1:PID |
2-8:DAQ VALUE |
PID:包标识 [0X00-0xFD],在DAQ模式下,此标识对应于相应的ODT标识(一次设置最多254个ODT)。表示后面的上传数据是此ODT中元素索引表中对应的变量值。
DAQ VALUE:ODT中元素索引表中对应的变量值,最大7个字节。
数据传输方向:slave -> master;DTO分为如下几类消息:
1、错误返回消息CRM;2、事件消息;3、数据采集;