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.

Program can not be restarted in CCS, when using GPIO interrupt

I developed my own C6748 board and it runs all the programs well.

But I find that, only in such a situation, the program cannot be restarted in CCS:

When the program in the red block is runned, then, when I press the restart button, the program is not restarted.

If the program in the red block is not runned, the program can be restarted when I press the button.

But, I tried another C6748 development board which is bought from third party, the program can be restarted even when the program in the block is runned.

I use GP1[1] as the interrupt PIN.

So, I think maybe there is something wrong with connection of the GP1[1] and the INT of the peripherial chip.

But the program runs ok, it is just can not be restarted!

And the connetion is just directedly connected, just like the development board.

What is the possible reason for this?

I cannot monioter the INT signal because the wire is connected directly and both the chips are BGA.

The INT signal interrupt the DSP to get data from the peripherial. 
Since the data got is allright, I think the INT signal works well.

  • Frank,

    The restart button only sends the PC back to c_int00 which resembles a software reset. This is not the same as a full reset which requires a re-initialization and reload of memory.

    There are many directions you can take this to do your debugging:

    1. Compare all the differences between a full reset and a restart, from the GEL commands to the hardware resets that occur within the device.

    2. Start commenting out parts of your code until you find more accurately what is causing the problem. For example, start with the IntEnable() call in your function that is outlined in red. Since you are enabling an interrupt, there are now the possibility of interrupts occurring which could also be affecting the operation and result of the restart.

    3. Add initialization code to your main() function that can replace the missing effects needed for a restart to look more like a reset. These will likely be code operations that are included in your GEL script.

    One important point that you are showing to other readers is the important of providing visibility to signals coming to the DSP. Buried signals with no test points provided can make debug difficult.

    Regards,
    RandyP
  • Hi RandyP,

    2. If the interrupinit() is not runned, the program can be restarted.
    I still didn't find the cause of the problem.
    Do you think this is a hardware design error which cause the problem?
    Thank you.
    Frank
  • Frank,

    My post above was for debug guidance and not answers to the problem, but I am glad if it led you to an answer. But I am not sure that is the case here. You would need to follow my suggestions in #2 to find the cause of the problem, and extend the commenting to other parts of the whole program such as the ISR, but those are only suggestions.

    If you decide to explore this further by trying all of the steps and debugging deeper, you may discover the source of your problem.

    In general, if a problem appears on one hardware platform and not on another, but running the exact same program code, we would conclude there is a good chance that it is a hardware design error. But that is not proof and that does not determine what the cause is.

    If you can identify any board differences and change those on your board to get it working better, then you may find a solution. But the software debug steps are easier to do in most cases.

    It is up to you how far you want to take this.

    Regards,
    RandyP