xcp 协议层入门

无聊逛51
发布于 2023-11-13 11:47
浏览
0收藏

寄语

本文通过真实xcp原始报文 结合 文档 简单解释具体的报文含义。一般情况下没人在意这些内容。但是还是建议系统工程师,以及XCP的使用方 比如标定工程师等开发者 去简单的了解一下 具体的含义。至少知道如何去查。有个基础的入门认识,还是有必要了解一下的。文末有文档清单。

XCP 通讯流

master 与 slaver, 通俗的来说就是我们常用的CANape/Inca 和 控制器。


PC端发送命令,控制器端回复响应。也就是下图的CMD RES。

xcp 协议层入门-鸿蒙开发者社区

大部分的人使用XCP 是去采集数据,分析数据,标定以及刷写。但是对报文本身可能不太理解,甚至都没有注意过具体的报文(未经过a2l解析的原始报文)。本文通过真实数据,对连接,断开等过程进行逐一分析。如果有XCP的实际问题,也有手段去分析。


PC:    0x332

MCU: 0x333

CONNECT

当连接好CANape, 一切配置正常后,点击连接按钮。

这时候PC 实际上是发送了CMD 命令。

xcp 协议层入门-鸿蒙开发者社区

可以看出,命令FF 00, 回复8个byte. 具体含义。

xcp 协议层入门-鸿蒙开发者社区

客户端请求连接。Mode 为  Normal.


服务端呢?

xcp 协议层入门-鸿蒙开发者社区

RESSOURCE 表示的是

xcp 协议层入门-鸿蒙开发者社区

COMM_MODE_BASIC 表示的是

xcp 协议层入门-鸿蒙开发者社区

所以根据上面具体的数据 0x05 指的是 标定pagind avaliable. DAQ Avaliable. 

后面的数字可以按照上图自行翻译。

这里 connet 完成。

GET STATUS

完成连接后需要获取服务端的状态

xcp 协议层入门-鸿蒙开发者社区

0xFD 是命令。那么返回值什么意思呢

xcp 协议层入门-鸿蒙开发者社区

xcp 协议层入门-鸿蒙开发者社区

这里按照规矩,带着大家解析byte[1]. 数据时0x00

就是说 存储标定REQ mode 是 reset. DAQ reset/ 数据传输没有running. slave 处于RESUME 模式。

解锁过程

完成连接,读取状态都ok后,开始进行解锁过程,这里把解锁过程统一说。

xcp 协议层入门-鸿蒙开发者社区

xcp 协议层入门-鸿蒙开发者社区

这里可以看出来F8, F7 命令来回交替了好多次。

zhongjian hai chuanchale FD 等命令

简单的来说 就是 获取seed, 计算key, 发送状态。

还是要具体分析一下。

首先看一下这两个命令。

xcp 协议层入门-鸿蒙开发者社区

如第一次发送 收到了 长度是0x4, 内容是 0,1,2,3的seed.

然后就需要内部进行计算。

xcp 协议层入门-鸿蒙开发者社区

随后的F7来进行解锁,带着key去解锁。

这里根据报文算出来了1,2,3,4


返回值ff 1c 什么意思呢,这里和上面的FD 命令一致

xcp 协议层入门-鸿蒙开发者社区

这里官方给了个例子,可以参考理解和上面数据实际进行解析。

xcp 协议层入门-鸿蒙开发者社区

到这里后,解锁完成。

获取DAQ相关信息 

上面完成了解锁,这里开始为数据传输做准备了。这里用的是DAQ。

原始数据

xcp 协议层入门-鸿蒙开发者社区

这里可以看出来。获取DAQ 用到了三个命令。DA,D9,D7


分别什么意思。

xcp 协议层入门-鸿蒙开发者社区

xcp 协议层入门-鸿蒙开发者社区

xcp 协议层入门-鸿蒙开发者社区

解释byte[1] 对于DA 命令。

xcp 协议层入门-鸿蒙开发者社区

  1. 动态DAQ
  2. prescaler 支持
  3. ID off
  4. overload indication by EP

D9

xcp 协议层入门-鸿蒙开发者社区

D7

xcp 协议层入门-鸿蒙开发者社区

到这里 算是PC端已经明白了 MCU 里面的XCP 相关配置。知道了应该以什么样的方式去上传,下载数据。

总结

上述过程是用户点击 CANape 闪电标那一下,PC 为我们做了这么多的事情。我们可以通过来回报文解析出mcu的xcp配置。为问题分析提供点数据支撑。


不过一般也没人在意着一些具体报文的解析。如需文档,可私信联系我。谢谢。

xcp 协议层入门-鸿蒙开发者社区



文章转载自公众号:汽车与基础软件

分类
标签
已于2023-11-13 11:47:39修改
收藏
回复
举报
回复
    相关推荐