• TI_DSP_SRIO


    前文介绍到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的机制是怎样实现的

  • 相关阅读:
    霓虹灯牌 V0.3已发布
    ACSL比赛的鸡肋解释器???
    Linux和Aix系统shell获取IP地址
    openWrt编译环境feeds update a
    openWrt(LEDE)下载包目录dl目录新旧差异脚本备份,阿里百度更新下载连接
    20年5月面试汇总
    Redis++:(雪崩、击穿、穿透) 那点事
    Redis++:为什么Redis 是单线程却能支撑高并发?
    Java++:HikariCP连接池参数解释
    我来谈谈“人工智能”这个词给我带来了哪些想法
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4267500.html
Copyright © 2020-2023  润新知