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.

TCI6638K2K: SYSBIOS Task Backtrace

Part Number: TCI6638K2K
Other Parts Discussed in Thread: SYSBIOS,

Hi All,

Im using TCI6638K2K EVM with SYSBIOS. I created some Tasks&Hwis. When an exception occured, i can see call stacks from ROV(Real Time Object Viewer), but this way needs connection with Debugger. So, im searching a way to find caller list from stack inside code without debugger.

When i create a Sysbios Task, it returns a Task_handle pointer type of "struct ti_sysbios_knl_task_object". This structs contains information about that created task like context, stackHeap, steakSize etc. So, i know for each task's contexts, stackHeaps and other informations. After some stack exemination, i can find Caller list of each Tasks that way;

  • Current framePointer is (Context+0x158), Caller0 equals *(framePointer), nextFramePointer is *(framePointer-3).
  • Caller1 equals *(nextFramePointer-1), new nextFramePointer is *(nextFramePointer-3)
  • Caller2 equals *(nextFramePointer-1), new nextFramePointer is *(nextFramePointer-3)
  • and so on...

0x158 is my calculated offset value. I dont know what is that mean. I think there must be a struct to cast context to reach framePointers, but i coundnt find that struct.

My question is how can i exemine stack for each Tasks to find registers(PC, LR) and Caller List? How can ROV do this?

Thank you,

Best Regards,

Srt