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

关于C6678多核使用同一个.out的问题请教

大家好:

       现在我在调试的一个C6678的工程是这样的:整个工程产生一个.out文件,并将这个.out load进8个core,这样8个core就能共享同一个工程。我的问题是这样的:

      1.根据.cmd文件,这个工程的.data,.text等段都是放在L2 SRAM里面的,那么既然只有一个.out,而多个core都会去同时访问它的话,那么是否会产生冲突等问题?

      2.现在只有一个.out,一个.cmd,那么8个core需要执行的.text等段应该是相同的吧?也就是它们的可执行代码是相同的?但是如果8个core分别要执行不同的代码,该怎么办?我看了工程源文件它的大题框架是这样的:

       selfId = CSL_chipReadReg (CSL_CHIP_DNUM);//每个core读取自己的id号

       if (selfId == 0)

      {

      core 0需要执行的代码;

           }

     

     else
     if(1<=selfId<=6){

    core 1~6需要执行的代码;

       }

     else

  {  

  core 7需要执行的代码;

      }

   但想不明白的就是core 0~core 7都load的是同一个.out,那么它们的可执行字段以及程序都应该是相同的啊?用if语句它们执行的程序又不一样,这该怎么解释。还是我哪里理解错了?

   3.在源文件中,当编译后会生成一个.map文件,如果在源文件中的某个函数之前添加static字样,在.map文件中就不能看到该函数;如果去掉static重新编译,在.map里就能看到,这又是为什么?

    希望各位能够指点迷津。

    谢谢!

                                                                                                        

Adam Yao94020:

1. L2RAM时每个核的私有RAM,你的data和txt段都定义在L2RAM中,下载之后就相当于每个核的私有RAM中都有一份,不会发生冲突。

2. CSL_chipReadReg (CSL_CHIP_DNUM)函数读取到的是寄存器中的核号(0-7),根据核号选择下面不同的执行分支

3. static相当于把这个函数变成内联函数,所以编译以后就看不到这个函数的地址了

studying:

回复 Adam Yao94020:

Adam,

     非常感谢您的回答,如果在.cmd中将data,txt等段放在DDR中也可以吧?L2 SRAM可以理解了,毕竟core 0(0x10800000)至core 7(0x17800000)都留有私有的RAM,如果放在DDR中那么下载之后如何让每个核都能私有一份?

studying:

回复 Adam Yao94020:

Adam,

谢谢您的回答。

user4523903:

回复 Adam Yao94020:

请问,这个虚地址的对应是如何完成的?

Andy Yin1:

回复 user4523903:

虚实地址映射是配置XMC MPAX寄存器,参考multicore program guide 及MSMC user guide。

http://www.ti.com/lit/an/sprab27b/sprab27b.pdf

http://www.ti.com/lit/ug/spruhj6/spruhj6.pdf

赞(0)
未经允许不得转载:TI中文支持网 » 关于C6678多核使用同一个.out的问题请教
分享到: 更多 (0)