XCP 通讯流
master 与 slaver, 通俗的来说就是我们常用的CANape/Inca 和 控制器。
PC端发送命令,控制器端回复响应。也就是下图的CMD RES。
大部分的人使用XCP 是去采集数据,分析数据,标定以及刷写。但是对报文本身可能不太理解,甚至都没有注意过具体的报文(未经过a2l解析的原始报文)。本文通过真实数据,对连接,断开等过程进行逐一分析。如果有XCP的实际问题,也有手段去分析。
PC: 0x332
MCU: 0x333
CONNECT
当连接好CANape, 一切配置正常后,点击连接按钮。
这时候PC 实际上是发送了CMD 命令。
可以看出,命令FF 00, 回复8个byte. 具体含义。
客户端请求连接。Mode 为 Normal.
服务端呢?
RESSOURCE 表示的是
COMM_MODE_BASIC 表示的是
所以根据上面具体的数据 0x05 指的是 标定pagind avaliable. DAQ Avaliable.
后面的数字可以按照上图自行翻译。
这里 connet 完成。
GET STATUS
完成连接后需要获取服务端的状态
0xFD 是命令。那么返回值什么意思呢
这里按照规矩,带着大家解析byte[1]. 数据时0x00
就是说 存储标定REQ mode 是 reset. DAQ reset/ 数据传输没有running. slave 处于RESUME 模式。
解锁过程
完成连接,读取状态都ok后,开始进行解锁过程,这里把解锁过程统一说。
这里可以看出来F8, F7 命令来回交替了好多次。
zhongjian hai chuanchale FD 等命令
简单的来说 就是 获取seed, 计算key, 发送状态。
还是要具体分析一下。
首先看一下这两个命令。
如第一次发送 收到了 长度是0x4, 内容是 0,1,2,3的seed.
然后就需要内部进行计算。
随后的F7来进行解锁,带着key去解锁。
这里根据报文算出来了1,2,3,4
返回值ff 1c 什么意思呢,这里和上面的FD 命令一致
这里官方给了个例子,可以参考理解和上面数据实际进行解析。
到这里后,解锁完成。
获取DAQ相关信息
上面完成了解锁,这里开始为数据传输做准备了。这里用的是DAQ。
原始数据
这里可以看出来。获取DAQ 用到了三个命令。DA,D9,D7
分别什么意思。
解释byte[1] 对于DA 命令。
动态DAQ
prescaler 支持
ID off
overload indication by EP
D9
D7
到这里 算是PC端已经明白了 MCU 里面的XCP 相关配置。知道了应该以什么样的方式去上传,下载数据。
总结
上述过程是用户点击 CANape 闪电标那一下,PC 为我们做了这么多的事情。我们可以通过来回报文解析出mcu的xcp配置。为问题分析提供点数据支撑。
END