Part Number:TMS320C6678
背景如题所示:多核加载使用同一个带BIOS系统的工程,用同一个cfg文件。
以前常用方法是八个核建立8个工程,用8个cfg文件。现在项目要求8个核使用同一个工程。main函数里通过switch-case判断DNUM,来确定各个核运行的任务。
因为没这样使用过,现在测试过程中,出现了一些问题:
1,从核的L1和L2cache关不掉。
如果在main函数的switch函数前就调用cache关闭函数(3个),这样8个核运行会直接崩溃,跑飞,或者出现程序都下载不到core里的情况。
如果在case里,每个核运行的代码上添加cache关闭函数,也会出现以上问题。
如果只在core0 调用,只能关闭core 0 内部的cache,其他核的cache依然关不掉。
2 , 因为现在8个核公用同一个工程,cfg文件也是同一个,这样使用的话需要注意哪些问题,段的分配有没有影响,等。
3,从核能不能运行task线程,操作系统
因为8个核公用的同一个工程,所以配置下来相当于8个核clock依赖的定时器是同一个,这样相互之间肯定有影响了,不知从核能否启用线程。
Nancy Wang:
1、请问是如何关cache的,直接将配置cache size为0试过吗?
2、请参考 7 DSP Code and Data Images
https://www.ti.com.cn/cn/lit/an/sprab27b/sprab27b.pdf
3 如果timer ID设置为any应该不会分配同一个定时器。
Note: Creating a timer with 'Timer.ANY' specified as the id will not return a shared timer on a homogeneous multicore device. To use a shared timer, specify the timer id explicitly when creating it. On these devices Timer.ANY specifies the local timer id. This allows a single image to run on multiple cores since each core will program a different local timer.
https://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/bios/sysbios/6_83_00_18/exports/bios_6_83_00_18/docs/cdoc/ti/sysbios/timers/timer64/Timer.html
,
wapdasta:
第一个问题:cache关闭函数就是配置cache size为 0 。
最新测试发现只要从核不起线程,在bios_start前加入用while(1)。就能随意使用cache关闭函数。
第二个问题:暂不讨论了。
第三个问题:从核确实不能起线程。已经试过了。从核只要加了线程,运行后就跑飞。log如下:
并且通过ROV观察了多个核的情况,这几个核用的timerID确实是同一个。设置timer_any没用。
,
Nancy Wang:
感谢提供信息,我确认之后再给您回复。
,
wapdasta:
您好,不知您那边确认的咋样。
我感觉这个工程健壮性很差,多核跑起来就很容易跑飞。错误依然是类似这种。
最近测试了一下多核启动,用了4个核,只有0,1核运行起来了,另外两个核跑飞。在线运行正常。
我觉得另外两个起不来的原因和上面截图一样