一个工程编译后,下载到公共内存上面,发现它们的程序的地址是一样的?然后发现程序中的变量不管是全局变量还是局部变量都会有相互影响。
举个例子:
int coreID = CSL_chipReadReg (CSL_CHIP_DNUM);
printf(" CORE%d START!",coreID);
输出结果是:
怎么能让这种影响不发生?必须用几个不同的工程么?还有如何让程序的下载地址不一样?要分别使用不同的CMD文件,然后把text区指向不同的空间么?
本人菜鸟,望大神们不吝赐教!谢谢!
Andy Yin1:
1. 你上面的代码工程中缺少cmd文件,可以在ccs及PDK中找一个cmd放到工程中,从而可以在每个核上输出不同的coreID;
2. 多核可以共享一份代码,代码放在共享区间;对于私有的代码可以放在L2,每个核看到的L2局部地址是一样的,而如果要将私有代码放在共享memory,可以每个核定义一段code section,每个私有代码放在每个core划分的私有memory即可。
li dong:
回复 Andy Yin1:
每个核定义一段code section,每个私有代码放在每个core划分的私有memory即可,,这个在cmd文件里怎么区分了,如何编写cmd文件?
Andy Yin1:
回复 li dong:
定义多段section,在代码中将每个核的私有代码放在不同的section。
Hu pc:
回复 Andy Yin1:
没明白您的意思,多核共享一份代码,放在共享区内,自动变量似乎会相互影响!
Hu pc:
回复 Andy Yin1:
to Andy Yin1:
没明白您的意思,多核共享一份代码,放在共享区内,自动变量似乎会相互影响!
"定义多段section,在代码中将每个核的私有代码放在不同的section。"是说要建立多个工程,每个核分别下载不同的.out文件么?
Hu pc:
回复 li dong:
TO li dong:
请问您是遇到和我一样的困惑么?您解决了么?
li dong:
回复 Hu pc:
我也还不理解哦