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.

C6726dsp:程序在线仿真能够正常执行,烧写到flash中后不断电,再次载入程序,也能正常执行;但是重新上电以后就不正常工作

这个问题我也查了相关资料,但是网上的都是复制粘贴,也没有个准信儿。。。所以来这个论坛求救。

我是在原来的系统上加了一个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和仿真器查找问题方向;

谢谢帮助我的人~

  • 没看明白你说的是boot有问题,还是说程序执行有问题。delay_1us有问题就看这个函数怎么实现的呗,它是用timer实现的,还是纯粹的nop延时实现的?跟踪进去看。

    jun qian2 说:
    问题2:在线调试的时候应该是ram中执行的吧?我这个情况会是因为没有加载到ram中吗?

    程序在哪运行是由你工程的cmd文件决定的。

    jun qian2 说:
    问题3:遇到这种问题,如何通过ccs和仿真器查找问题方向;

    不加gel文件,连接仿真器,找开对应的原始工程,load symbol,选择对应烧写在板子上的那个.out文件。这样就可以单步跟踪调试目标板上的程序了。

  • 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函数

  • 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函数