您好:
C6678 上电后,如何实现8个核共享同一个cmd文件?也就是说.text段放在共享存储器中,8个核运行时都去共享存储器取指令,但是如果这样操作的时候,8个核取指令的同时会产生一个地址冲突!
谢谢!
Anna:
多核编程的UserGuide:www.ti.com/…/sprab27a.pdf
简单地,也可以:
main()
{
coreID = GetCoreID();//DSP的DNUM寄存器
switch(coreID)
{
case core0:
task_core0(…);
break;
case core1:
task_core1(…);
break;
…
default:
break;
}
}
一个image同时运行在不同核上。
si cheng:
回复 Anna:
Anna,您好:
我想将8个核共享的段,单独拿出来,放到共享存储器中,这样的话,每个核的片内L2可以节省.text段大小的空间,比如:
8个核的cmd文件中都有如下形式部分.这样8个核只需用这一段代码段,就不需要每个核都拥有这样一个相同的代码段.8个核取指令的时候都去MSMC取指令,不知程序能否这样设计?
MEMORY
{
MSMC:o = 0c000000h l = 003fffffh
}
SECTIONS
{
.text > MSMC
}
Anna:
回复 si cheng:
当然可以。8个核可以使用同一个cmd文件,也可以使用不同的cmd文件。如果使用RTSC,可以通过修改Platform及*.cfg文件完成内存空间映射。
针对共享内存控制的详细使用,请参考MSMC的UserGuide
www.ti.com/…/sprugw7a.pdf
si cheng:
回复 Anna:
您好:
如果8个核同一时刻去共享存储器的同一地址取相同的指令,应该会产生地址冲突,如何解决这个冲突?
Anna:
回复 si cheng:
方法一:使用硬件信号量。
硬件信号量的User Guide:www.ti.com/…/sprugs3.pdf
Yu Liu:
回复 King Wang:
还有对于每个核的预取机制可以大大减少共享内存访问冲突。
conghu zhu:
回复 Anna:
Anna,您好!
您上面的过程应该是8个核同时运行某个代码段,但是它们是各自分开运行的,没有进行数据通讯。我想利用8个核共同来完成某段程序,而且它们的数据是共享的,应该怎么办?
Andy Yin:
回复 conghu zhu:
您好,
先确认一下你的问题:8各核运行相同的代码,并且同时处理相同的数据?是这样么?