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.

No source available for "0x33079e"



程序仿真,在DEBUG模式下,设置了几个断点,前几个能到,后几个就到不了,单步运行时候也是到某一条代码后,在点击单步运行后就变成RUN模式了,点停止后,报这样的提示:No source available for "0x33079e" ;这是怎么回事呢?

  • 这应该是正常的情况,程序运行有什么问题吗?

  • 用的那颗芯片?

  • 是这样的,有一段代码:

    void main(void)
    {
    // Step 1. Initialize System Control:
    // PLL, WatchDog, enable Peripheral Clocks
    // This example function is found in the DSP2833x_SysCtrl.c file.
    InitSysCtrl();

    // Step 2. Initalize GPIO:
    // This example function is found in the DSP2833x_Gpio.c file and
    // illustrates how to set the GPIO to it's default state.
    // InitGpio(); // Skipped for this example
    InitXintf16Gpio(); //zq

    // Step 3. Clear all interrupts and initialize PIE vector table:
    // Disable CPU interrupts
    DINT;

    // Initialize the PIE control registers to their default state.
    // The default state is all PIE interrupts disabled and flags
    // are cleared.
    // This function is found in the DSP2833x_PieCtrl.c file.
    InitPieCtrl();

    // Disable CPU interrupts and clear all CPU interrupt flags:
    IER = 0x0000;
    IFR = 0x0000;

    // Initialize the PIE vector table with pointers to the shell Interrupt
    // Service Routines (ISR).
    // This will populate the entire table, even if the interrupt
    // is not used in this example. This is useful for debug purposes.
    // The shell ISR routines are found in DSP2833x_DefaultIsr.c.
    // This function is found in DSP2833x_PieVect.c.
    InitPieVectTable();
    configtestled();

    // LED1=1;
    // DELAY_US(10);
    // LED2=1;
    // DELAY_US(10);
    LED1=0;
    DELAY_US(10);
    LED2=0;
    DELAY_US(10);
    LED3=0;
    DELAY_US(10);
    LED4=0;
    DELAY_US(10);
    LED5=0;
    DELAY_US(10);

    while(1){
    LED1=~LED1;//---------------------------------------------------设置断点1
    DELAY_US(100000);
    LED2=~LED2;
    DELAY_US(100000);
    LED3=~LED3;
    DELAY_US(100000);
    LED4=~LED4;
    DELAY_US(100000);
    LED5=~LED5;//--------------------------------------------设置断点2
    DELAY_US(100000);
    }

    }

    如上代码里设置了两个断点,仿真时,程序可以跑到断点1,但不能到断点2,且只能到断点1一次,后来用单步运行,发现到了断点1后再点击单步运行程序就变成全速运行了,这个时候把断点1去掉后在重新设置相同地方,程序在全部跑起来后也不能停在断点1了,但是我把while循环里的DELAY_US(100000)语句全屏蔽掉后就可以正常运行了,断点1和断点2都可以正常停止了;这是怎么回事呢?

  • 用的是28335;

  • 这可能是你CCS软件的问题,CCS什么版本的

  • 同样的代码放到另一块不同功能的电路板上去跑就是正常的,可以任意设置断点了;

  • 这说明还是软件在使用中的问题,可以检查一下板子之间设置的异同,

    或者可以降低仿真时TCLK的频率等方法来调节一下

  • 我重新设置了下InitPll(DSP28_PLLCR,DSP28_DIVSEL);这个函数,由之前的150M变成90M就可以正常仿真了,这是为什么呢?

  • 板子上芯片的主频运行的多少Mhz,有没有超频使用?

  • 应该还是链接不稳定的问题,可以尝试调低仿真器TCLK的频率