• 330查看
  • 0回复

[底层软件] 深入XCP(下)指令解析和交互分析

[复制链接]


该用户从未签到

发表于 25-4-2024 20:00:06 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


内容提要1 命令描述    1.1 Standard commands        1.1.1 CONNECT        1.1.2 DISCONNECT        1.1.3 GET_STATUS        1.1.4 GET_SEED        1.1.5 UNLOCK
        1.1.6 SET_MTA        1.1.7 UPLOAD        1.1.8 SHORT_UPLOAD
    1.2 Calibration commands        1.2.1 DOWNLOAD        1.2.2 SHORT_DOWNLOAD    1.3 DAQ        1.3.1 SET_DAQ_PTR
        1.3.2 WRITE_DAQ        1.3.3 SET_DAQ_LIST_MODE        1.3.4 START_STOP_DAQ_LIST        1.3.5 START_STOP_SYNCH        1.3.6 FREE_DAQ        1.3.7 ALLOC_DAQ
        1.3.8 ALLOC_ODT        1.3.9 ALLOC_ODT_ENTRY        1.3.10 GET_DAQ_PROCESSOR_INFO        1.3.11 GET_DAQ_LIST_INFO2 DAQ初始化流程    2.1 静态DAQ    2.2 动态DAQ及实际报文交互3 主机读取数据    3.1 POLLING
    3.2 DAQ模式
1 命令描述
对于所有的命令而言,肯定响应的PID为0Xff,否定响应的PID为0Xfe(表示命令没有被成功执行)。
1.1 Standard commands (STD)

1.1.1 建立连接(Set upconnection with slave)
在和主机建立连接前,从机不会回复除自动探测外的任何命令。假如已经和从机建立了连接,主机发送这个建立连接的命令不会对当前会话产生任何影响。主机发送如下图所示。
深入XCP(下)指令解析和交互分析w1.jpg

从机肯定应答如下图所示。
深入XCP(下)指令解析和交互分析w2.jpg

RESSOURCE包含从机的一些能力,如是否支持DAQ、STIM等,具体如下所示。
深入XCP(下)指令解析和交互分析w3.jpg

RESSOURCE的位含义
COMM_MODE_BASIC包含大小端信息(BYTE_ORDER=0表示INTEL格式,BYTE_ORDER = 1表示Motorola格式)、对齐方式(ADDRESS_GRANULARITY式, 可以取值1、2、4。在配置中多使用1字节对齐)
深入XCP(下)指令解析和交互分析w4.jpg

COMM_MODE_BASIC的位含义

深入XCP(下)指令解析和交互分析w5.jpg

ADDRESS_GRANULARITY的取值含义
MAX_CTO表示CTO最大数据包的字节长度。MAX_DTO表示DTO最大数据包的字节长度。建立连接的报文如下所示。
深入XCP(下)指令解析和交互分析w6.jpg

1.1.2 断开连接(Disconnectfrom slave)

主机发送如下图所示。

深入XCP(下)指令解析和交互分析w7.jpg

从机回复
假如断开连接当前不可用,那么将回复ERR_CMD_BUSY。
1.1.3 获取从机当前会话状态(Getcurrent session status from slave)
主机通过这个指令来读取从机当前资源的保护情况(是否需要解锁)等信息。
主机发送如下图所示。

深入XCP(下)指令解析和交互分析w8.jpg

从机回复的肯定响应如下图所示。

深入XCP(下)指令解析和交互分析w9.jpg

Current Session Status parameter包含当前是否有DAQ数据在传输(DAQ_RUNNING)。

深入XCP(下)指令解析和交互分析w10.jpg

CurrentSession Status的位含义
Current Resource Protection Status中则表示了当前有CMD需要通过SEED&KEY解锁。
深入XCP(下)指令解析和交互分析w11.jpg

CurrentResource Protection Status的位含义
获取当前会话状态的报文如下所示。
深入XCP(下)指令解析和交互分析w12.jpg

1.1.4 获取种子(Get seedfor unlocking a protected resource)
主机通过该命令来获取从机的种子。当Mode=0时,第二个字节表示Resource( 解锁的RESOURCE的类型,见Current Resource Protection Status的描述),Mode= 1表示种子很长(大于MAX_CTO-2)分两次传输时传输的第二部分。主机发送如下图所示。
深入XCP(下)指令解析和交互分析w13.jpg

