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.

[参考译文] TMS570LS0714:如何处理数据中止/自定义数据中止...

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1038330/tms570ls0714-how-to-handle-data-abort-custom-data-abort

器件型号:TMS570LS0714

我从中生成了异常中断,似乎尝试通过 memmapped 直接地址访问它,这是一个未使用/未初始化的闪存,用于读取。 忽略这一特定原因,如何正确处理中止的数据?

因此、如果没有 RAM 错误和闪存错误、所提供的_dabort 将跳转至 custom_abort、而定制_abort 被 TI 保留为空白、我必须实现。  

默认情况下为空。  我不知道该怎么做,如果我可以从这恢复/返回到可用的系统。  因此、在我的特定测试用例中 、它返回到导致中止的相同指令中、并再次尝试、从而停留在无限循环中。 例如:

从而导致数据中止。  

一般而言、我不知道我是否应该在这里有一些适当的处理程序。

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

    您好!

    如果处理程序不知道数据中止的根本原因、则无法执行任何操作。  

    添加一个 while (1)循环和断点将提醒您 中止问题、然后 您需要检查 CP15寄存器和 MCU 通用寄存器以确定哪条指令生成中止。

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

    [引用 userid="45190" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1038330/tms570ls0714-how-to-handle-data-abort-custom-data-abort/3840630 #3840630">如果处理程序不知道数据中止的根本原因,则无法执行任何操作。  [/报价]

    理解、在这种情况下、尝试从无效地址读取。

    [引用 userid="45190" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1038330/tms570ls0714-how-to-handle-data-abort-custom-data-abort/3840630 #3840630"]确定哪条指令会生成中止。

    我知道这里是什么,我在上面展示了,但是 C 是 ASM 等效于从无效内存中尝试加载寄存器。  

    我想我的主要问题是、我能也应该从这种情况中恢复正常吗? 因为自定义中止处理程序对整个系统来说似乎不是致命的。 如果在这种情况下、我有一个单独的线程在这里执行一些非法操作、那么看起来软件系统的其余部分仍然运行正常、并且不受影响。

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

    如果您知道哪条指令导致数据中止、则可以跳转到自定义中止 ISR 中的下一条指令。 但问题没有得到解决。 最好先找出根本原因。