两块板子之间用SRIO测试数据传输,在测试的时候发现接收端一旦产生doorbell中断,即DOORBELL_ICSR状态寄存器发生变化,
打断点测试,程序不会进入中断服务程序,反而不知道跑到哪里去了。如图:
定义的Doorbell中断为4,查看了IER寄存器,是使能中断4的,想知道这可能是什么原因?
另外,中断服务程序是这样定义的:
interrupt void SRIO_Doorbell_ISR()
想知道它是怎样与中断号4对应起来的呢?
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测试数据传输,在测试的时候发现接收端一旦产生doorbell中断,即DOORBELL_ICSR状态寄存器发生变化,
打断点测试,程序不会进入中断服务程序,反而不知道跑到哪里去了。如图:
定义的Doorbell中断为4,查看了IER寄存器,是使能中断4的,想知道这可能是什么原因?
另外,中断服务程序是这样定义的:
interrupt void SRIO_Doorbell_ISR()
想知道它是怎样与中断号4对应起来的呢?
每个core上有一个中断矢量表,这个表格中对INT0~15分别定义了相应的中断矢量,可以配置ISTP寄存器指定该中断矢量表的存储地址,参考STK中SRIO例程,在该例程SRIO_interrupt.c 中的函数SRIO_Interrupts_Init对corepac INTC进行了配置,在SRIO_vectors.asm中定义了中断矢量表,将其放于section vec中,在cmd中将vec section指定到相应的memory中。
STK: http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664.aspx
关于中断矢量表的描述可参考C66x instruction set user guide 中断章节。
是否设置好了Doorbell中断到具体核的路由?
SRIO详细手册SPRUGW1,figure 2-25:
The DOORBELL packet's 16-bit INFO field indicates which DOORBELL register
interrupt bit to set. There are four DOORBELL registers, each currently with 16 bits,
allowing 64 interrupt sources or circular buffers. Each bit can be assigned to any core
as described below by the Interrupt Condition Routing Registers
调用这两个函数:
CSL_SRIO_RouteDoorbellInterrupts()
CSL_SRIO_SetDoorbellRoute ()
Br
William
你好,是否Doorbell路由设置问题,文档SPRUGW1, figure 2-22
The DOORBELL packet's 16-bit INFO field indicates which DOORBELL register
interrupt bit to set. There are four DOORBELL registers, each currently with 16 bits,
allowing 64 interrupt sources or circular buffers. Each bit can be assigned to any core
as described below by the Interrupt Condition Routing Registers
是否正确调用了CSL_SRIO_RouteDoorbellInterrupts()和CSL_SRIO_SetDoorbellRoute()
Br
William