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

C6678多核触发问题求助

我在使用C6678进行多核触发的调试,但是始终仅有CORE0能够运行,其他CORE始终无法触发运行。

不知道在多核触发的编译、加载、运行方面还有什么特别要注意的。

我的代码已经简化成下面的样子:

Void main()
{
 uint32_t core = 1;

 if(DNUM == 0)
 {
  printf("in core %d is running\n",DNUM);

  DEVICE_REG32_W(KICK0, 0x83e70b13);
  DEVICE_REG32_W(KICK1, 0x95a4f1e0);

  printf("in core %d _c_int00:%p BOOT_MAGIC_ADDR(core):%p…..\n",core,&_c_int00, BOOT_MAGIC_ADDR(core));
  DEVICE_REG32_W(BOOT_MAGIC_ADDR(1), (uint32_t)&_c_int00);

  DEVICE_REG32_W(IPCGR(1), 1);

     while(DEVICE_REG32_R(BOOT_MAGIC_ADDR(1)) != 1)
  {
   ;
  }
  printf("triger Core %d complete\n",1);
 }
 else if(DNUM == 1)
 {
  printf("in core %d is running\n",DNUM);
  DEVICE_REG32_W(MAGIC_ADDR, 1);
 }
}

CFG文件的配置:代码段放置于MSMCSRAM,其余段放置于L2SRAM。

运行时现象是:

[TMS320C66x_0] in core 0 is running
[TMS320C66x_0] in core 1 _c_int00:c20e540 BOOT_MAGIC_ADDR(core):1187fffc…..

由于CORE1没有触发运行,始终在下面循环校验。    

while(DEVICE_REG32_R(BOOT_MAGIC_ADDR(1)) != 1)
  {
   ;
  }

 

Jane Lu:

renoir shee ,

        您是用仿真器下载程序,2个核同时运行,还是用boot方式启动?  

      

renoir shee:

回复 Jane Lu:

运行时是由仿真器加载代码到Core0的。

现在发现一个现象,是不是Core1不能由仿真器connect?仅connectCore0的时候是可以触发Core1的,我把Core1中运行的代码改成了修改一个DDR的固定地址的值,例如*((volatile unsigned int *)(0xa6000000)) = 0x12345678;发现这个地址成功被修改了,是否证明了Core1已经被触发运行了呢?

赞(0)
未经允许不得转载:TI中文支持网 » C6678多核触发问题求助
分享到: 更多 (0)