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.

[参考译文] F29H85X-INT-EVM:SOM 类型中断触发异常。

Guru**** 2477065 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1460432/f29h85x-som-evm-int-type-interrupt-triggers-exception

器件型号:F29H85X-EVM SOM

工具与软件:

您好!

在执行代码期间、我需要修改堆栈指针(A15)以切换上下文。 INTSP 设置为2、当我切换堆栈指针时、它会使用 INT 中断进行响应。 该中断可以进入、但会立即发生异常、从而产生 NMI 中断。 当我在切换堆栈指针之前触发此 INT 中断时、它可以响应并正常执行。

TRM 说"如果 INT 矢量指向与不同堆栈(安全分配的堆栈)关联的错误链路、则会生成 NMI 故障。"

我认为目前的情况适合上述情况。

您能告诉 我、这个堆栈在 RAM 上吗? 范围设置在哪里?

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

    尊敬的 Zihao:

    要确定发生 NMI 的原因以及如何解决问题、最佳方法是执行以下调试步骤:

    1. 开发一个综合的 NMI 处理程序例程、该例程可以有效地对任何和所有类型的错误以及错误发生的位置进行 RCA 运算。 我们在 interrupt.c 中提供了此默认 NMI 处理程序例程、可用来确定错误。 在此 NMI 处理程序中、 有 gNmiStatus  具有来自错误聚合器和错误信令模块的上述信息(可添加到监视表达式)的结构。
    2. 一旦确定了错误类型和位置、我们就可以利用 TRM 进行相应的调试、例如 在 EA/ESM/PIPE章节中对错误的解释
    3. 或者、您可以利用 CCS 错误处理+中断脚本、这些脚本的功能与上述基本相同、但会输出终端。  

    我相信您看到的错误就是您已经确定的错误、但请仔细检查并按照上述步骤通知我。  

    [quote userid="631163" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1460432/f29h85x-som-evm-int-type-interrupt-triggers-exception 您能告诉 我这是 RAM 上的堆栈吗? 范围设置在哪里?

    A15寄存器可以访问 CPU 的完整32位地址范围(4GB)。 实际上、只有在满足以下条件时才会发生竖线中断。 执行此操作应能解决错误:

    此致、

    Aishwarya.

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

    Zihao,

    您是否能够解决此问题? 如果 没有 其他问题、我将继续并关闭该主题。

    此致、

    Aishwarya.

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

    Aishwarya,

    我已经解决了这个问题、没有其他问题了。感谢您的帮助。

    此致、

    Zihao