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

DSP6638 boot重复启动

请高手指导:

      因为我们的代码要在DDR中运行,上电后,通过PCIe向6638的L2中写入了DDR3的初始化代码,成功后又向6638中写入正式运行的代码,之后将PC指针强制跳转到代码运行地址,代码没有运行起来。

 DDR3初始化代码中做了一个无线循环,下面是代码

  #define  MAGIC_ADDR        0x108ffffc

 void (*exit)();
   unsigned int i, entry_addr;

    *( volatile unsigned int* )(MAGIC_ADDR)=0x00;

  while(1)
    {

          entry_addr = *(unsigned int* )(MAGIC_ADDR);

           if (entry_addr != 0)
          {
               exit = (void (*)())entry_addr;
               (*exit)();
         }
            for (i=0; i < 100; i++)
            asm("nop");
    }

RC端代码:

PushData(core0_code,0,&boot_entry_addr0);//向6638中写入正式运行代码并提取首地址

 WDC_WriteAddr32(hDev,1,0xffffc,boot_entry_addr0);//将运行首地址写入BOOT MAGIC地址

用仿真器看以看到DDR初始化完成,正式运行的代码通过PCIE下载完成,MAGIC_ADDR地址也写入了强行跳转的正式运行地址,让PC指针强制跳转到代码运行地址,可是发现代码没有运行起来。不知道代码那里处理有问题,求帮助。

user5315971:

正式运行的代码没有起来,求高手指导下哪里处理的问题,为什么跳转不到正式运行的代码中。

Shine:

回复 user5315971:

请问用仿真器跟踪到PC指针的值是用户代码的入口程序地址了?

赞(0)
未经允许不得转载:TI中文支持网 » DSP6638 boot重复启动
分享到: 更多 (0)