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.

[参考译文] CCS/CCStudio-C2000:编译和内存障碍

Guru**** 2581345 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/600447/ccs-ccstudio-c2000-compile-and-memory-barriers

部件号:CCStudio-C2000
主题中讨论的其他部件:TMS320F2.8379万D

工具/软件:Code Composer Studio

您好,

我需要为Delfino TMS320F2.8379万D和Code Composer Studio实施编译和内存障碍。

  • 编译屏障:显式编译器屏障函数,可防止编译器将内存访问从其任意一侧移动到另一侧。 在gcc中,这是使用asm volatile ("":::"memory")指令完成的。
  • 内存限制:强制严格CPU顺序的内存限制,并作为编译器优化的边界。 这与gcc的编译屏障相同,但在某些设备上有所不同。

 那么问题是如何在CCS中做到这一点?

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

    在编译器中没有标准的解决方案来创建障碍。  您可以通过两个步骤获得大多数通常需要的内容。  步骤1:通过使用内部函数__disable_interrupts和__restore_interrupts将关键部分边界化来创建关键部分。  请在 C2000编译器手册中阅读有关这些内部函数的更多信息。  第二步:使关键部分中使用的所有内存变量都具有易失性。  

    谢谢,此致,

    -George

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

    如何禁用仅针对一个代码块或某个函数的优化? 它可能更接近我们的想法。

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

    您可以使用此pragma禁用一个函数的优化...

    #pragma function_options(name_of_function,"--opt_level=off"; 

    请在 C28x编译器手册中阅读有关该pragma的更多信息。

    谢谢,此致,

    -George