|
Ticket Name: TDA2EXEVM: TDA2 DSP2 XDC ASSERT |
|
|
|
Query Text: |
|
Part Number: TDA2EXEVM Other Parts Discussed in Thread: SYSBIOS We run our algorithm on DSP2. Sometimes DSP2 will have XDC Assert message and then DSP2 will crash. How can we solve it? Log: [DSP2 ] 11173.232111 s: ### XDC ASSERT - ERROR CALLBACK START ### [DSP2 ] 11173.232141 s: [DSP2 ] 11173.232202 s: assertion failure: A_badContext: bad calling context. See GateMutex API doc for details. [DSP2 ] 11173.232233 s: [DSP2 ] 11173.232233 s: ### XDC ASSERT - ERROR CALLBACK END ### |
|
|
|
Responses: |
|
Have any update? |
|
|
|
Hi, Please refer to BIOS API doc for GateMutex. Or, you can find the source under ~/bios_6_46_06_00/packages/ti/sysbios/gates/GateMutex.c. You are hitting the below error where GateMutex_enter() is called in HWI or SWI context. /*
|
|
* ======== GateMutex_enter ========
|
|
* Returns FIRST_ENTER when it gets the gate, returns NESTED_ENTER
|
|
* on nested calls.
|
|
*
|
|
* During startup, Task_self returns NULL. So all calls to the
|
|
* GateMutex_enter look like it is a nested call, so nothing done.
|
|
* Then the leave's will do nothing either.
|
|
*/
|
|
IArg GateMutex_enter(GateMutex_Object *obj)
|
|
{
|
|
Semaphore_Handle sem;
|
|
|
|
/* make sure we're not calling from Hwi or Swi context */
|
|
Assert_isTrue(((BIOS_getThreadType() == BIOS_ThreadType_Task) ||
|
|
(BIOS_getThreadType() == BIOS_ThreadType_Main)),
|
|
GateMutex_A_badContext);
|
|
|
|
if (obj->owner != Task_self()) {
|
|
sem = GateMutex_Instance_State_sem(obj);
|
|
Semaphore_pend(sem, BIOS_WAIT_FOREVER);
|
|
|
|
obj->owner = Task_self();
|
|
|
|
return (FIRST_ENTER);
|
|
}
|
|
|
|
return (NESTED_ENTER);
|
|
} Regards, Stanley |
|
|
|
|