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.

[参考译文] TMS320F28374S:ISR 在 EMIF 读取/写入期间发生

Guru**** 2540600 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/858227/tms320f28374s-isr-happens-during-emif-reading-writing

器件型号:TMS320F28374S

您好!

对于 EMIF 读取和写入外部 SRAM 存在疑问。

如果在 EMIF 读取或写入期间发生中断、会发生什么情况?

客户遇到一个问题、有时程序计数器指向 EMIF 映射位置、如 CS0和 CS2。 实际上使用的是 CS0、不使用 CS2。  

在读取/写入期间、如果中断被禁用、则没有问题。  

问题可能出在哪里? 我们是否确实需要在 EMIF 运行期间禁用中断?

非常感谢。

BR、Jordan

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

    约旦、您好!

    哪个中断矢量被调用? 它是与 EMIF 相关还是与其他相关? 如果它是其他的、则可能是 ITRAP、因为 PC 跳转到未使用的 CS2、这将返回错误的代码。 您需要了解 PC 跳转到未使用的 CS2的原因。

    此致、

    Vivek Singh

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

    它是 ADC 中断。 没有非法的中断或指令。

    为什么是 CS2、我已经要求客户检查他们的代码。  

    非常感谢。

    BR、Jordan

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

    有意见吗?

    非常感谢。

    BR、Jordan

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

    很抱歉 Jordan、 好像我误解了您的问题。 在 EMIF 读取/写入期间、如果存在中断、则正在进行的访问将完成、然后 CPU 将为中断提供服务、然后返回中断发生的位置。

    这有什么帮助吗?

    此致、

    Vivek Singh

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

    我知道。  

    但我们的测试如下:  

    1) 1)在 EMIF 读取/写入期间、如果中断未被禁用、客户将会遇到问题;

    2) 2)在 EMIF 读取/写入之前、如果中断被禁用、则没有问题。  

    BR、Jordan

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

    约旦

    当您说它不起作用时、实际会发生什么情况? 从 ISR 返回后,CPU 是否无法正确执行 EMIF 操作? 它是否跳转到其他存储器区域而不是从其读取的原始空间(CS0)? 或者 ISR 未按预期工作。

    此致、

    Vivek Singh

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

    它跳至其它存储器区域,而不是从其读取的原始空间(CS0)。

    BR、Jordan

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

    您好、Jordna、

    很抱歉由于美国假期而延误。   哪个存储器区域的中断向量被映射? 从 ISR 返回后会出现问题? 是否可以共享存在此问题的示例代码?

    此致、

    Vivek Singh

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

    您好!

    实际上、我们不知道问题何时发生。

    但是、如果在 EMIF 运行期间禁用了所有中断、则不会发生此问题。  

    如果未禁用中断、则会发生该问题。  

    这就是我们认为 EMIF 操作与中断发生冲突的原因。  

    在 JTAG 的帮助下、我们发现、程序计数器可以指向不同的存储器位置、其中一些在 EMIF CSx 中、有些在存储器外。  

    客户无法提供代码。  

    非常感谢。

    BR、Jordan

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

    约旦、您好!

    此-上的任何输入

    >>  哪个存储器区域映射了中断向量? 从 ISR 返回后会出现问题?

    此致、

    Vivek Singh

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

    您好!

    中断代码、一些在闪存中运行、另一些在 RAM 中运行。 它们都运行 EMIF。

    闪存:

    APP_ROM      :origin = 0x088052、length = 0x037FAE、fill = 0xFFFF //闪存 E~N

    RAM:

    APP_RAM      :origin = 0x00C000、length = 0x010000 // RAMGS0~RAMGS15

    BR、Jordan

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

    好的。 如果客户可以创建示例代码来重现问题、则我们可以轻松地对其进行调试。 如果没有、我们可以让 WebEx 会话进行研究、但我不确定该会话将有多大的效率。

    此致、

    Vivek Singh

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

    客户无法提供源代码。

    这里附上了一个有关它们如何操作 EMIF 的文档。  

    希望它能有所帮助。

    非常感谢。

    BR、Jordane2e.ti.com/.../FirmwareArchitecture.docx

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

    约旦

    我将在下周休假。 我将在1月的第一周回顾该文档

    此致、

    Vivek Singh

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

    我看不到文档中提供的代码流有任何问题。 除非我们有重现此问题的示例代码、否则很难对其进行调试。 如果您可以访问此代码、我们可以提供 WebEx 会话。

    此致、

    Vivek Singh

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

    了解。

    关于示例代码、我们无法确保对其进行准备、因为:

    1) 1)如果在 EMIF 运行期间禁用全局中断、则没有问题;

    2) 2)如果为 ISR 添加多个代码、也不会出现问题。

    我不确定它是由 EMIF 还是中断引起的、但两者之间存在关系。

    在您看来、在哪种情况下、问题可能会发生? 我们可以向客户提供一些想法、以便在他们的代码中尝试。  

    非常感谢。

    BR、Jordan

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

    约旦

    我们在勘误文档中提供了以下使用说明。 您能否检查客户是否正在执行此类操作?

    4.1.2使用嵌套中断时的注意事项

    受影响的版本:0、A、B、C

    如果用户按顺序使用中断服务例程(ISR)中的 EINT 指令来启用中断

    要使用嵌套功能、用户必须在退出 ISR 之前禁用中断。 没有这样做

    可能导致 CPU 执行的未定义行为。

    此致、

    Vivek Singh

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

    Vivek、

    我们已经知道这个问题。 嵌套中断在其应用程序代码中使用。 客户正在测试。  

    但我们不确定:

    1)为什么它与 EMIF 操作相关、例如程序点跳转到 CS1区域;

    2) 2)为什么问题消失、方法是在 EMIF 运行之前禁用中断。  

    非常感谢。

    BR、Jordan

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

    约旦

    如果问题是由我指出的勘误表引起的、那么我们无法定义操作、并且中断禁用、它将消失、因为问题与中断有关。

    客户是否已经使用使用使用说明中提到的修复程序进行了测试?

    此致、

    Vivek Singh

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

    约旦、您好!

    您对此问题有任何进一步的调试信息吗?

    此致、

    Vivek Singh

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

    我将其关闭、因为即使在他们的板上也很难重现此情况。  

    感谢您的支持。

    BR、Jordan