当程序进入 静态 void Interrupt_illegalOperationHandler (void)时。
是否有方法可以检查原因源?
静态空 Interrupt_illegalOperationHandler (void)
{
//
//出现问题。 CPU 已尝试执行非法的
//指令,生成非法指令陷阱(ITRAP)。
//
ESTOP0;
for (;;)
{
;
}
}
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.
当程序进入 静态 void Interrupt_illegalOperationHandler (void)时。
是否有方法可以检查原因源?
静态空 Interrupt_illegalOperationHandler (void)
{
//
//出现问题。 CPU 已尝试执行非法的
//指令,生成非法指令陷阱(ITRAP)。
//
ESTOP0;
for (;;)
{
;
}
}
您好!
请查看以下文档第3.6节"非法指令陷阱"部分。 这其中包含有关如何通过查看压入栈的内容来获取违规地址的信息。
https://www.ti.com/lit/ug/spru430f/spru430f.pdf
非法指令陷阱将返回地址保存在堆栈上。 因此、您可以通过检查这个保存的值来检测违规地址。
以下帖子将帮助您了解详细信息。
谢谢
Aswin
您可以帮助使用示例 erad_ex3_stack_overflow_detect 吗
(像//ERAD_enableInterruptOnAddressHit (addr_params、ERAD_HWBP1_base)这样注释行;)
它将进入 ITRAP (static void Interrupt_illegalOperationHandler (void))
如上所述"非法指令陷阱将返回地址保存在堆栈上。 因此,你可以通过检查这个保存的值来检测冒犯的地址。"
您告诉我在哪里可以查看堆栈上的收货地址? (也许可以使用 CCS 调试快照来显示)
如何 通过检查这个保存的值来检测冒犯地址?
您好、W Z:
感谢您提出后续问题。
要确定保存的值、请从链接中获取以下图像: https://software-dl.ti.com/C2000/docs/c28x_interrupt_faq/html/index.html

特别适合您:以下是有关如何读取 RPC (主要是返回地址)的链接 : https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/693819
因此、您必须编写一个简短的汇编存根、然后可以在查看器中将 RPC 值弹出到变量中。
此致、
Vince