第8类事务维护事务用于访问 RapidIO能力寄存器(CARs,Capability Registers)、命令和状态奇存器( CSRs,Command and Status Register) ,本地定义的寄存器(Locally-Refined Registers)以及数据结构(Data Structures)。与其他的请求格式不同,维护操作的请求和响应包格式都是第8类包格式。第8 类包不含地址字段,只含写请求和读响应的数据载荷。
WRSIZE字段规定了多双字事务数据载荷的最大长度。数据载荷的长度不能超过这个最大长度,但是如果需要的话,可以比这个最大长度小。维护读请求和维护请求都产生正确的维护响应 。
维护事务的请求包格式如下图所示
维护事务的响应包格式如下图所示
维护事务包格式中逻辑层各个字段(Hopcount字段不属于逻辑层,下表同样列出它的含义)的含义如下表所示
字段 | 值 | 含义 |
---|---|---|
Ftype | 8 | 第8类事务代表维护类事务,维护类事务中这个字段固定为8 |
Ttype | 4’b0000 | 指定一个维护读请求 |
4’b0001 | 指定一个维护写请求 | |
4’b0010 | 指定一个维护读响应 | |
4’b0011 | 指定一个维护写响应 | |
4’b0100 | 指定一个维护写端口请求 | |
4’b0101~4’b1111 | 保留 | |
Hopcount | 跳数是一个8-bit字段,用于确定维护事务的目标交换器件。RapidIO交换器件没有器件ID,跳数是可供选择的寻址交换器件机制 | |
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 字节。所有写配置寄存器的操作的执行长度规定与读操作相同。维护操作的示意图如下图所示