对于c6678,除了用仿真器外,有没有用其它方式加载含有OpenMP的多线程程序的例子或说明?
想用用1核作为主线程核,在OpenMP.xs修改了
var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
MultiProc.baseIdOfCluster = 1;
var id = 1;
if (MultiProc.baseIdOfCluster != undefined) {
id = MultiProc.baseIdOfCluster;
}
现在我的程序只能用软硬件仿真器运行,希望能够1到7核运行线程但6和7核好像没有效果。还需要修改openmp模块中的什么其它部分么?
不知道若用mcoreloader加载多线程程序有什么要点?或者有其它方法?
多谢指点
Andy Yin1:
参考:http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/301318
http://e2e.ti.com/support/embedded/linux/f/354/p/301321/1052380.aspx#1052380
edvard H:
回复 Andy Yin1:
谢谢解答。我又改了一下地址分配现在加载后不会把linux搞崩溃了,但是现在的OpenMP矩阵计算的例程还是不能正确输出。我在内存上写操作好像没有被运行。
对于OPENMP我用的地址分配
MSMCSRAM
0x0c004000到0x0c100000
MSMCSRAMNOCACHE
0x0c100000到0x0c204000
不知道这种多线程程序在仿真器加载过程中有什么特殊过程么?看了PSC的文档也没太看明白。
实在感谢了
edvard H:
回复 Andy Yin1:
我看OpenMP文档中有写主线程所在内核reset其它内核。
Running within CCS IDEIt is recommended to disable auto-run-to-main in CCS before running OMP applications.1) Load the image onto CORE0 only and load symbols on the remaining cores being used in the application. If OpenMP.autoDnld is set to true, the master core will reset the slave core, and run the slave core from _c_int00.2) Please make sure the slave core are either disconnected or are running. If the slave core are disconnected the CIO will not be available from salve core.3) To see the output from slave core with OpenMP.autoDnld set to true, please load the symbols on slave cores.
Running using supplied run scripts
这两种方法是否都需要仿真器支持。有没有利用mcoreloader加载OpenMP多线程程序的文档
感谢解答