关于AXI 总线中SlvErr和DecErr的使用
时间:10-02
整理:3721RD
点击:
AXI的response channel有两个error status, decErr和SlvErr。可是我不是很明白当AXI 的IP (slave)端返回了这样的error status给AXI的master 后,ARM是如何定义整个系统的纠错行为的呢?猜测有2个
1. Slave IP 自己发中断
2. cpu 收集err status, 然后统一发exception处理各种错误。
请懂的大侠给些帮助,谢谢先。
1. Slave IP 自己发中断
2. cpu 收集err status, 然后统一发exception处理各种错误。
请懂的大侠给些帮助,谢谢先。
我验证过一个SOC芯片的bus,出现过dec error是因为访问了不在slave有效地址内的地址,所以没有slave 响应。slv err是因为slave接收到了master的请求信号,但是slave还是想传出来一个错误信号。我认为应该是slave会在它准备好传输的时候,自动传输。但是我也不确定我说的对不对。
谢谢。请问你们看到了那个decErr,让software做什么,通过什么方式来resume你的SOC呢?
还是你们debug的时候看到这个问题,修正了driver什么的,然后这个bug就修掉了?
slave 可以有中断发出,并在中断状态寄存器中给标志上。这是设计IP的时,在错误处理考虑的。
做为MASTER,接收到错误后,一般会立即中止本次传输,防止陷入无限的等待,并进入错误处理。一般也是标志错误状态及中断。
CPU的错误集体中处理,一般主要是各种总线桥接器上面的错误以及CPU本身做为MASTER时候。系统中其它的MASTER/SLAVE出错了,CPU未必知道也不需要直接知道,但好的IP设计一定有办法让CPU知道,如中断。
正常情况下面,报错就是表明你的程序进行了非法操作,即与IP的SPEC不符合,如只读区域你进行了写操作,可以报错。或者某个IP只支持32BIT位操作,你进行了16BIT位操作,也可以回个ERR,告诉MASTER给出的要求SLAVE满足不了。一般考虑修改程序。如果你是做IC验证的,根据IP的SPEC进行验证,发现有ERROR,则与设计人员,IP的SPEC是否与他的设计 一致,考虑让他修改。