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

TCI6638K2K 多核调试问题咨询

您好!

       在调试FFTC硬核的时候,不论是在test例程还是example例程中,都有要求如下:“To see the multicore example application in action, please build and run the multi core example project on all 4 cores in "synchronous" mode.”。按照上述操作,在debug的时候,选中以下两个选项:“creat a debug group for selected cores”以及“make the group synchronous”,程序可以顺利的运行。

       请问在这种烧写模式下,4个核烧写的代码是否全都相同? —— 从输出log看,各个核输出各不相同,执行的代码应该是各补相同。

       如果各个核所执行的代码各不相同的话,那么是在那个地方有做类似的规定?是代码C语言的函数中吗?

       未找到相关文件有做类似的说明,只能麻烦您帮忙解答了!谢谢了!

祝好!

Thomas Yang1:

一样的代码,只不过每个核中执行不同的代码分支,是靠 CORE_NUM来区分的,KEYSTONE中有寄存器可以反映当前CORE的NUMBER,这个是多核调试/开发时的一种常用办法

jiyi chen:

回复 Thomas Yang1:

Thomas:

       您好!非常感谢您的回答。还有几个问题需要麻烦您帮忙解答。

        1、对于上面的那个问题,那么我是否可以认为我在烧写的时候,只要选中那几个核,不需要选中那几个选项,可以是同样的效果呢?

        2、为什么FFTC的代码中,不论是example例程还是test的例程均是要在多核的的情况下进行?是否可以在单核下就完成FFTC硬核的测试呢?

        3、以工程“fftcMCK2KC66BiosExampleProject”为例,代码中按照您的描述,根据CORE_NUM进行执行不同的分支。

             初始化阶段:core 0主要执行了system_init()函数,core 1、2、3仅仅主要执行了Qmss_start ()函数。

             例程测试阶段:最主要的根据不同核分配了myQNum、destQNum 、accChanNum三个变量。后面便没有根据core不同的不同程序分支了。

           您所指的分支就是这个吗?按照queue的编号的确是按照说明core 0 –> core 1 –> core 2 –> core 3 –> core 0。但是我疑惑的是,每个分支是不是都执行了一次FFT变换呢?4个核执行一次才实现一次FFT变换呢?

      期待您的再次回答!谢谢了!

祝好!

Andy Yin1:

回复 jiyi chen:

1 你说的那几个选项只是将几个core弄成一个debug group,之后可以一次连接并load多核,方便多核的操作;当然你也可以一个个core链接并load程序,并不会影响程序的执行;

2 FFTC只是一个硬件模块,每个core都可以操作,可以根据不同的应用由不同的core控制它,提供的例程只是例程,例程中也支持singlecore及multicore测试,如在test main中就有如下通过宏来区分的测试代码。

#if defined(TEST_MULTIPLE_INSTANCES) Fftc_osalLog ("————– Testing FFTC Instance: %d Start ————–\n", fftcInstNum); if (coreNum == SYS_INIT_CORE) { test_host_singlecore_multiInst (fftcInstNum, hFFTC); test_host_singlecore_queueshare (fftcInstNum, hFFTC); }#elif defined(TEST_MULTICORE) test_multicore (hFFTC);#else if (coreNum == SYS_INIT_CORE) { test_fftc_lld (); test_mono_singlecore (hFFTC); test_mono_singlecore_psinfo (hFFTC); test_host_singlecore_poll (hFFTC); test_host_singlecore (hFFTC); test_host_singlecore_psinfo (hFFTC); test_singlecore_shift (hFFTC); test_singlecore_dftlist (hFFTC); test_host_singlecore_flowshare (fftcInstNum, hFFTC); } #endif

3 test main中如下代码就是用来区分core,不同的core执行不同的分支;例程中multicore操作FFT,是每个core分别将不同的数据送入FFT做不同的FFT,FFT处理是按包来做的,FFT并不关心处理的包是来自哪个core,每个core送进去的数据包会根据所对应的配置分别依次排队处理。

coreNum = CSL_chipReadReg (CSL_CHIP_DNUM);

if (coreNum == SYS_INIT_CORE)

赞(0)
未经允许不得转载:TI中文支持网 » TCI6638K2K 多核调试问题咨询
分享到: 更多 (0)