DSP

C66xx SRIO DoorBell的使用

2019-07-13 15:33发布

关于SRIO DoorBell中断的路径 Keystone DSP的SRIO模块共有24个system Interrupt,即INTDST0~23。其中INDTST0~15为通用的system Interrupt,可以连接到LSU或者DoorBell中断,再输入到CIC0,而INTDST16~23只连接DoorBell中断,属于system Event,直接输入到CorePac。 KeyStorn模块的DoorBell中断的路由路径有4种,分别为经过CIC0和EventCombiner、经过CIC0但不经过EventCombiner、不经过 CIC0但经过EventCombiner、不经过CIC0和EventCombiner。 本文以DSP6678中的core0为例,不经过CIC0和EventCombiner,以INTDST16(16+n,n=0)说明core0 SIRO DoorBell中断 说明:RapidIO的协议中Doorbell包中的16bit Doorbell info没有含义,但是KeyStone DSP将Doorbell info的0~3bit作为了n,以0000 0000 0010 0101为例,REG号为2,Doorbell info = 0b0101; 下图为官方给出的设置例子: 1、SYS/BIOS HWI中断的配置 HWI.evevtID = 20; 可由TMS320C6678 System Event Inputs — C66x CorePac Primary Interrupts 表格得到,n为核心数 针对DSP6678,CORE0的SRIO中断事件即为0+16,CORE1的中断事件为1+16,。。。 2、DoorBell中断路由配置 (1)DoorBell可以路由至专用中断,也可路由至16个通用中断; 作为例子,将INTERRUPT_CTL的值设为0,路由至Dedicated Doorbell Interrupts; 此时,使用Table 3-33 以核心0的SRIO DoorBell 中断为例,核心0对应的专用中断为INIDST16 (2)设置ICRR1,ICRR2寄存器 设置4个不同的“事件”,将ICR0~ICR3对应INTDST16,即将ICR0~ICR3的值都设置为INTDST16的value,即0000b (3)产生一个DoorBell中断 LSU5中写入相应info,例如是ICR0对应的事件,写入0,ICR1事件写入1,ICR2事件写入2 (4)读取中断状态寄存器的值,0~15bit相应位为1则发生了中断,例如bit2 = 1,则代表的是ICR2事件中断 (5)清楚DoorBell中断,相应位写入1