XCP标准文档PART2协议层
XCP协议层
XCP报文类型
所有XCP通信都作为称为XCP包的数据对象传输
有两种基本的数据包类型:
1、传输通用控制命令的数据包:CTO
2、传输同步数据的数据包:DTO
CTO (Command Transfer Object)用于传递通用的控制命令,用于执行CMD (protocol command)命令、传输RES (command response)、ERR (error)报文、EV (event)报文和SERV (service request packet)报文。
DTO(数据传输对象)用于传输同步数据采集数据(DAQ)和传输同步数据刺激数据(STIM)。
命令包必须总是由命令响应包或错误包来应答。
事件,服务请求和数据采集数据包是异步发送的,因此当使用非确认的传输链路(如UDP/IP)时,可能无法保证主设备将接收它们。
XCP报文格式
XCP包包含协议的通用部分,它独立于所使用的传输层。
XCP报文由标识字段(Identification Field)、时间戳字段(Timestamp Field)和数据字段(Data Field)组成。
MAX_CTO表示CTO报文的最大长度,单位为字节
MAX_DTO表示DTO报文的最大长度,单位为字节
标识字段
普通标识字段
当交换XCP包时,主从双方都必须能够明确地识别任何传输的XCP包,包括其类型和数据字段的内容。所以,XCP包基本上总是以标识字段开始,标识字段作为第一个字节包含包标识符(PID)。
对于CTO报文,标识字段应该能够根据报文的类型识别报文,区分协议命令(CMD)、命令响应(RES)、错误报文(ERR)、事件报文(EV)和服务请求报文(SERV)。
对于CTO数据包,标识字段仅由PID组成,其中包含CTO数据包代码。
对于DTO包,标识字段应该能够识别有关其类型的包,区分用于同步数据采集的DTO包或用于同步数据激励。对于DTO包,标识字段应该能够明确地标识DAQ列表和该DAQ列表中的ODT,它们描述了数据字段的内容。
对于每个DAQ列表,通过ODT_NUMBER的ODT编号从0重新开始:
标识字段类型“绝对ODT数”
将相对和非唯一的ODT号映射到明确可识别的DTO包的一种可能性是,通过“此DAQ列表的FIRST_PID”将相对ODT号映射到绝对ODT号,然后在DTO包内传输绝对ODT号。
以下从relative_ODT_NUMBER到absolute_ODT_NUMBER的映射适用:
FIRST_PID是该DAQ列表传输的第一个ODT的DTO包中的PID。
FIRST_PID由从机决定,然后发送到主机START_STOP_DAQ_LIST(DAQ列表)。
在分配FIRST_PID时,从机必须确保每个ODT都有一个唯一的绝对ODT号。
所有的PID也必须在PID(DAQ)和PID(STIM)的可用范围内。
对于标识字段类型为“绝对ODT号”的DTO包,标识字段仅由PID组成,包含绝对ODT号。
标识字段类型“相对ODT号和绝对DAQ列表号”
将相对而非唯一的ODT号映射到明确可识别的DTO包的另一种可能性是,将绝对DAQ列表号与DTO包中的相对ODT号一起传输。
对于标识字段类型为“相对ODT号和绝对DAQ列表号”的DTO包,标识字段由PID组成,其中包含相对ODT号、数据采集位,包含绝对的数据采集列表号和一个可选的填充字节。
一种可能性是将DAQ列表号传输为BYTE
有可能将DAQ列表号转换为WORD
如果对于XCP包必须满足某些对齐条件,则有可能传输额外的FILL字节。
在GET_DAQ_PROCESSOR_INFO处的DAQ_KEY_BYTE,从机将DAQ数据包传输到主机时将使用的标识字段的类型,主机在传输STIM时必须使用相同类型的识别字段发送到从服务器的数据包。
空标识字段
一个DAQ列表可以具有传输不带标识字段的DTO数据包的特性。
关闭传输的识别字段,只有当识别字段类型为“绝对ODT数”。如果在XCP中没有传输标识字段数据包,明确的标识必须在传输层级别上完成。这可以做到,例如在can上,每个DAQ列表都有单独的can - id,每个DAQ列表只有一个ODT。在这种情况下,关闭识别字段将允许在CAN上传输8字节信号。
时间戳字段
XCP包可以选择性地包含时间戳字段
对于CTO报文,时间戳字段不可用。
直接在标识字段之后的DTO数据包可能有一个包含时间戳(TS)的时间戳字段。
GET_DAQ_PROCESSOR_INFO命令的TIMESTAMP_SUPPORTED标志表示从机是否支持时间戳数据采集和刺激。
使用SET_DAQ_LIST_MODE的TIMESTAMP标志,主机可以将DAQ列表设置为时间戳模式。
GET_DAQ_RESOLUTION_INFO TIMESTAMP_MODE中的TIMESTAMP_FIXED标志表示从机总是以时间戳模式发送DTO报文,主机不能使用SET_DAQ_LIST_MODE关闭时间戳。对于DIRECTION = DAQ,时间戳模式意味着从设备在一个DAQ周期的第一个ODT的DTO包中传输其时钟的当前值。
对于DIRECTION = STIM,时间戳模式意味着主设备首先从从机接收带有时间戳的DTO(DAQ),然后在DTO包中为DAQ周期的第一个ODT回显从设备时钟的当前值。通过这种方式,“时间戳”可以用作一个计数器,使从机有可能检查是否
DTO(DAQ)和CTO(STIM)在功能上是一体的。
时间戳字段类型
时间戳字段总是由TS组成,包含同步数据传输时钟的当前值
同步数据传输时钟是从机中一个自由运行的计数器,它永远不会被重置或修改。
根据时间戳字段类型的不同,TS以BYTE、WORD或DWORD的形式传输。
与TIMESTAMP_MODE和TIMESTAMP_TICKS在GET_DAQ_RESOLUTION_INFO,从机通知主机关于时间戳字段的类型,从将DAQ数据包传输到主机。主机必须使用相同类型的
向从机发送STIM报文时的时间戳字段。TIMESTAMP_MODE和TIMEPSTAMP_TICKS包含数据传输时钟的分辨率信息。
数据字段
XCP包最终包含一个数据字段。
对于CTO报文,Data Field包含了不同类型CTO报文的具体参数。
对于DTO包,数据字段包含同步采集和刺激的数据。
CTO报文
CTO用于传递通用控制命令
标识字段仅由PID组成,包含CTO包代码
时间戳字段不可用。
数据字段包含了不同类型的CTO报文的具体参数
命令包CMD
PID包含命令报文码,范围为0xC0 <= CMD <= 0xFF。
所有可能的命令代码在本文的“命令代码表(CMD)”一节中定义。所有可能的命令的结构在“描述”中定义“命令”部分。
命令响应报文RES
PID包含命令正响应报文码RES = 0xFF。
如果命令已成功执行,RES将作为CMD的应答发送。
错误包ERR
PID包含错误报文码ERR = 0xFE。
如果命令没有成功执行,ERR将作为对CMD的应答发送。第二个字节包含错误码。
错误码0x00用于同步目的
错误报文的错误码为ERR_* >= 0x01
错误报文通常只包含一个错误码,在某些情况下,错误包包含额外的信息。
例如,在BUILD_CHECKSUM里面,错误码为0x22 = ERR_OUT_OF_RANGE的错误包包含最大允许块大小作为DWORD作为附加信息。
如果错误码为0x31 = ERR_GENERIC,则错误报文中包含实现特定的从设备错误码WORD作为附加信息。
事件包EV
PID包含EVent Packet代码EV = 0xFD。
如果从机想要报告一个异步事件包,则发送EV。第二个字节包含Event代码。
实现是可选的,从机发送到主机的事件报文没有得到确认,因此不能保证传输。
服务请求包SERV
PID包含服务请求包代码SERV = 0xFC。
SERV请求由主设备执行的某些操作,第二个字节包含服务请求代码。
DTO包
DTO用于传输同步数据采集数据(DAQ)和同步数据刺激数据(STIM)。
根据标识字段类型的不同,标识字段的内容也不同。
不同类型的时间戳字段的内容不同。
标识字段类型和时间戳字段类型的任意组合都是可能的。
数据字段包含同步采集和刺激的数据。
DAQ包
PID包含在0x00 <= DAQ <= 0xFB范围内的(绝对或相对)ODT号。
ODT号指的是对象描述符表(Object Descriptor Table,ODT),该表描述了哪些数据采集元素包含在剩余的数据字节中。
同步数据刺激包STIM
PID包含在0x00 <= STIM <= 0xBF范围内的(绝对或相对)ODT号。
ODT编号指的是对应的对象描述符表(Object Descriptor Table, ODT),该表描述了哪些数据刺激元素包含在剩余的数据字节中。
XCP包标识符
事件代码表
实现是可选的。从设备发送到主设备的事件报文没有得到确认,因此不能保证传输。
EV_RESUME_MODE表示从机以RESUME模式启动。
EV_CLEAR_DAQ表示从机非易失性内存中的DAQ配置已被清除
EV_STORE_DAQ表示DAQ配置已存储到非易失性存储器中。
EV_STORE_CAL表示标定数据已存储到非易失性存储器中
EV_CMD_PENDING从机请求主服务器重新启动超时检测
EV_DAQ_OVERLOAD从机可能在传输DAQ列表时时表示过载。
EV_SESSION_TERMINATED从机向主机表明它自主决定断开当前的XCP会话
EV_USER是用户自定义事件的载体
EV_TRANSPORT是传输层特定事件的载体
服务请求代码表
该实现对于从机是可选的,但是对于主机是必备的。
从机发送到主机的业务请求报文没有得到确认,因此不能保证传输。
只有两个服务,从机请求重启和测试。
命令代码表
尝试执行未实现的可选命令将返回ERR_CMD_UNKNOWN,并且没有任何效果。
这使得主机可以很容易地检测到未实现的可选命令
如果实现了GET_SEED,则需要UNLOCK。
如果实现了SET_CAL_PAGE,则需要GET_CAL_PAGE。
如果使用SET_DAQ_ID,则需要使用GET_DAQ_ID。
标准命令
标定命令
页面切换命令
数据采集和刺激命令
非易失性存储器编程命令
位掩码编码参数表
链接和获取种子时候指定resource参数
链接时候的COMM_MODE_BASIC
GET_COMM_MODE_INFO中的comm_mode_可选参数
PROGRAM_START中的COMM_MODE_PGM参数
GET_STATUS和UNLOCK中的当前源保护状态参数
SET_REQUEST中的模式参数
GET_STATUS参数中的当前会话状态
GET_DAQ_PROCESSOR_INFO中的DAQ_KEY_BYTE参数
GET_DAQ_PROCESSOR_INFO中的DAQ_PROPERTIES参数
SET_DAQ_LIST_MODE中的Mode参数
GET_DAQ_LIST_MODE中的当前模式参数
GET_DAQ_LIST_INFO中的DAQ_LIST_PROPERTIES参数
GET_DAQ_EVENT_INFO中的DAQ_EVENT_PROPERTIES参数
GET_DAQ_RESOLUTION_INFO中的TIMESTAMP_MODE参数
GET_PAG_PROCESSOR_INFO中的PAG_PROPERTIES参数
SET_SEGMENT_MODE中的模式参数
GET_SEGMENT_MODE中的当前模式参数
GET_PAGE_INFO中的PAGE_PROPERTIES参数
SET_CAL_PAGE中的模式参数
GET_PGM_PROCESSOR_INFO中的PGM_PROPERTIES参数
命令说明
WORD(2字节)格式的命令参数始终对齐到可以除以2的位置。
DWORD(4字节)格式的命令参数始终对齐到可以除以4的位置。
多字节参数的字节格式(MOTOROLA, INTEL)依赖于从设备。
命令
正响应
负响应
标准命令
强制命令
建立连接
主服务器可以与从服务器启动XCP通信
正响应
RESSOURCE参数是一个位掩码
COMM_MODE_BASIC参数是一个位掩码
BYTE_ORDER = 0表示Intel格式,BYTE_ORDER = 1表示摩托罗拉格式。
地址粒度AG表示单个地址中包含的元素的大小。如果主机需要进行地址计算,则需要使用。
SLAVE_BLOCK_MODE标志表示从块模式是否可用。
OPTIONAL标志表示是否有关于支持的通信模式类型的附加信息可用。主服务器可以通过GET_COMM_MODE_INFO获取额外的信息。
MAX_CTO是最大的CTO数据包大小(以字节为单位)。
MAX_DTO是最大DTO包大小(以字节为单位)。
需要满足
MAX_CTO mod AG = 0
MAX_DTO mod AG = 0
所有涉及从机本身地址范围的长度信息都基于AG(元素)。
如果长度信息指的是数据流(XCP协议),则以字节为单位。
XCP协议层版本号表示该协议层的主要版本号规范。
XCP传输层版本号表示当前传输层规范的主要版本。
断开从机连接
负响应:如果当前不可能断开连接,则返回ERR_CMD_BUSY。
获取当前会话状态
该命令返回从设备的所有当前状态信息。这包括资源保护的状态、待处理的存储请求以及数据采集和刺激的一般状态
正响应
当前会话状态参数是一个位掩码
STORE_CAL_REQ标志表示将校准数据保存到非易失性存储器的待处理请求。一旦请求完成,从机就会重置相应的位。从机可以通过发送EV_STORE_CAL事件包来表示这一点。
STORE_DAQ_REQ标志表示将DAQ列表设置保存到非易失性内存中的待处理请求。一旦请求完成,从机就会重置相应的位。从机可以通过发送EV_STORE_DAQ事件包来表示这一点。
CLEAR_DAQ_REQ标志表示清除非易失性内存中所有DAQ列表的待处理请求。所有ODT表项重置为地址= 0,扩展= 0,大小= 0和bit_offset = FF。一旦请求完成,从机就会重置相应的位。从机可以通过发送一个EV_CLEAR_DAQ事件报文。
如果从机不支持请求的模式,则返回ERR_OUT_OF_RANGE。
DAQ_RUNNING标志表示至少有一个DAQ列表已经启动并处于状态运行模式。
RESUME标志表示从机处于RESUME模式。
The Current Resource Protection Status参数为位掩码
标准组里面的命令从不被保护
CAL/PAG标志表示校准/分页组的所有命令都受到保护,并且在没有成功的GET_SEED/UNLOCK序列的情况下尝试执行该命令时将返回ERR_ACCESS_LOCKED。
DAQ标志表明数据采集和刺激组的以下命令是受保护的,如果在没有成功的GET_SEED/UNLOCK序列的情况下尝试执行该命令,将返回ERR_ACCESS_LOCKED。
PGM标志表示编程组的所有命令都受到保护,并且在没有成功的GET_SEED/UNLOCK序列的情况下尝试执行命令时将返回ERR_ACCESS_LOCKED。
会话配置id必须由先前的SET_REQUEST命令设置STORE_DAQ_REQ集。
命令超时后同步执行
该命令用于命令超时后同步执行。使用实例的SYNCH命令将始终有一个带有错误代码的否定响应
ERR_CMD_SYNCH。没有其他命令使用此错误码,因此对SYNCH命令的响应可能与对任何其他命令的响应不同。
只有否定响应
可选命令
获取通信模式信息
正响应
COMM_MODE_OPTIONAL参数是一个位掩码
MASTER_BLOCK_MODE标志表示主机块模式是否可用。
如果支持主机块模式,MAX_BS表示允许的最大块大小,作为连续命令数据包的数量(DOWNLOAD_NEXT或PROGRAM_NEXT)在块序列中。
MIN_ST表示块报文从主机传输到从机所需的最小间隔时间,单位为100微秒
INTERLEAVED_MODE标志表示交错模式是否可用。
如果使用交错模式,QUEUE_SIZE表示主设备连续发送命令报文到从设备接收队列的最大数量。
XCP Driver Version Number表示从机XCP驱动的版本号。
主驱动版本号为版本号的高位,副驱动版本号为版本号的低位
获取从机ID
该命令用于自动配置会话和识别从机,从机支持哪些类型是特定于实现的。
正响应
Length参数指定标识的字节数。如果长度为0,则请求的标识类型不可用。
元素是BYTE, WORD或DWORD,取决于AG。
如果mode为1,则在响应的剩余字节中传输标识。
如果mode为0,从设备将内存传输地址(MTA)设置为主设备可以使用一个或多个upload命令上传所请求的标识的位置。
标识字符串为ASCII文本格式,没有0终止。
请求保存到非易失性存储器
Mode参数是一个位掩码
STORE_CAL_REQ设置将校准数据保存到非易失性存储器的请求,当请求被完成时,从服务器会重置GET_STATUS获取的STORE_CAL_REQ位。从设备可以通过发送EV_STORE_CAL事件包来表示这一点。
STORE_DAQ_REQ设置一个请求来保存已选择的所有DAQ列表。
START_STOP_DAQ_LIST(Select)放入非易失性内存。从服务器还必须在非易失性内存中存储会话配置id。在保存时,从服务器首先必须清除可能已经存储在非易失性存储器中的任何DAQ列表配置。当请求被满足时,从服务器将重置GET_STATUS获得的STORE_DAQ_REQ位。从设备可以通过发送EV_STORE_DAQ事件包来表示这一点。
CLEAR_DAQ_REQ用于清除所有非易失性内存中的DAQ列表。所有ODT表项重置为地址= 0,扩展= 0,大小= 0和bit_offset = FF。日志含义会话配置ID重置为0。当请求被满足时,由GET_STATUS获得的CLEAR_DAQ_REQ位将被从服务器重置。从设备可以通过发送一个EV_CLEAR_DAQ事件包来表示这一点。如果从设备不支持请求的模式,则返回ERR_OUT_OF_RANGE。
获取解锁受保护资源的种子
当Mode = 0时,主机请求从服务器传输(第一部分)种子。从机用种子的(第一部分)和种子的总长度回答。
在Mode = 1的情况下,如果种子的总长度大于MAX_CTO-2,主服务器必须向从服务器请求种子的剩余部分。
主服务器必须在定义的序列中使用GET_SEED(Mode=1)
GET_SEED(模式= 0)。如果主服务器直接发送GET_SEED(Mode=1),而没有先前的GET_SEED(Mode=0),则从服务器返回ERR_SEQUENCE作为负响应。
资源参数(CAL/PAG、DAQ、STIM、PGM)的取值说明及相关命令在GET_STATUS(资源保护状态)命令提到过。
一个GET_SEED命令只能请求一个资源。如果必须解锁多个资源,则必须执行多次(GET_SEED+UNLOCK)序列。如果主服务器不请求任何资源或同时请求多个资源,从服务器将响应ERR_OUT_OF_RANGE。
正响应
Length表示剩余的种子字节数。当Length = 0时,表示该资源不受保护,不需要执行UNLOCK命令。
GET_SEED序列返回seed & key算法的“seed”数据
主服务器必须通过调用外部函数文件来计算密钥。只有一个外部函数文件可能包含1到4种不同的算法,每种资源CAL/PAG, DAQ, STIM或PGM都有一种算法。
发送被保护资源解锁密钥
使用从先前GET_SEED序列获得的“种子”计算的“密钥”来解锁从设备的安全保护。
Length表示(剩余的)密钥字节数
如果密钥的总长度大于MAX_CTO-2,则主机必须使用包含密钥剩余长度的连续UNLOCK命令发送剩余的密钥字节。
如果主机不遵循这个序列,从机将返回一个ERR_SEQUENCE作为否定响应。完成UNLOCK序列后检查密钥。如果密钥不被接受,ERR_ACCESS_LOCKED将返回。从设备将进入断开连接状态。使用正确的键重复UNLOCK序列将产生积极的响应,而不会产生其他影响。
正响应
解锁时的响应包含如下所述的当前资源保护掩码
短的GET_SEED+UNLOCK序列
长GET_SEED+UNLOCK序列
在从机中设置“内存传输地址”
这个命令将为下面的内存传输命令初始化一个指针(32位地址+ 8位扩展)
MTA用于命令BUILD_CHECKSUM,UPLOAD,DOWNLOAD,DOWNLOAD_MAX, MODIFY_BITS, PROGRAM_CLEAR,PROGRAM和PROGRAM_MAX。
从从机上传到主机
将返回指定长度的数据块,从之前指定的MTA开始,给定数据元素数量。
正响应
根据AG的不同,必须使用1、2或3个对齐字节来满足对齐要求。
如果从设备不支持块传输模式,所有上传的数据将在一个响应报文中传输。因此,请求中的数据元素参数的数量必须在[1..MAX_CTO-1]范围内。如果数据元素的数量大于MAX_CTO-1,则返回ERR_OUT_OF_RANGE。
如果支持块传输模式,则上传的数据将在同一个请求报文中多次响应传输。对于主机来说,最大块大小没有限制。数据元素的数量可以在1- 255范围内。从机发送(数据元素数量n*元素粒度AG / (MAX_CTO - 1)) +1个响应报文。响应报文之间的间隔时间取决于从机的实现。
如果是短数据上传可以用F4,发送需要读取元素的数量。
返回指定长度的数据块,从地址开始。MTA指针被设置为上传数据块后面的第一个数据字节。错误处理和响应结构与UPLOAD命令相同。该命令不支持块传输,不能在块传输序列中使用。
在内存范围内构建校验和
返回MTA和定义的内存块的校验和结果块大小。MTA将按块大小进行后增量。
正响应
校验和类型
无论校验和类型如何,结果总是作为DWORD给出
负响应
如果块大小超过允许的最大值,将返回ERR_OUT_OF_RANGE。最大块大小将在校验和字段中返回。
辅助命令
参考传输层特定命令
该命令在传输层规范中定义。它用于执行传输分层特定的操作。
例子
参考用户定义的命令
该命令由用户自定义。它不能用于实现由其他服务完成的功能。
标定命令
强制性的命令
从主机下载到从机
如果AG = DWORD,必须使用2个对齐字节以满足对齐要求。
CMD中包含的指定长度(大小)的数据块将被复制到内存中,从MTA开始。MTA将按数据字节数进行后增量。
如果从设备不支持块传输模式,则所有下载的数据将在单个命令报文中传输。因此,请求中的数据元素参数的数量必须在[1..MAX_CTO-2]范围内。如果数据元素的数量大于MAX_CTO-2,则返回ERR_OUT_OF_RANGE。
如果支持块传输模式,下载的数据将以多个命令报文的形式传输。然而,对于从属服务器,可能存在有关连续命令数据包的最大数量(块大小MAX_BS)的限制。因此,数据元素的数量(n)可以在[1..min(MAX_BS*(MAX_CTO-2)/AG,255)]的范围内。
主设备必须连续发送(n * AG / (MAX_CTO-2)) - 1个额外信号下载_next命令包。从设备将只承认最后一个DOWNLOAD_NEXT命令包。命令报文与最大报文数之间的间隔时间在CONNECT命令(MAX_BS, MIN_ST)的响应中指定。
可选命令
从主机下载到从机(块模式)
如果AG = 4,则必须使用2个对齐字节以满足对齐要求
该命令用于以块传输方式为DOWNLOAD命令传输连续的数据元素。
DOWNLOAD_NEXT命令具有与DOWNLOAD命令完全相同的结构。它包含要传输的数据元素的剩余数量。从设备将使用此信息来检测丢失的数据包。如果检测到序列错误,则返回错误码ERR_SEQUENCE。
如果数据元素的数量与期望值不匹配,则返回错误代码ERR_SEQUENCE。否定响应将包含预期数量的数据元素。
从主机下载到从机(固定大小)
根据AG的不同,必须使用1或3个对齐字节来满足对齐要求
包含的MAX_CTO/AG-1元素的固定长度(大小)的数据块CMD将被复制到内存中,从MTA开始。MTA的后增量为MAX_CTO / AG-1。
该命令不支持块传输,不能在块传输序列中使用。
从主机下载到从机(短版本)
写入指定长度的数据块,从地址开始。MTA指针被设置为下载数据块后面的第一个数据元素。如果元素数量超过(MAX_CTO-8)/AG,则返回错误代码ERR_OUT_OF_RANGE。
该命令不支持块传输,不能在块传输序列中使用。
修改位
MTA引用的32位内存位置A将使用以下公式进行修改:
与掩码(MA)通过将MA中相应的位设置为“0”,并将所有未触及的位设置为“1”来指定A中所有必须设置为“0”的位。
异或掩码(MX)指定A的所有位,必须通过将MX中的相应位设置为“1”而将所有未触碰的位设置为“0”来切换。
将0位设置为“0”,使用MA = 0xFFFE和MX = 0x0000。
要将位0设置为“1”,首先将其设置为“0”,然后切换它,因此MA = 0xFFFE和MX = 0x0001。
通过掩码MA和MX,只能访问16位宽的内存位置。因此,移位参数S用于将两个掩码连同指定的位数一起移动到更有效的方向。
页面切换命令
强制性的命令
设置标定页面
如果从设备支持标定数据页面切换(资源可用掩码中的PAG标志),则设置标定数据段的访问模式。
标定数据段及其页面由逻辑数字指定
Mode参数是一个位掩码
如果标定数据页不能设置为指定的的模式,则返回ERR_MODE_NOT_VALID。
如果标定数据页不可用,ERR_PAGE_NOT_VALID或ERR_SEGMENT_NOT_VALID将返回。
获取标定页面
该命令返回当前为指定访问模式和数据段激活的校准数据页的逻辑编号。模式可能为0x01 (ECU访问)或0x02 (XCP访问)。所有其他值无效。
正响应
可选命令
获取PAG处理器的一般信息
该命令返回关于分页的一般信息
正响应
MAX_SEGMENT是从设备的段总数
PAG_PROPERTIES参数是一个位掩码
FREEZE_SUPPORTED标志表示所有的段都可以被置于FREEZE模式
获取段的特定信息
GET_SEGMENT_INFO返回特定段的信息。
如果指定的段不可用,则返回ERR_OUT_OF_RANGE。
当Mode = 0和Mode = 2时,SEGMENT_INFO包含地址范围信息。
如果Mode = 1, SEGMENT_INFO为“don ' t care”。
当Mode = 2时,MAPPING_INDEX表示MAPPING_INFO所属的范围。
对于Mode = 0和Mode = 1, MAPPING_INDEX为“don ' t care”
如果Mode = 0,则SEGMENT_INFO表示从机为该段请求的段信息类型
正响应(mode = 0)
如果Mode = 0,则响应包含该段的地址信息。
如果SEGMENT_INFO = 0,此命令返回BASIC_INFO中该段的地址。
如果SEGMENT_INFO = 1,该命令返回BASIC_INFO中该段的长度。
正响应(mode = 1)
如果Mode = 1,则响应包含有关该段的标准信息。
MAX_PAGES表示此段的可用页面数。
ADDRESS_EXTENSION用于SET_MTA、SHORT_UPLOAD和
在访问该段内的页面时使用SHORT_DOWNLOAD。
MAX_MAPPING表示在这个段内应该应用地址映射的地址范围的数量。
从网段的压缩和加密方法必须与新flash软件的网段的压缩和加密方法相对应。
正响应(mode = 2)、
如果Mode = 2, SEGMENT_INFO表示从服务器请求MAPPING_INDEX所引用范围的映射信息类型。
如果Mode = 2,则响应包含该段在MAPPING_INDEX指示范围内的映射信息。
如果SEGMENT_INFO = 0,此命令返回MAPPING_INFO中该MAPPING_INDEX的源地址。
如果SEGMENT_INFO = 1,则此命令返回此目的地址MAPPING_INFO中的MAPPING_INDEX。
如果SEGMENT_INFO = 2,该命令返回该MAPPING_INDEX的长度MAPPING_INFO。
获取页面的特定信息
GET_PAGE_INFO返回特定页面的信息。
如果指定的PAGE不可用,则返回ERR_OUT_OF_RANGE。
正响应
PAGE_PROPERTIES参数是一个位掩码
ECU_ACCESS_x标志表示ECU是否以及如何访问该页面。
如果ECU可以访问该页,则ECU_ACCESS_x标志表示是否只有当XCP主控器未同时访问该页时ECU才能访问该页,是否只有当XCP主控器同时访问该页时ECU才能访问该页,或者ECU不在乎XCP主控器是否同时访问该页。
XCP_x_ACCESS_y标志指示XCP主机是否以及如何访问该页。这些标志根据XCP主机对该页面的访问类型(可读和/或可写)来区分XCP_ACCESS_TYPE。
如果XCP主机可以访问该页,XCP_READ_ACCESS_x标志表示是否只有当ECU不访问该页时,XCP主机才能从该页读取
如果ECU同时访问这个页面,或者XCP主控不需要关心ECU是否同时访问这个页面。
如果XCP主机可以访问该页,XCP_WRITE_ACCESS_x标志表示是否只有当ECU不访问该页时,XCP主机才能写入该页
如果ECU同时访问这个页面,或者XCP主控不需要关心ECU是否同时访问这个页面。
PAGE的INIT_SEGMENT的PAGE 0包含了这个PAGE的初始数据。
为SEGMENT设置模式
如果指定的段不可用,则返回ERR_OUT_OF_RANGE
Mode参数是一个位掩码
FREEZE标志通过STORE_CAL_REQ选择要冻结的段
获取SEGMENT的模式
如果指定的段不可用,则返回ERR_OUT_OF_RANGE。
Mode参数是描述的位掩码
