Other Parts Discussed in Thread: SYSBIOS
Hi,
I’m trying to understand how Exceptions and Errors are handled by SYSBIOS.
We are using 6678 on the custom HW (CCSv5.3 and DSPBIOS 6.34.2.18)
The code I’m working with has the following in the .cfg file.
Exception.returnHook = "&ExceptionEvent";
Error.raiseHook = "&ErrorEvent";
Error.policy = Error.UNWIND;
Error.maxDepth = 1;
Exception.enablePrint = true;
And the code is as follows:
void ExceptionEvent(void)
{
ErrorEvent(NULL);
}
void ErrorEvent(Error_Block *eb)
{
// Print Debug Data
}
Basically the same code is executed when either an exception or error is raised.
Here is what I have noticed:
- When error is raised, “DEBUG_ErrorRaiseEvent()” is called once and SYSBIOS is stopped.
- When exception is raised, “ExceptionEvent()” is called continuously and only hard reset stops it.
- I noticed that both Exception and Error are sometimes raised at the same time.
My questions:
- Is above behavior expected?
- Where can find some documentation explaining the difference between Errors and Exceptions?
- I got E_spOutOfBounds error that was raised by Task_checkStacks() in Task.c but it is hard to track which task caused the problem . None of the stacks were blown according to ROV (not even close). Also this error does not always happen (maybe 1 in 5 resets). It does not happen in the same task either. Any suggestions how to find the problem area? I tried following the steps defined here:
http://processors.wiki.ti.com/index.php/SYS/BIOS_FAQs#4_Exception_Dump_Decoding_Using_the_CCS_Register_View
Following directions above “ti_sysbios_family_c64p_Hwi_dispatchC__I” was on the top of the stack.
- As for exceptions, what causes it? What are the examples? Is there a list? Can we disable/enable certain exceptions and not others?
Thanks