Part Number: SW-EK-TM4C1294XL
Tool/software: Code Composer Studio
Hello,
i am trying to print out information via uart when an error/exception occurs. My TI-RTOS cfg File looks like this:
m3Hwi.enableException = true;
m3Hwi.excHookFunc = "&exceptionHook";
Error.policy = Error.TERMINATE;
Error.policyFxn = Error.policyDefault;
Error.raiseHook = "&errorHook";
Error.maxDepth = 1;
My code looks like this:
void exceptionHook(Hwi_ExcContext *ex)
{
int i;
char buffer[256] = "Expetion occured!\n\r";
reInitUart();
for (i = 0; i < strlen(buffer); i++)
UARTCharPut(DEBUGUART, buffer[i]);
int length = snprintf(buffer, sizeof(buffer), "ThreadType=%s ThreadHandle=%#x threadStack=%#x stackSize=%d\n\r",
threadTypeToString(ex->threadType), ex->threadHandle, ex->threadStack, ex->threadStackSize);
for (i = 0; i < length; i++)
UARTCharPut(DEBUGUART, buffer[i]);
length = snprintf(buffer, sizeof(buffer), "r0=%#x r1=%#x r2=%#x r3=%#x r4=%#x r5=%#x r6=%#x r7=%#x r8=%#x r9=%#x r10=%#x r11=%#x r12=%#x\n\r",
ex->r0, ex->r1, ex->r2, ex->r3, ex->r4, ex->r5, ex->r6, ex->r7, ex->r8, ex->r9, ex->r10, ex->r11, ex->r12);
for (i = 0; i < length; i++)
UARTCharPut(DEBUGUART, buffer[i]);
length = snprintf(buffer, sizeof(buffer), "sp=%#x lr=%#x pc=%#x psr=%#x ICSR=%#x MMFSR=%#x BFSR=%#x UFSR=%#x HFSR=%#x DFSR=%#x MMAR=%#x BFAR=%#x AFSR=%#x\n\r",
ex->sp, ex->lr, ex->pc, ex->psr, ex->ICSR, ex->MMFSR, ex->BFSR, ex->UFSR, ex->HFSR, ex->DFSR, ex->MMAR, ex->BFAR, ex->AFSR);
for (i = 0; i < length; i++)
UARTCharPut(DEBUGUART, buffer[i]);
}
void errorHook(Error_Block *eb)
{
int i;
char buffer[256];
reInitUart();
const int length = snprintf(buffer, sizeof(buffer), Error_getMsg(eb), Error_getCode(eb));
UARTCharPut(DEBUGUART, '\n');
UARTCharPut(DEBUGUART, '\r');
for (i = 0; i < length; i++)
{
UARTCharPut(DEBUGUART, buffer[i]);
}
}
When an exception occurs "excetionHook" is not called but when i overwrite the exceptionHandler it it called. Sadly the parameter "Hwi_ExcContext *ex" ex is invalid.
Why is the parameter of "void exceptionHook(Hwi_ExcContext *ex)" invalid? What am i doing wrong?
Thanks in advance!
Best Regards,


