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.

请教使用 Hyperlink 操作远端 QM 队列的可行性



各位TI的工程师你们好,现在有几个关于Hyperlink的问题想请教各位。

打算使用2片C6670 DSP通过Hyperlink进行互联,需要实现对远端 dsp 传送数据后触发中断。Hyperlink有发送中断包的功能,但我们的系统负载会比较大而且可能传送的消息也会突发很多。想问下在远端DSP触发中断后如果处理时间过长, 或者来的中断脉冲太快,那么后续中断是否会丢失?

比较担心会丢失中断所以我想使用QMSS 的pdsp 产生的中断来操作, 在本端dsp直接将描述符写入远端的 RXQ, 然后pdsp就会触发中断了。只要描述符写到了rxq应该就不用担心丢失的问题了。 

这个方案应该可行但我不确定它的安全性如何,是否有需要注意的地方, 是不是还有更好的dsp间传送消息的方式?

还请各位工程师给予帮助。谢谢。

  • 你的问题可以分成两个:

    1. 中断及时响应问题。

    对DSP来说,如果某一中断事件同时产生三次,那第三个一定会丢失。如果同时产生两次,第二次可能会丢掉或不丢掉,视具体情况而定。

    一般的解决办法是,让中断服务程序尽量简单,最简单的就是只记录中断发生,这种记录的方法很多,你说的往QUEUE里push一个descriptor是其中一种方法。如果是用DSP BIOS的话,可以POST 软中断或信号量(用计数型的信号量),而具体的事件处理由低优先级的任务后续处理。

    2. HyperLink操作远端QUEUE。

    理论上是可行的,但要注意地址映射。远端QUEUE descriptor和它里面的指针地址都是远端DSP自己的地址,HyperLink访问时涉及到至少三个地址转换:

    a. QUEUE push/pop 寄存器地址。

    b. Descriptor 地址。

    c. Descriptor指向的buffer地址.