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.

[参考译文] 编译器/TMS320F28388S:无法禁用某些函数的优化级别

Guru**** 2535150 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/909853/compiler-tms320f28388s-unable-to-disable-the-optimization-level-for-some-function

器件型号:TMS320F28388S

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

您好 、专家、

我的客户希望将优化级别设置为1、但对于某些函数、他们希望将优化级别设置为 OFF、他们使用如下命令:

但发现实际上没有效果、优化级别1也适用于此函数、对此有何建议?

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

    强、

    我能够在我的结尾重复这个问题、并正在对其进行研究。 权变措施是将函数移动到单独的文件中、并将该文件的优化级别设置为 off。

    与您的问题不直接相关、但我想知道他们为什么要禁用某些函数的优化-这是因为这些函数具有一些严格的计时要求、并且他们希望该函数采用固定数量的周期吗?

    Ajay

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

    您好、Ajay、

    与您的问题不直接相关、但我想知道他们为什么要禁用某些函数的优化-这是因为这些函数具有一些严格的计时要求、并且他们希望该函数采用固定数量的周期吗?

    --> 禁用某些函数优化的原因是,在进行优化时,以下 e2e 中发布的 I2C 函数会出现问题,并且 在进行优化时,执行周期会受到影响,并会减少某些函数之间的延迟。 对于此问题、添加 delay 函数以增加一点延迟可以解决此问题、 但以其他方式、禁用该函数的优化也应该可以解决此问题、但实际上它没有解决。

    e2e.ti.com/.../3362401

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

    强、

    当 命令行上启用大于-opt_level=off 的任何优化级别时、不能使用 FUNCTION_OPTIONS pragma 在每个函数基础上关闭优化(-opt_level=off)。 使用 FUNCTION_OPTIONS pragma 只能使用--opt_level=0或更高版本。 《TMS320C28x 优化 C/C++编译器用户指南》中的"FUNCTION_OPTIONS pragma "部分将更新以记录此限制。

    编译器使用--opt_level=0和--opt_level=1为该函数生成类似的代码-这就是您在所生成的汇编代码中看不到差异的原因。 最好的方法是将函数移动到单独的文件中并使用--opt_level=off 进行编译。

    此外、从另一个线程看、如果需要延迟、最好使用循环使其在代码中显式、而不是在编译器中使用--opt_level=off。 这将确保延迟仅在必要时出现、并避免在使用--opt_level=off 编译的其余代码中降低性能。

    Ajay