从机回复的肯定响应如下图所示。
深入XCP(下)指令解析和交互分析w14.jpg

Length为0表示不需要解锁,当接受主机的命令中Mode为0,则表示总的种子长度,Mode为1时,表示剩余种子的长度。主机在接收到种子后,需要根据算法计算出密钥(和UDS的0x27服务类似)。
1.1.5 发送密钥(Send Key,UNLOCK)
主机发送密钥给从机后,从机与自己计算的进行比较来决定是否解锁。
主机发送如下图所示。

深入XCP(下)指令解析和交互分析w15.jpg

从机回复肯定响应如下图所示。

深入XCP(下)指令解析和交互分析w16.jpg

当种子长度为4时,交互流程如下图所示。
深入XCP(下)指令解析和交互分析w17.jpg

获取种子和解锁的报文如下所示(种子长度大于6,分两次发送)。
深入XCP(下)指令解析和交互分析w18.jpg

1.1.6 设置从机内存传输地址(SetMemory Transfer Address in slave,Set MTA)
主机通过这个命令来让从机为接下来的内存传输指令(BUILD_CHECKSUM,UPLOAD, DOWNLOAD, DOWNLOAD_MAX, MODIFY_BITS, PROGRAM_CLEAR, PROGRAM andPROGRAM_MAX.)初始化一个指针,指针指向的地址为主机发送的地址。主机发送如下图所示。
深入XCP(下)指令解析和交互分析w19.jpg

1.1.7 主机读取从机数据(Uploadfrom slave to master)
主机通过这个命令读取当前MTA地址处的指定长度的数据(数据根据AG进行对齐的)。MTA将会自动增加,增加长度为element的个数。
主机发送如下图所示。

深入XCP(下)指令解析和交互分析w20.jpg

从机回复如下图所示。

深入XCP(下)指令解析和交互分析w21.jpg

1.1.8 主机读取从机数据(Uploadfrom slave to master,short)
主机通过这个指令来读取指定地址处的数据,与2.1.7相比,传输数据后,MTA的值不变。主机发送如下图所示。
深入XCP(下)指令解析和交互分析w22.jpg

报文交互如下图所示。

深入XCP(下)指令解析和交互分析w23.jpg

1.2 Calibration commands (CAL)

1.2.1 主机下载数据(Downloadfrom master to slave)
主机通过这个指令向当前MTA处写入指定长度的数据,执行完后,MTA将会自动增加,增加的长度为写入的数据的字节长度。主机发送如下图所示。
深入XCP(下)指令解析和交互分析w24.jpg

1.2.2 主机下载数据(Downloadfrom master to slave,short version)
主机通过这个指令向指定地址写入数据。执行完后,MTA的地址不变。
主机发送如下图所示。

深入XCP(下)指令解析和交互分析w25.jpg

1.3 DAQ和STIM命令

1.3.1 设置当前DAQ指针(SET_DAQ_PTR)
主机通过这个指令设置从机当前的指针指向指定的DAQ List的ODT_ENTRY的位置。主机发送如下图所示.
深入XCP(下)指令解析和交互分析w26.jpg

1.3.2 写ODT入口(Write element in ODT entry,WRITE_DAQ)
主机通过这个命令来向DAQ写入数据,写入的地方为SET_DAQ_PTR命令设置的.主机发送如下图所示。
深入XCP(下)指令解析和交互分析w27.jpg

1.3.3 设置DAQ的模式(SET_DAQ_LIST_MODE)
主机通过这个命令设置DAQ_List的一些特征:数据传输方向(ModeParameter)以及将DAQ和Event Channel进行绑定.
主机发送如下图所示。

深入XCP(下)指令解析和交互分析w28.jpg

Mode parameter包含数据发送方向(DIRECTION=0表示slave->master的DAQ)和是否使能时间戳(TIMESTAMP=1表示使能)等,具体如下图所示.
深入XCP(下)指令解析和交互分析w29.jpg

Modeparameter的位定义

1.3.4 启动/停止/选择DAQ list
主机通过这个命令来启动或者停止从机指定的的DAQ List传输.选择模式时配合下边的START_STOP_SYNC的命令使用。主机发送如下图所示.
深入XCP(下)指令解析和交互分析w30.jpg

1.3.5 启动/停止DAQ传输
启动/停止DAQ List的传输.主机发送如下图所示.
深入XCP(下)指令解析和交互分析w31.jpg

