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.

F28335 ram中调试程序遇到的怪现象



淘宝买的 mini28335开发板和仿真器,用CCS4.2下载例程中的led.out到开发板,在ram中运行,如下图,
点击暂停后如下图 ,蓝色部分和视频教程中不一样,
而且 程序好像没有正确运行,LED灯应该是闪烁的,运行的时候灯一直亮。
是设置有问题么?有前辈遇到过么?
  • 你在程序中设置断点或者单步,看是否会出现这种现象。如果出现这种现象其对于的C代码是什么。

  • 你没有导入项目文件,只下载了编译好的.out,就会出现这种情况。因为CCS不知道程序源码在哪里,但是二进制文件下载的是对的

  • 单步调试没有问题,主程序代码如下:

     #include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File
    #include "DSP2833x_Examples.h"   // DSP2833x Examples Include File

    #define   LED1 GpioDataRegs.GPBDAT.bit.GPIO60
    #define   LED2 GpioDataRegs.GPBDAT.bit.GPIO61

    void configtestled(void);

    void main(void)
    {
        InitSysCtrl();
        configtestled();
    LED1=1;
    LED2=0;
        for(;;)
        { 
        DELAY_US(100);
         LED1=~LED1;
         DELAY_US(100);
         LED2=~LED2;
        }

    }
    void configtestled(void)
    {
       EALLOW;
       GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 0; // GPIO60 = GPIO60
       GpioCtrlRegs.GPBDIR.bit.GPIO60 = 1; 
       GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 0; // GPIO61 = GPIO61
       GpioCtrlRegs.GPBDIR.bit.GPIO61 = 1;
       EDIS;
    }


  • 是导入工程后从target里面选debug active project的

    主程序代码如下:

     #include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File
    #include "DSP2833x_Examples.h"   // DSP2833x Examples Include File

    #define   LED1 GpioDataRegs.GPBDAT.bit.GPIO60
    #define   LED2 GpioDataRegs.GPBDAT.bit.GPIO61

    void configtestled(void);

    void main(void)
    {
        InitSysCtrl();
        configtestled();
    LED1=1;
    LED2=0;
        for(;;)
        { 
        DELAY_US(100);
         LED1=~LED1;
         DELAY_US(100);
         LED2=~LED2;
        }

    }
    void configtestled(void)
    {
       EALLOW;
       GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 0; // GPIO60 = GPIO60
       GpioCtrlRegs.GPBDIR.bit.GPIO60 = 1; 
       GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 0; // GPIO61 = GPIO61
       GpioCtrlRegs.GPBDIR.bit.GPIO61 = 1;
       EDIS;
    }
  • LED一直亮是因为DELAY_US(100);时间太短了,眼睛看起来就是一直亮。把它改成DELAY_US(100000);。暂停时对应的C代码停在哪里? LED1=~LED1;GPIO翻转建议使用GPIO SET和GPIO CLEAR寄存器。

  • 改成DELAY_US(100000),还是跟 原来一样,暂停时 C代码里面 看不到 停在那里了,那个箭头消失了。汇编里面可以看到,我试了几次 大概就停在 0x330A64 到 0x330A67这几个地方。
  • 把Flash擦除一遍,然后再重新导入工程编译一下再调试看看。你的程序是在RAM中运行的,但现在跳到Flash中的一个死循环中了,而且并不是你程序中的那个死循环。

  • 我从工具里选 on chip flash 然后直接单击erase(不知道 是不是要先单击 unlock),然后CCS 运行了一会 ,报错了,

    关掉CCS,再重新启动,连接开发板,显示如图 的错误。

    这样芯片是不是已经损坏了?我试了别的板子,可以连上。

  • 拔下仿真器,给板子断电,然后再重新连接看看,不需要unlock,这应该是硬件连接的问题。

  • 断电,插拔,试了几次,还是一样的错误-------------------- 

  • 按以下文档中的说明检查一下芯片的供电电源和时钟信号是否正常:http://processors.wiki.ti.com/index.php/Emulation_FAQ 

  • 谢谢您耐心回复,您发的链接打开以后,我找了很久 ,不知道那一项是你说的关于电源和时钟的?

  • 抱歉,链接发错了,是这个链接:http://processors.wiki.ti.com/index.php/Debugging_JTAG_Connectivity_Problems#Check_your_hardware_JTAG_connection ,“Check your hardware JTAG connection”部分,主要是检查一下电源电压是否正常,电源和时钟芯片是否稳定。