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

c6670芯片中,FFTC和TCP3d测试工程中的IPC_start()函数问题?

各位老师你们好,

        在C6670芯片中,FFTC和TCP3d的测试工程中都有IPC_start()函数,为什么在FFTC测试工程中需要把四个核组在一起跑才能正常运行,而TCP3d则不需要,可以单核运行呢?还有在FFTC测试工程中如果我只需要某一个核运行是否可以做到,如果可以的话,请问是需要修改代码还是配置文件,怎样修改?以上两个问题希望哪位老师能给出详细解释说明。非常感谢!

Andy Yin:

wenzheng liu您好,

1. MCSDK中的FFTC工程是针对多核做的一个验证性例子,你可以参考其中的readme说明理解其基本的工作原理;因为例子做的多核代码比较复杂,如果需要修改到一个核上运行的话,需要首先理解example,以及FFTC与Navigator,然后再进行修改;

2. IPC_start是对共享内存中heap做一个初始化。具体需要参考Bios相关文档。

请问您目前对keystone的Navigator有多少的了解?谢谢

wenzheng liu:

回复 Andy Yin:

Andy Yin你好,

1、对FFTC这个模块,我大概看了以下三个文档,分别为FFTC User Guide,Multicore Navigator和FFTC-SDS.pdf,再结合FFTC的multicore-testProject工程代码,已基本理解FFTC的example,只是对某些局部不是很理解。比如说,我想在multicore-testProject工程上修改为我自己的驱动程序(希望在两个核上同时运行,并得到正确结果),目前,通过对该工程的剥离和修改,只能在核0上得到正确结果,在核1上只有发送,没有接受,请问这个是否与中断服务程序有关?

2、FFTC的所有工程实例全是基于多核设计,是否核间通信与函数IPC-start有关?如果与它无关,在代码中怎样体现的?

3、在配置文件中,可以修改核数(core0,core1,core2,core3),可以使它不再四个核上同时运行,不知这样修改是否正确?

Andy Yin:

回复 wenzheng liu:

wenzheng liu您好,

1. 对于FFTC multi-core example: 我看了一下代码,基本的数据流为core0/1/2/3分别提交FFTC到TxQ,输出的结果分别由core1/2/3/0处理,并且其中使用了hardware semphore达到多核同步。如果要修改为2个核上处理,如core0的结果由core1处理,而core1的结果由core0处理,则只需要修改multicore.c中line825->line857为如下:

   switch (coreNum)

   {

       case 0:

       {

           myQNum      =   708;

           destQNum    =   709;

           accChanNum  =   4;

           break;

       }

       case 1:

       {

           myQNum      =   709;                

           destQNum    =   708;

           accChanNum  =   5;

           break;

       }

       default:

           goto error;

   }

其他的地方没有太多需要修改的。如果要修改只在一个核上运行,如在core0上,则修改为如下即可。

   switch (coreNum)

   {

       case 0:

       {

           myQNum      =   708;

           destQNum    =   708;

           accChanNum  =   4;

           break;

       }

       default:

           goto error;

   }

2. multi-core FFTC工程中IPC只是用在了多核之间的同步,核间通信使用了Navigator。

3. 对的。

请参考并反馈一下你的测试结果,谢谢

wenzheng liu:

回复 Andy Yin:

Andy Yin老师你好,

首先,你的建议很好,使我受到了很大程度的启发,在此非常感谢你。其次,对于我的FFTC硬件加速器驱动,还有以下两个个问题不清楚:

1.在multicore_example工程上按你说的建议修改,经测试,确是没有问题。但是,我想做的驱动是想把多实例与多核的工程进行融合(即MultiInst_testProject和multicore_exampleProject),使其具有多实例和多核运行的功能(比如说core0上用实例A,core1上用实例B,且在两个核上也要同时运行。)。目前,我的驱动是以多实例工程为模板进行的修改的(发送和接受分别用两个任务完成),在你的建议启发下,再次进行了修改,目前还未实现两核同时运行的状况,求指教?另外,对于我以上要求的驱动,请老师给些具体建议,在哪个例子工程上修改比较好?如何才能达到我的要求?

2.在multicore_example工程中,如果是3个核运行的话,为什么是core0的结果由core1处理,core1的结果由core2处理,core2的结果由core0处理?假设在pHY层我有3处要用到FFT/IFFT,它们分别对应到core0,core1,core2上运行,它们的关系是否是core0的结果由core1处理,core1的结果由core2处理,core2的结果由core0处理?

wenzheng liu:

回复 Andy Yin:

Andy Yin老师你好,

1.非常感谢你提的六点宝贵意见,目前,我的有关问题已完全解决。

2.根据你的建议,我发现其中有五点建议我已修改,但是最关键的一点未能注意到,那就是对QM_HIGH_PRIO中断映射到正确核上理解未能到位,没有保证产生的QM_HIGH_PRIO中断映射到正确的核上。先前,因是默认在core0上运行,所以core0能正常运行,而不能在core1上正常接收FFT结果,现在加上corenum,在core1上也能正确运行。

3.主要是基于6670芯片上做链状网通信项目,在phy层用到FFTC。

4.Andy Yin老师你好,我接触6670芯片时间不是很长,以后如有问题(可能有些问题比较肤浅)还请多多指教。

最后,对老师的详细回答非常满意,再次感谢你,谢谢!

Andy Yin:

回复 wenzheng liu:

wenzheng liu您好,

不用客气,有问题尽管提出,我们共同探讨解决!

同时也非常欢迎共享你宝贵的经验,谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » c6670芯片中,FFTC和TCP3d测试工程中的IPC_start()函数问题?
分享到: 更多 (0)