C66xx SRIO DoorBell的使用

关于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

  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值