TI中文支持网
TI专业的中文技术问题搜集分享网站

关于.Multicore_Training中EXP4_MCSDK中的QmInfraMC例程的疑问

各位专家您好:

               我是一名在校学生,刚接触6678不久。了解到做多核之间通信需要利用处理器间中断IPC和核间通信寄存器来实现。在参照多核培训教材中的MCSDK部

分关于6678PDK的例程QmInfraMC有如下一个图的解释:

 

   

再参照例程运行的console打印信息并且结合程序逐步看配置过程,发现还是看不明白。具体是怎么一个配置的流程

正对这个例程的操作,我应该怎样来弄明白呢?

想请问有什么相关文档说明配置多核之间通信的步骤不?

还有想了解Multicore Navigator是怎么具体处理不同核之间的数据交互应该怎么做呢?

恳请指导~

如果有需要CONSOLE信息附在附件中          

Andy Yin1:

这个图讲的是在初始化完之后,run-time的处理流程,用的是Navigator来实现核间通信,所以需要了解Navigator的使用流程,你可以再看看Navigator的手册及培训资料。

Eric Xing:

回复 Andy Yin1:

您好:

        之前因为因为一些事情不得不暂时放下对这个的研究。这几天吧Navugator的UG看了看,同时也在6678上调试了下,有了些新的问题。还是这个例程,结合这个图:

1.完成初始化后Core0发送一个包时:在TxFreeQue中POP一个Desc (Desc为Mono型),把数据缓冲区复制添加到Desc里,设置源和目的信息以及包长度,再把Desc放到TxQue里面,当它排到头DMA就会自动发送其对应的数据。不知道这样的描述是否正确?

2.接收包时,数据接收到后会存放在接收FIFO中,然后PKTDMA会从Rx Free DescQue  pop一个空的Desc,然后用收到的Desc信息填充Rx Free Desc,最后将Rx Free Desc 写到Rx Queue,数据写到对应地址?

3.通过RxQ704接受包后产生中断,产生中断是通过PDSP,PDSP在这里产生中断是通过列表满吧?感觉不像配置accumulator的寄存器来设定中断产生阈值,

在中断程序里

面, each core pop descriptor from sync free queue4000, and push it to sync queue3000 to generate sync signal to other cores.程序里CORE123不断检测syncQueHnd的EntryCount,当其为0是表示得到同步信号。

想知道为什么是通过这种方式来同步呢。SYNC queue,sync free queue是在属于哪部分的?还有EntryCount是什么?

4.核得到同步信号后有以下:

/* Recycle the sync descriptors */

            if ((desc = (Cppi_Desc *) Qmss_queuePop (syncQueHnd)) != NULL)

            {

                /* Push descriptor to sync free queue */

                Qmss_queuePushDesc (syncFreeQueHnd, (UInt32 *) desc);

            }

 

/* Recycle the Tx descriptors from Tx completion queue to Tx free queue */

                Qmss_queueDivert (txCmplQueHnd, txFreeQueHnd, Qmss_Location_TAIL);

这两程序的作用是什么?搞不懂。。问题比较多哈~恳请指导。。。

赞(0)
未经允许不得转载:TI中文支持网 » 关于.Multicore_Training中EXP4_MCSDK中的QmInfraMC例程的疑问
分享到: 更多 (0)