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