最近看别人的程序遇到一个问题,希望高手能够给出宝贵建议。程序中的结构是这样:
void main(void)
{
InitSysCtrl();
memcpy( &RamfuncsRunStart,
&RamfuncsLoadStart,
&RamfuncsLoadEnd - &RamfuncsLoadStart);
InitFlash();
InitSpi();
。。。
}
程序编译没有问题,下载到flash后,点击仿真开始键后发现一直没有进入到主函数中,运行InitSysCtrl()没有问题,但是运行到memcpy这里,再点击下一步过后就会出现No source available for "0x3ff8cd" 。然后点击resume继续仿真,程序又从开始继续执行InitSysCtrl(),一直循环。将断点设置在InitFlash()这里一直没有停过。
开始怀疑是CMD文件配置有问题,主要关注了memcpy()这一点。但是也没有发现问题所在。CMD中配置如下:
ramfuncs : LOAD = FLASH_DCBA,
RUN = PRAML12,
LOAD_START(_RamfuncsLoadStart),
LOAD_END(_RamfuncsLoadEnd),
RUN_START(_RamfuncsRunStart),
PAGE = 0
后来又从BOOT ROM启动分析,电路板上GPIO34/GPIO37配置都为高,默认是从flash中启动的。initflash程序也配置在RAM中运行(#pragma CODE_SECTION(InitFlash, "ramfuncs"))。DSP2803x_CodeStartBranch.asm启动程序也是TI官方给的,初始关闭看门狗(WD_DISABLE .set 1)。都没有发现问题。
请各位大神指点一下。 |