1.3.6 清除DAQ配置(FREE_DAQ,动态配置DAQ指令)
该命令清除所有的DAQ列表,并释放所有动态分配的DAQ列表,ODT和ODT条目。在动态DAQ列表配置序列的开始,主机必须发送一个FREE_DAQ。主机发送如下图所示.
深入XCP(下)指令解析和交互分析w32.jpg

1.3.7 分配DAQLists(Allocate DAQ lists,动态配置DAQ指令)
主机通过这个命令来分配从机的DAQ lists. 当从机是动态DAQ-List配置时,必须要先使用FREE_DAQ命令清空DAQ-List,ODT,ODT_Entry。当从机是静态DAQ-List配置时,主机会使用GET_DAQ_PROCESSOR_INFO、GET_DAQ_EVENT_INFO和GET_DAQ_LIST_INFO去获取当前从机的静态DAQ配置,然后再进行相关配置主机发送如下图所示.
深入XCP(下)指令解析和交互分析w33.jpg

1.3.8 分配ODT到DAQ List中(Allocate ODTs to a DAQ list,动态配置DAQ指令)
主机通过这个指令将一系列的ODT分配到指定的DAQ List中。主机发送如下图所示.
深入XCP(下)指令解析和交互分析w34.jpg

1.3.9 分配ODT_ENTERY(ALLOC_ODT_ENTRY)
主机通过这个指令将ODT_ENTRY分配到指定的DAQ List中。主机发送如下图所示。
深入XCP(下)指令解析和交互分析w35.jpg

1.3.10 获取DAQ的通用信息(GET_DAQ_PROCESSOR_INFO)
主机通过这个指令获取从机DAQ的统一信息,包括DAQ的数量信息等。主机发送如下图所示.
深入XCP(下)指令解析和交互分析w36.jpg

从机回复肯定响应如下图所示.
深入XCP(下)指令解析和交互分析w37.jpg

DAQ_PROPERTIES 中的DAQ_CONFIG_TYPE表示是动态配置DAQ还是静态配置DAQ,其位定义如下。
深入XCP(下)指令解析和交互分析w38.jpg

DAQ_PROPERTIES的位定义
MAX_DAQ表示总的DAQ数量(等于MIN_DAQ+可以动态配置的DAQ的数量)。MIN_DAQ表示预先定义好的DAQ的数量。
1.3.11 获取指定DAQ List的信息(GET_DAQ_LIST_INFO)
主机通过这个指令来获取指定DAQ List的信息。主机发送如下图所示.
深入XCP(下)指令解析和交互分析w39.jpg

从机回复肯定响应如下图所示.
深入XCP(下)指令解析和交互分析w40.jpg

DAQ_LIST_PROPERTIES表明从机DAQ的属性(PREDEFINED=1表示从机DAQ List不能呗动态配置,EVENT_FIXED=1表示Event Channel不能被改变),位定义如下所示。
深入XCP(下)指令解析和交互分析w41.jpg

DAQ_LIST_PROPERTIES的位定义

2 DAQ初始化流程

2.1 静态DAQ

深入XCP(下)指令解析和交互分析w42.jpg

2.2 动态DAQ

深入XCP(下)指令解析和交互分析w43.jpg

动态配置的报文如下所示
深入XCP(下)指令解析和交互分析w44.jpg

3 主机读取数据
从上边可以看出,主机可以通过两种方式来读取从机数据(也可以称为两种测量方式):POLLING(异步测量)和DAQ(同步测量)。
3.1 POLLING
POLLING方式是由主机主动发起的,主机通过不断的发送SHORT_UPLOAD指令来读取从机的数据。这种模式下,读取的一系列数据不是同一个时刻的(定义的CAN发送周期决定的),且由于多了主机发送会增加总线负载率,如下图所示。
深入XCP(下)指令解析和交互分析w45.jpg

3.2 DAQ模式
当DAQ配置完成后,主机发送START_STOP_SYNC启动发送后,从机自动上传DAQ的数据(此时在CAN负载允许的情况下发送速度as soon as possible),如下图所示。
深入XCP(下)指令解析和交互分析w46.jpg

因此大数据量或者对于数据的时间一致性要求比较高的情况下尽量选用DAQ模式。

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 27-12-2024 11:05 , Processed in 0.529673 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.