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.

[参考译文] 编译器/TMS320C6727B:Memmove / memcpy 怀疑中断问题

Guru**** 2511415 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/699415/compiler-tms320c6727b-memmove-memcpy-suspected-issues-with-interruptions

器件型号:TMS320C6727B

工具/软件:TI C/C++编译器

您好!

我正在尝试调试一个 DSP 停止处理中断(EMIF)的问题。

我一直跟踪到 memcpy:是否可以禁用中断以获得更好的性能、并且在某些情况下不会重新启用中断?

memMove 是否可能具有相同的行为?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否正在使用 DMA 正在使用的相同存储器块?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我们在任务中未使用 DMA、您是说 memcpy 可以使用它吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    抱歉、我看到了 DSP 并在我的脑海中跳转到了 DMA。 您应该能够找到 memcopy()的源并亲自检查。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    编译器的 memcpy 版本不显式禁用中断。
    只需仔细检查一下、您使用的是哪个版本的编译器? (它与 CCS 版本不同。)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您的 memcopy()调用是否可以对栈进行重新编号? 这可能会终止中断。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我们已经检查、我们处于堆栈存储器的70%。 我认为这不是问题
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Jose Luis Gomez Costa "]我一直跟踪到 memcpy:是否可以禁用中断以提高性能[/引用]

    是的

    [引用用户="Jose Luis Gomez Costa "]在某些情况下,它们不会重新启用?

    否  中断始终被重新启用。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我没有*说你正在堆栈中运行,我说你可能正在对堆栈进行编号。 例如,由于 errant sizeof(),您可能会要求 memcopy()复制两倍的内存。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    很抱歉,我误解了英文单词。
    我将检查、要复制的数据长度是动态的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我们的系统从外部存储器(通过 EMIF)移动高达8KB 的数据。 如果我们要移动的点数很小、则不会出现此问题。
    我们修改了程序、以始终传输相同的大量数据、并且我们注意到:
    -系统工作正常,我们可以注意到整套装置已正确传输
    随机时间(10到15分钟,我们每1.2秒进行一次数据传输)后,中断在 memcpy 之后停止启用,唯一的解决方案是重置系统。
    我们修改了我们的程序,消除了 memcpy 调用,使传输“按程序”,系统运行良好。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    保持屏蔽的中断连接到 EMIF 块
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此主题已超越了我们编译器专家的专业知识。  您的问题是否已解决?

    谢谢、此致、

    乔治

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

    我们使用“手工”转移的变通办法,但我们想了解问题的原因,因为我们在其他部分使用 memcpy。。。
    无论如何、非常感谢、我将尝试查看硬件论坛。