This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/TM4C1294NCPDT:覆盖 TI-RTOS 异常处理程序

Guru**** 2616675 points

Other Parts Discussed in Thread: TM4C1294NCPDT, SYSBIOS

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/781772/rtos-tm4c1294ncpdt-ti-rtos-exception-handler-override

器件型号:TM4C1294NCPDT
Thread 中讨论的其他器件: SYSBIOS

工具/软件:TI-RTOS

您好!

我在 TM4C1294NCPDT 上运行 TI-RTOS。 我正在尝试覆盖/挂钩异常处理程序、以便通过 UART 打印 stacktrace/error 消息。

我的 cfg 文件如下所示:

var m3Hwi = xdc.useModule('ti.sysbios.family.arm.m3.Hwi');

m3Hwi.enableException = true;
m3Hwi.nvicCCR.DIV_0_TRP = 1;
m3Hwi.nvicCCR.UNALIGN_TRP = 0;
m3Hwi.resetVectorAddress = 0x4000;
m3Hwi.exeHookFunc ="食物条";
m3Hwi.exHandlerFunc ="&myExceptionHandler";

我的异常处理程序如下所示:

void myExceptionHandler (Hwi_ExcelContext *激发内容)

   GPIO_WRITE (Output1、GPIO_CFG_OUT_HIGH);
   UARTCharPut (UART0_BASE、"x");

我正在生成堆异常。

void 心跳 Fxn (void)

   while (1)
   {
       Task_sleep (1000);
       GPIO_toggle (output2);
       Memory_alloc (NULL、2048、0、NULL);
   }

控制台向我显示以下内容:

TI.SYSBIOS.堆.HeapMem:第361行:内存不足:handle=0x2003b2cc、size=2072
xdc.runtime.Error.raise:终止执行

我将在 exit.c void abort (void)中结束。

问题是 myExceptionHandler 或 foobar 从未调用。 我还尝试了 myExceptionHandler、它根本没有参数或无效、但没有调用任何参数。

我出了什么问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Clark、

    内存不足是一个"错误"而不是"例外"。 由于您为 Error_Block 传入 NULL、程序将终止、而不是 Memory_alloc。 如果传入已初始化的 Error_Block 或 Error_Ignore、则如果提供已初始化的 Error_Block、则 API 将返回设置为 Error_Block 字段的值。 返回(您未测试)也将为 NULL。 (事后看来、我们很遗憾在出现错误时程序终止、并且您有一个 NULL Error_Block。)

    您可以插入本例中调用的错误挂钩函数。 您可以在.cfg 中设置 Error.raiseHook 函数。

    为了测试异常、我想在代码中的某个位置输入类似的内容。
    asm (".word 0x4567f123 ");//一些未定义的指令

    如果要测试处理程序、这通常会导致异常。

    Todd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Todd、

    非常感谢。 我认为房间是一个例外。

    执行 asm 指令时、会按预期调用 myExceptionHandler。