Hi,
I am seeing one problem in my application.
I have two tasks, P1 and P2, P1 is having high priority that P2. P2 is triggered by Semaphore and P1 is triggered by Mailbox. Semaphore and Mail box both are posted in EDMA ISR. (Actually there are many tasks, only mentioned 2 of then which are creating problem for simplicity).
The issue is, i am seeing that Mail box is getting posted and it is reaching the max number of messages and Mail box full error is coming for the next msg post after reaching max msgs.
I could see from the Dump that:
1. P2 is executing
2. EDMA Interrupt occured
3. Mail box for P1 is posted
4. No switch happen to P1
5. Another EDMA interrupt came
6. Mail box for P1 is posted but no switch happned.
This is happening untill the Max msg is reached. The current running task is P2. In the IRP (stored for each interrup), i could see that this address is some Stack Address. So it is executing the Stack of P2 (this is not supposed to happen). So some where in P2, PC got corrupted.
My question is
1. Even though the PC got corrupted while exectuing the P2, soon after getting interrupt and mail box is posted for P1, it should switch to that task (P1) and execute it as P1 is higher priority that P2. But this is not happening, So i assume that the Task Context also might got corrupted which is stored in SystemStack (if i am correct).
Is this possibility is there or not?
2. Is there any way to interpret the Stack Content for task switch info. Where this information will be available? is it in SystemStack only, if so how it stores the TaskSwitch info in it.
3. Any way to Decode the stack contents and understand it, to know where exactly the present execution?
Thanks & Regards
Praveen Aruru