TI中文支持网
TI专业的中文技术问题搜集分享网站

doorbel中断响应错误

测试发消息时,向对方核发送,并使对方核相应对应中断,6474三个DSP,共9个核,现在发现00核向22核发送消息完后,22核中断相应有错,本该中断1相应,结果进了中断0,导致消息解得出错,其他核正常,很费解。。。在doorbell信息的16bit中,Doorbell Reg #  2bit是选择响应的中断,但是在配置时选择的是中断1,却进了0,不知道是什么原因,不知那位大哥遇到过类似问题,请解答一二。。

 

 

Jane Lu:

Hi Xue,

          00核向22核发消息,是指DSP0的核0向DSP2的核2发消息吗?

     出问题的时候,DSP2的DOORBELL相关中断路由寄存器doorbellx_icrr配置的值可否贴一下?

     谢谢!

Jane

xl xue:

回复 Jane Lu:

Hi Jane,

00核向22核发消息,是指DSP0的核0向DSP2的核2发消息,关于ICRR寄存器的配置如下:

REG_SRIO_DB0_ICRR = 0x00000420;

REG_SRIO_DB1_ICRR = 0x00000531;

这是讲中断路由到某个INTDST n上,在中断函数中就是从这个寄存器解析,并清除中断,关于doorbellInfo 有16个bit,第5,6比特位可以配置选择哪个中断,具体图可见TMS320C6474 DSPSerial RapidIO (SRIO)User's Guide  第2.3.6       Doorbell Operation  小节。我是这样配置:doorbellInfo = (**)+ 4*(**)+32*(1)];前两个括号是其他配置,不影响这里,32*1是将1左移了5位,按逻辑应该是中断1响应,但结果却是进了中断0,所以错了。按照以上配置,00核给其他核发均正常,所以很费解。

谢谢!

Xue

Jane Lu:

回复 xl xue:

Hi Xue,

           给其他核配置的时候,16bit的doorbellInfo是一摸一样的吗?doorbellInfo = (**)+ 4*(**)+32*(1)这个配置是否会有值赋给第4bit(reserved bit)?

     DSP响应doorbell中断时候,doorbell_icsr的第几个bit被置位了?

     谢谢!

jane

xl xue:

回复 Jane Lu:

Hi Jane,

             16bit的doorbellinfo不是一模一样的,有不同的配置(**)+ 4*(**)是低0~3bit,4bit(reserved ),32*(1)是5~6bit,这个值可能为0,或1。

        SRC    DST     ICRR                 db0         db1

                  00        00          0                        0             1

                  00        01          1                        2             3

                  00        10          2                        4             5

上表中 00 及DSP0Core0  ,01及DSP0Core1,根据SRC,DST值配置ICRR也是0~3bit值,具体可参考TMS320C6474 DSPSerial RapidIO (SRIO)User's Guide  第2.3.6       Doorbell Operation  小节。

Jane Lu:

回复 xl xue:

Hi Xue,

            Sorry, 我还是不能从上面的信息中看出出错的原因,还请您能直接写一下00向22发的boorbell 16bit信息值,以及中断产生时doorbell_icsr的信息,多谢!

xl xue:

回复 Jane Lu:

Hi Jane

                 16bit信息值:doorbellInfo = t_uiDstCoreID(2) + 4*g_uiLocalCoreID(0) +32*(1);括号内为相应变量的值。DOORBELL1_ICSR (0210h) = 0x00000004;这些bit位都没有问题,现在中断出错只跟5,6,bit有关系,也就是32*1的值,乘1应该进中断1,现在进的是中断0,就这个出错。

xl xue:

回复 Jane Lu:

Hi Jane

                 16bit信息值:doorbellInfo = t_uiDstCoreID(2) + 4*g_uiLocalCoreID(0) +32*(1);括号内为相应变量的值。DOORBELL1_ICSR (0210h) = 0x00000004;这些bit位都没有问题,现在中断出错只跟5,6,bit有关系,也就是32*1的值,乘1应该进中断1,现在进的是中断0,就这个出错。

Jane Lu:

回复 xl xue:

Hi Xue,

            doorbellInfo= 0b10010, 而DOORBELL1_ICSR (0210h) = 0x00000004, 说明SRIO解析doorbell信息没有问题。 另外0b10010对应了doorbell中断配置应该使用DOORBELL1_ICRR的ICR2位域来路由中断。 这个值您配置为5,也就是说中断路由到INTDST 5上。 按照6474芯片手册,INTDST5对应了72号系统事件,请问EVTFLAG2寄存器相应的比特位是否被置位了? 71号和72号事件分别路由到哪个DSP中断? 您说的中断1是指72号事件对应的中断吗?

     另外,请问ERR_RST_EVNT_ICSR寄存器和ERR_RST_EVNT_ICRRx的值是多少?

     谢谢!

Jane Lu:

回复 xl xue:

Hi Xue,

            doorbellInfo= 0b10010, 而DOORBELL1_ICSR (0210h) = 0x00000004, 说明SRIO解析doorbell信息没有问题。 另外0b10010对应了doorbell中断配置应该使用DOORBELL1_ICRR的ICR2位域来路由中断。 这个值您配置为5,也就是说中断路由到INTDST 5上。 按照6474芯片手册,INTDST5对应了72号系统事件,请问EVTFLAG2寄存器相应的比特位是否被置位了? 71号和72号事件分别路由到哪个DSP中断? 您说的中断1是指72号事件对应的中断吗?

     另外,请问ERR_RST_EVNT_ICSR寄存器和ERR_RST_EVNT_ICRRx的值是多少?

     谢谢!

Jane Lu:

回复 xl xue:

Hi Xue,

            doorbellInfo= 0b10010, 而DOORBELL1_ICSR (0210h) = 0x00000004, 说明SRIO解析doorbell信息没有问题。 另外0b10010对应了doorbell中断配置应该使用DOORBELL1_ICRR的ICR2位域来路由中断。 这个值您配置为5,也就是说中断路由到INTDST 5上。 按照6474芯片手册,INTDST5对应了72号系统事件,请问EVTFLAG2寄存器相应的比特位是否被置位了? 71号和72号事件分别路由到哪个DSP中断? 您说的中断1是指72号事件对应的中断吗?

     另外,请问ERR_RST_EVNT_ICSR寄存器和ERR_RST_EVNT_ICRRx的值是多少?

     谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » doorbel中断响应错误
分享到: 更多 (0)