各位TI的工程师,本人在调试c6455 dsp的client工程从flash加载启动的时候,在0xb0000000地址是二次bootload代码,系统上电后可以正常从此处开始执行,bootload搬移代码也正常,但是系统跑起来后发现很慢,导致tcp/ip不通。但是在CCS中点击connect连接c6455DSK开发板,再断开连接(没有通过ccs load目标文件进去),系统就正常跑起来了。系统在CCS下调试发现也能正常跳转到_c_Int00处, 请问下这是什么原因?
zi lu:
回复 noaming:
在CCS下调试是没有问题的。我测试了一下,把gel文件中的OnTargetConnect函数中的init_PLL语句去掉后,再通过CCS的connect连接,再disconnect,程序就不能正常运行。恢复这条语句后,这样操作,程序是可以正常运行起来的。但是我把init_PLL作为函数拷贝到工程中,在main函数中调用,编译成hex再烧写进flash进行自启动,就没有效果。init_PLL函数中是不是有些什么特殊操作只能在gel文件中连接开发板的时候进行?
autstyh autstyh:
回复 zi lu:
我也是这样的问题。。哎
zi lu:
回复 autstyh autstyh:
问题已经解决了。是init_PLL函数的问题。对PLLCTL寄存器操作的时候要先对4,5,7保留位进行清零,才能写寄存器。c6455datasheet也有说明。但是既然是保留位,一般都是不使用的,还有这种要求。。。
autstyh autstyh:
回复 zi lu:
请问你是采用什么方式生成COPYTABLE的,我的一直自举失败,能不能参考下你的bootload.asm,和makefile.cmd??谢谢
zi lu:
回复 autstyh autstyh:
这两个文件我也都是网上找的,bootload不用修改,make.cmd需要根据目标程序大小修改使用flash的大小。如果目标程序大于cmd文件中定义的flash长度,就无法生成boottable,可以打开.map文件看看有没有生成成功