维护事务格式(FT=8)
类型维护数据包格式用于访问RapidIO功能和状态寄存器(CAR和CSR)以及数据结构。与其它事务不同,类型8数据包格式既用作维护操作的请求格式又用作响应格式。类型8数据包不包含地址,仅包含写请求和读响应的数据有效载荷。所有配置寄存器读取访问均以字(4字节)和可选的双字(8字节)或指定的多个双字数量(不超过64个字节)进行wrsize字段指定。
维护端口写操作是写操作,不能保证传递,也没有相关的响应。此维护操作对于从不包含端点的设备(例如交换机)发送消息(例如错误指示符或状态信息)很有用。数据有效载荷通常放置在目标端点的队列中,并且通常会向本地处理器生成中断。对已满的队列的端口写请求或忙于处理另一个请求可能会被丢弃
表4-7提供了特定于类型8数据包的字段的定义和编码。表4-2中描述了非特定于类型8数据包的字段。
第8类事务维护事务用于访问RapidIO能力寄存器(CARs,Capability Registers)、命令和状态奇存器(CSRs,Command and Status Register),本地定义的寄存器(Locally-Refined Registers)以及数据结构(Data Structures)。与其他的请求格式不同,维护操作的请求和响应包格式都是第8类包格式。第8类包不含地址字段,只含写请求和读响应的数据载荷。
WRSIZE字段规定了多双字事务数据载荷的最大长度。数据载荷的长度不能超过这个最大长度,但是如果需要的话,可以比这个最大长度小。维护读请求和维护请求都产生正确的维护响应 。维护事务的请求包格式如下图所示
Hopcount跳数是一个8-bit字段,该字段规定了交换机的数量跳数,维护包经过发起处理单元到目标器件就是该交换机,如果跳数不为0,交换机将跳数值减1,并根据目的器件ID字段将包发送出去。使用该方法可以方便的访问两个可寻址处理期间间路径上的任意交换机。然而,由于维护响应包总是以某个端点为目的地,包的源期间应该将目的地不是交换机期间的事务的跳数置位0xff,这样做是为了防止包被它所经过的交换器件错误地接收。
维护事务包格式中逻辑层各个字段的含义如下表所示维护事务的响应包格式如下图所
字段 | 值 | 含义 |
Ftype | 8 | 第8类事务代表维护类事务,维护类事务中这个字段固定为8 |
Ttype | 4’b0000 | 指定一个维护读请求 |
4’b0001 | 指定一个维护写请求 | |
4’b0010 | 指定一个维护读响应 | |
4’b0011 | 指定一个维护写响应 | |
4’b0100 | 指定一个维护写端口请求 | |
4’b0101~4’b1111 | 保留 | |
Hopcount | ||
Config Offset | 用于读写CAR/CSR寄存器的双字偏移量 | |
Src TID | 维护请求包的事务ID | |
Target TID | 维护响应包的事务ID | |
Status | 4’b0000 | DONE状态:表明请求的事务成功完成 |
4’b0001~4’b0110 | 保留 | |
4’b0111 | ERROR状态:检查到不可恢复的错误 | |
4’b1000~4’b1011 | 保留 | |
4’b1100~4’b1111 | 用户定义 |
维护操作由维护请求事务和维护响应事务组成,处理器可以通过这类事务访问CARs/CSRs等寄存器中的数据。如果发起的维护请求事务需要一个响应,那么目标方正确处理了维护请求事务以后会给请求方反馈一个维护响应包而不是由NWRITE_R事务或NREAD事务产生的正常响应包。它支持读取配置寄存器的操作执行长度是字(4字节),也可以是双字( 8字节)或设计者自已指定的双字的整数倍长,但执行长度最多不得超过64 字节。所有写配置寄存器的操作的执行长度规定与读操作相同。维护操作的示意图如下图所示
快来扫描下方二维码关注公众号,领取站内所有相关资料,所有哦~
有建议、有需求、有疑问、联系我