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