前不久,公司买了一套real6410的开发板,在调试过程中出现了一些问题,经过查找资料和实验,不断的排查,找了问题的所在。不过声明一下,我这里没有进行系统的测试,问题的真正原因有待深入排查,至少在我这里是解决了一些问题。
开发平台:Real6410
开发环境:RVDS2.2
工具:山寨版 JLINK V8
1. 在AXD中加载大目标文件进SDRAM调试的时候,出现提示通信字节超时的错误,具体是什么提示字符现在不记得了。加载小目标文件的时候,可以顺利载入SDRAM,且能单步调试。
后来,在一次插拔JLINK的时候,JLINK的绿灯不亮了,且PC提示“无法识别的USB设备”,我感觉有点像是JLINK的硬件坏了,因为坏的时候是再插上USB得一瞬间,我想可能是静电击穿了IC,后来找代理商售后,售后说是JLINK的固件坏了,要重新烧录JLINK的固件,我半信半疑的试一试,后来给我发了固件烧录的方法和目标文件。照着步骤,果然烧写进去,这下确定就是固件坏了。
JLINK修好后,再进行AXD加载时候,很奇怪的事情发生了,大小目标程序居然都可以顺利加载进SDRAM了,且能单步调试,想想,是否是因为JLINK的固件部分损坏导致的呢?希望有经验的前辈也可以分析一下哈。
2. 接着说,JLINK的加载问题解决了,但是在调试中会出现“Failed to single step.CPU did not halt on breakpoint”错误提示。在下列的情况中,会出现这个错误提示:
a. 遇到BEQ、BNE跳转指令的时候。其他的跳转指令还没有测试,这个2个测试过的。
b. 遇到浮点运算指令的时候。编译选项中的VFP的选项如果是“AUTO……”,就出现,默认值就是这个。当选择softvfp的时候,编译就不会出现浮点指令,运行就没有问题。
c. 在启动代码中调用__rt_entry()的时候
在调试的时候,发现了这样的一个现象:
在汇编中用BX、B、BL调用函数或者在C中调用函数的时候,点击单步进入按钮和单步运行完成按钮是一个效果,AXD进不了函数中去。直接一步就走完函数。除非在函数内部打断点。
接着找原因中……郁闷……!!!
今天问题终于有新的进展了,在网上查资料的时候,看见飞凌的6410也是出现这个现象,后来看讨论说是和PC机的CPU有关系。我想换个电脑试一试。找了个没有人用的电脑(是INTER平台的,据说AMD平台不行,具体是否是CPU的问题呢?看后面!),耐心的装了RVDS2.2和JLINK以及驱动。把开发板和JLINK搬过去,打开在原机中的那个代码工程,靠走到我测试的BEQ和BNE的时候,奇迹发生了,没有错误信息,并且走得很好!后来想是CPU的问题吧,赶紧将这个CPU换到原机上取,开机奇迹又发生了,又出现那个信息了,看来和CPU没有关系。本来想进一步证实的时候,下班的时间到了。没有办法,明天再弄吧。
这个问题纠结了我1个多星期了,终于在今天有了革命性的进展。今天晚上终于可以睡个好觉了。呵呵。。。不早了,休息去了,看明天的结果吧!祝我好运!!!!!!