这个问题我也查了相关资料,但是网上的都是复制粘贴,也没有个准信儿。。。所以来这个论坛求救。
我是在原来的系统上加了一个IIC器件,之前通信什么的都是正常的。
or(x=0;x<16;x++)
{
start();
sendnbyte(sbuf_1[x],10);//此发送能正确执行
stop();
yanshi();
if (x%2==0)
{
while (1)
{
start();
sendnbyte(&AddRead, 1); //此发送好像不能跳过
if(nackFlag == 0)
break;
}
Delay_1us(2000);
recnbyte(rbuf, 129);
stop();
decrypt_3des(rbuf,k);
for(y=0;y<128;y++) {receive[x/2][y]=rbuf[y+1];}
}
只要烧录程序后一断电,系统就无法工作,而且在这种情况下再次加载程序也是无法执行的,在停止的时候程序停在 delay_1us程序那边,网上也有说这个关于delay的问题,但是我的第一个sendnbyte(sbuf_1[x],10);能执行啊,里面也涉及到了delay;但是到了第二个就不行了,不知道怎么回事,求帮忙,谢谢
问题1:断电之后为什么不正常?
问题2:在线调试的时候应该是ram中执行的吧?我这个情况会是因为没有加载到ram中吗?
问题3:遇到这种问题,如何通过ccs和仿真器查找问题方向;
谢谢帮助我的人~
Tony Tang:
没看明白你说的是boot有问题,还是说程序执行有问题。delay_1us有问题就看这个函数怎么实现的呗,它是用timer实现的,还是纯粹的nop延时实现的?跟踪进去看。
jun qian2问题2:在线调试的时候应该是ram中执行的吧?我这个情况会是因为没有加载到ram中吗?
程序在哪运行是由你工程的cmd文件决定的。
jun qian2问题3:遇到这种问题,如何通过ccs和仿真器查找问题方向;
不加gel文件,连接仿真器,找开对应的原始工程,load symbol,选择对应烧写在板子上的那个.out文件。这样就可以单步跟踪调试目标板上的程序了。
user4980733:
回复 Tony Tang:
1、原来的程序没有问题,在main函数里加了一段调用iic的程序后,在线调试能够正常运行,但是一旦下载后断电,程序就无法执行。
2、延时程序是自编的:
voi dDelay_1us(unsigned int sec){ char i,k; for(k=0;k<sec;k++) { for(i=0;i<20;i++); }}
这个算是纯粹的nop吗?
3、为什么不加gel文件?当dsp中是原始工程文件out文件时候,在线调试新的out文件正常运行,下载后不断电重新load symbol也能正常运行 ,但是一旦断电后,就不行了,一直卡在自编delay函数
user4980733:
回复 Tony Tang:
1、原来的程序没有问题,在main函数里加了一段调用iic的程序后,在线调试能够正常运行,但是一旦下载后断电,程序就无法执行。
2、延时程序是自编的:
voi dDelay_1us(unsigned int sec){ char i,k; for(k=0;k<sec;k++) { for(i=0;i<20;i++); }}
这个算是纯粹的nop吗?
3、为什么不加gel文件?当dsp中是原始工程文件out文件时候,在线调试新的out文件正常运行,下载后不断电重新load symbol也能正常运行 ,但是一旦断电后,就不行了,一直卡在自编delay函数