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

有关双核加载的问题???

大家好 参照网上的例程 实现了双核加载

 

CMD文件中把核0、核1的程序入口地址设定为:

核0的程序入口地址是0x10800200

核1的程序入口地址是0x11800200

 

对于核0的程序 有不理解的地方 还请指教!!!

核1的程序入口地址在CMD中已经设为0x11800200

但核0的程序中 给核1的Magic地址赋值0x11000000 也就是核1的程序入口地址是0x11000000 为啥要这样???

 

核0程序如下:

void MulticoreBoot()

{

    int *pBootMagicAddCore0;

    int *IpcGr0;

    int i;

 

     pBootMagicAddCore0 = (int*)0x108FFFFC;//核0的Magic地址

     (*pBootMagicAddCore0)+= 0x10000000;    //给核0的Magic地址赋值0x10000000

     for(i = 1;i < CORE_NUM_6657; i++) 

     {

         *(pBootMagicAddCore0+ (0x01000000*i)/4 ) = (*pBootMagicAddCore0) + 0x01000000 * i;

          //给核1的Magic地址0x118FFFFC赋值0x11000000 为啥要这样??? 对双核加载有没有影响

     }

 

      //核0给核1产生IPC中断

      IpcGr0  = (int*)0x02620240;

      for(i = 1;i < CORE_NUM_6657;i++)

      {

         *(IpcGr0+i) = (*(IpcGr0+i)) | 0x00000011;

      }

}

 

在别的资料看到:

“当ROM Boot loader 写完Boot Magic 地址之后,core0 作为主核会发起一个IPC 中断给其他核用于唤醒处于IDLE 状态的从核,并同时将各核各自的Boot Magic 地址写入 0x1x8ffffc。从核会读取该Boot Magic 地址,并从该地址处执行程序。”

 

按照上面的意思 好像和我给的核0程序有冲突???

Thomas Yang1:

那在你的核1的CMD文件中  0x11000000 是什么区域呢? 你的CORE1 的 cinit00这些段的空间地址在哪里?

skysteed:

回复 Thomas Yang1:

在6657中 0x11000000的区域是保留的
_c_int00的地址是0x11800200 这个是核1的
我还试了 把给0x118fffc赋值0x11000000的这一句屏蔽掉
核1是加载不起来的
这句还必须有
???

赞(0)
未经允许不得转载:TI中文支持网 » 有关双核加载的问题???
分享到: 更多 (0)