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

TMS320C6657: bios系统下,两个核共用同一工程。

Part Number:TMS320C6657

描述如下:

          bios系统下,两个核共用同一工程。cfg文件共用,内存分配也是共用。把所有段都分配到共享内存和DDR3中。所有的cache都关了。

在main函数中使用DNUM来控制两个核该运行的代码。

问题:

1,在线两个核下载这同个工程,运行会出错。感觉core1跑的程序会影响core0的程序。猜测两个核访问了同一空间。该怎么解决。

2,烧写到办卡,第二个核运行不起来。core 1 的 bootmagic 地址和core0的 bootmagic 一样。

3,带BIOS系统的程序,两个核能共用同一个工程吗?

Nancy Wang:

1.具体什么报错?两个核是处理不同的数据吗?

可以先参考以下帖子的讨论看一下。

https://www.ti2k.com/wp-content/uploads/ti2k/DeyiSupport_DSP_c6678

多核编程手册:

https://www.ti.com.cn/cn/lit/an/sprab27b/sprab27b.pdf

2、建议您去英文论坛咨询一下。

3、可以

,

wapdasta:

您好,经过我一上午测试。

1,必须保留一部分cache,否则core0的task_create + task_sleep ,无法运行。

           我认为,需要保留cache空间,这样能减少两个核使用空间冲突的现象发生。

2,core 1 和 core 0不能都创建任务。

如果core0使用了task_create + task_sleep ,则core1就不能使用task_create + task_sleep。如果用了,core0的线程就无法运行。

但如果把core0的task_sleep注释掉,则两个核的线程都能运行。

所以可以判断是两个核使用的clock有冲突,并且也需要把cache开一部分,以供线程task_sleep使用。

,

wapdasta:

最新聚焦的问题就是task_sleep的问题。两个核共用同一个工程,带bios系统。两个核无法区分 task_sleep所依赖的定时器

如果加了,core0程序就跑不起来,会睡死在task_sleep里面。如果不加,线程之间无法切换。低优先级的线程响应不了。

,

Nancy Wang:

timer ID是选择的ANY吗?工程中不要指定TIMER ID试试。

,

wapdasta:

没指定TIMER ID,

两个核共用统一工程,core 0 跑bios系统,core 1不带bios系统。

多次测试后,发现core0线程中添加使用Task_sleep后,有的时候线程是能跑起来的,Task_sleep也能通过(60%)。有时候就会卡在Task_sleep。(40%)

并且现在经常出现一个现象:core0bios系统程序运行一段时间后会不定时的指针停在_cint00空间地址。从target看到的信息为:

_c_int00() at boot.c:91 0x88880000 (the entry point was reached)

不知道DSP指针为什么会跑到这个地址上去。

,

Nancy Wang:

timer的问题移植您发布的另一个帖子中讨论。

https://e2echina.ti.com/support/processors/f/processors-forum/207338/tms320c6678-cfg-clock

core0停在_cint00后手动调试会继续运行吗?单独跑core0是否会出现这样的情况。

,

wapdasta:

您好,core0运行一会就停在_cint00地址也是突然出现的问题。后来经过各种调试改正,换了个工程等等操作暂时先避免了这个现象。后续如果再出现,再来讨论。

Task_sleep线程切换的问题,现在处理方法是先用Task_yield代替了。测试工程中显示不影响网口的使用。后续会持续跟进。

,

Nancy Wang:

感谢分享!

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6657: bios系统下,两个核共用同一工程。
分享到: 更多 (0)