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.

Is it possible for CCS 6.1.2 to switch the debug context to a blocked TI-RTOS task?

Was using 6.1.2.00014 under Linux to debug a TI-RTOS program for a MSP432 in which the user task blocks.

When Suspend the running program to investigate, the call stack in the Debug window shows the TI-RTOS Idle task. To investigate why the user task has blocked need to investigate the call stack of the user task.

Found that under RTOS Object View (ROV) -> Task -> CallStacks could view the call stack of the blocked user task, and see that the task is blocked in a call to SemaphoreP_pend as shown in the following screen shot:

Ideally I would like to cause the CCS debugger to switch the stack back trace (debug context) from the currently running Idle task to the blocked user task to investigate. However, I can't find any way of doing that in the CCS GUI. E.g. while the ROV CallStacks view shows the source file and line numbers in the call stack right clicking on lines in the call stack there is no context option to browse to the source location (like which can be done from the hardware trace analyzer viewer).

I attempted to enable Run -> Advanced -> Enable OS Debugging but got the error "CORTEX_M4_0: Can't initialize TLD Device Driver: Linux debug support is not available on this ARM target (subfamily = 14)".

Is there an option in the CCS debugger to switch to the context of a blocked TI-RTOS task, or if not could the debugger be enhanced to add such an option?

[In other debuggers for embedded multi-task operations systems, e.g. CrossWind for VxWorks, the debugger is aware of the running tasks and can switch the debugger context to different tasks]

  • Chester Gillon said:
    Ideally I would like to cause the CCS debugger to switch the stack back trace (debug context) from the currently running Idle task to the blocked user task to investigate.

    One work-around is to take the PC and SP (FP) values from the top of the user task CallStacks ROV View and to manually past the values into the Core Registers in the Registers view. This causes the call stack displayed in the Debug view to change from the Idle task to the blocked user task. The Debug view can then be used to navigate the user task call stack, and view the state of variables in memory or on the stack.

    The limitations of this work-around are:

    1) Have to remember to manually restore the current PC and SP before resuming the program.

    2) Can't find a way to view the other Core Registers, other than the PC and SP, in the context of the blocked user task. TI-RTOS must save Core Registers on a task context switch, but can't find a way to view the task context in the CCS debugger (attempted to look at all the ROV views).