TI_DSP_SRIO - Doorbell原理

前文介绍到SRIO有多种类型的包,其中包含了Doorbell包,Doorbell是一种快速的通知类型的短消息,包头和携带信息都很短,用于master srio设备通知slave srio设备,可用于DSP间的消息通知,也可用于FPGA与DSP间的消息通知。

Doorbell包payload的大小为16bit,如下图阴影处为有效位,其他为reserve位。5,6位用于选择Doorbell中断状态寄存器,对于TI DSP的srio包含了四个中断状态寄存器,即DOORBELL[0-3]_ICSR,每个寄存器仅有16位有效,即每个寄存器可以支持16个中断源,所以四个寄存器可以支持64个中断源,在TI Nyquist的4 core DSP中,我们在使用中可以为每个core分别配置一个ICSR寄存器,这样当对应的寄存器的某位置位了,相应的core会相应该中断。对应于ISCR的四个寄存器的是4个DOORBELL[0-3]_ICCR寄存器,他与ICSR一一对应,用于清除ISCR寄存器中的中断请求位。

例如,DSP A要想DSP B发送Doorbell通知消息,在DSP A上可以配置LSUx_Reg3寄存器中的Doorbell有效位为1,这样就表示了LSUx_Reg5寄存器中的16bit Doorbell_Info内容是有效的,我们可以把Doorbell_Info配置为0x25,当LSUx_Reg0~5寄存器都被设置好后,SRIO硬件会生成Doorbell包(包含两种生成包的情况,参考TI_DSP_SRIO - useful_Q&A一文),当DSP B收到该包后,判断Doorbell包的payload为0x25,SRIO硬件会将DOORBELL1_ICSR的第5位中断请求位置为1。这样通过与第5位绑定的system event产生中断,在与event绑定的中断函数中可以执行与DOORBELL1_ICSR寄存器的第5位绑定的callback函数,在callback函数中可以执行CPU的任务。(下文讲解doorbell的中断到core的机制是如何实现的)。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值