This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

SRIO错误侦测和管理机制

最近应客户需求又写了些SRIO的错误处理的基本原理和方式,其中部分是参考于协议,当然也基于TI的东西做了相应说明。特贴上来供大家讨论,希望对大家能有帮助。

SRIO的错误侦测主要分为两部分,物理层的错误侦测,逻辑层/传输层的错误侦测,每种错误侦测都有特定的寄存器来控制。 

物理层错误侦测

特性

1) 每一种错误只能有1个bit来表示;

2) 可以连续检测错误,不会因为某些错误状态而停止检测其余错误;

3) 物理层的错误侦测被使能后,错误的信息被保存在Port Attribute Capture CSR和Port Packet/Control Symbol Capture 0-3 CSR中。

记录的错误信息

当Port Attribute Capture CSR还没有捕获到有效信息时(Valid Info状态为0),如果出现错误,那么错误信息会记录在Packet/Control Symbol Capture 0-3 CSR中,而且Valid Info会被更新为1,这样其他接下来的错误就不会再去更改这些寄存器。一般来说,报文的前16byte,短分隔控制符号的4byte或者长分隔控制符号的8byte会被保存在Packet/Control Symbol Capture 0-3 CSR中。

可供检测的错误

参见SPx_ERR_DET寄存器:

错误门限

物理层的错误有可能自动恢复,因此一般是对系统软件屏蔽的。但是我们可以通过设置两个门限(在Port Error Rate Threshold CSR中)来强制的上报你所需要的物理层错误。这两个门限分别是Degraded门限和Failed门限。

Degraded门限和Failed门限功能类似,都是通过超过设定一个门限,如果错误计数超出这个门限则产生告警。一般来说Failed的门限要高于Degraded的门限。

关于控制门限的几个事项:

1) 错误计数器只计数物理层错误的相关数据;

2) 只有错误计数使能和错误侦测使能同时打开的选项才能计数;

3) 错误计数器可以根据用户的配置周期性自动减1,但不会翻转,也就是不会从0x0到0xff

 

满足错误门限后SRIO的状态

当错误达到门限后的动作(这个取决于Port Control CSR里面的Stop on和Drop Packet两个位域)

Stop on Port Failed Encountered Enable

Drop Packet Enable

端口行为

备注

0

0

端口会继续传输报文

 

0

1

端口会丢弃报文并去接收一个Packet-not-accept控制符号;在丢失报文的时候会设置output packet-dropped bit

仅用在switch设备

1

0

端口会停止发送报文的尝试,但是不丢失报文,因此端口会被堵塞

 

1

1

端口会丢失所有输出报文,Output packet-dropped bit会被置位

 

 

逻辑/传输层

特性

1) 逻辑/传输层的错误侦测被记录在Logical/Transport Capture CSR中。

2) 该寄存器在捕获到错误之后就会自动锁住,因此,在软件清除捕获错误之前,只能捕获第一次侦测到的错误。

可检测的逻辑层错误

参见ERR_DET寄存器

  

错误通知方式

SRIO的错误管理机制主要是完成当侦测到SRIO错误的时候需要如何进行操作。协议规定有两种错误告知方式,主机中断,port-write维护报文。

主机中断

主机中断方式不在协议中规定,由各个主机完成。

主机中断的就是说当出现这些错误之后,SRIO会产生一个中断告知主机。主机在响应这个中断的时候进行相关处理。

TI的架构中在ERR_RST_EVNT_ICSR设置对应的主机中断,分别可以设置物理层各个port,传输层和逻辑层的错误中断。

 

Maintenance Port-Write

Port-write是SRIO物理层自动发送的一个Maintenance报文。该包需要系统设备预先做一些设定。通常一个maintenance Port-write报文包含16byte内容,这些内容都来自CSR,包括遇到的错误添加,一些可选的执行操作信息等。

其中Component tag CSR是一个设备的身份标识,在系统初始化的时候由软件设置;

其余CSR和部分都来自错误相关的寄存器。

在TI的设备中,在PLM_SP(n)_PW_ENABLE寄存器中能使能和禁止各种状态的Port-write。如果使能了,那么Port-write会按照PW_Timer的方式反复发送,直到对端收到并修复相应的错误状态为止。