在多核中调试子函数:
float *pointer;
float Buff1[1024];
……….(其间没有对pointer做任何操作)
poiter = Buff1;
但是赋的值有问题!看了反汇编代码,发现只是将高位传递过去了,Buff1的正确地址应该是0x838c08,但是传递过去的值只是0x8300000,请问这是什么原因??这是在一个多核程序中的子函数。
谢谢回答~~
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hi Hobo,
我试了一下,确实有您说的这个问题。 其原因有可能是STEP2()函数放置在共享memory上,当某个核设置了软件断点后,相应的memory内容变成了SWBP。 CCS只在第一个设置该断点的核保留了原始指令的信息,可以保证其运行正确,而后续的核由于读到的是SWBP指令,所以结果不正确。
我用下面的方法暂时可以规避这个问题:
方法1:
1 DSP复位上电,CCS启动debug
2 同时选中所有核,点击右键,选择'group cores",将其组合成一个group
3 选中group,load *.out文件
4 选中group, 然后在step2函数上设置断点,这个步骤会同时设置8个核的断点
4 (重要)再重新load *.out文件, 这个时候断点对应的指令就正确了。
方法2 (用硬件断点)
1 选中某个核,在需要设置断点的地方,点击右键,选择“breakpoint (ccs)-> hardware breakpoint”
2 如果要设置多个核,就重复多次
Jane