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.

[参考译文] TMS320F280025:汇编列表中的代码优化和 TMU 指令

Guru**** 2568585 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1065693/tms320f280025-code-optimizations-and-tmu-instructions-in-assembly-listing

器件型号:TMS320F280025

由于处理器带宽限制、我们正在进行代码优化。 我们针对处理器设置和优化进行了以下设置:

请告诉我们上述设置是否正常、或者我们是否可以进一步提高代码的执行速度?

我们希望 TMU 指令应用于正弦等三角函数 为了确认我们的设置是正确的、我们查看了代码的汇编列表以查看是否存在 TMU 指令。 以下是一个列表:

270 TS= sin (FS);
08467e:764886DF LCR __relaxed_sinf
084680:E2030052 MOV32 *-SP[18]、R0H

TS 和 FS 都是浮点数。 编译器正在使用__relaxed_sinf 指令。 我们期待的是 SINPUF32。 请解释这一区别。

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

    您使用的是哪个版本的编译器、您能否发布完整的命令行?

    查看 ti-cgt-arm_20.2.5.ls/lib/src/math.h、以下是重新定义 sinf ()和 cosf ()以内联函数 __relaxed_sinf ()和__relaxed_cosf ()的宏:

    #define sinf   __relaxed_sinf
    __inline float __relaxed_sinf(float x)
    {
        return __sin(x);
    }
    #define cosf   __relaxed_cosf
    __inline float __relaxed_cosf(float x)
    {
        return __cos(x);
    }

    如果选择--disable_inlining,则使用 V20.2.5.LTS 编译器,然后编译器调用  __relaxed_sinf(),而不是使用一对 DIV2PIF32/SINPUF32 指令:

    因此、认为您的问题是由编译器出于某种原因未执行函数内联引起的。

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

    我无法重现此结果...

    [引用 userid="488051" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forume/1065693/tms320f280025-code-optimizing-and-tmU-instructions-in assembly-listing"]编译器正在使用__relaxed_sinf 指令。

    对于您看到此结果时正在构建的源文件、 请按照文章 如何提交编译器测试用例中的说明进行操作。

    谢谢、此致、

    乔治

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

    非常感谢您在下一年之前作出答复 。 我已经检查了编译器版本。 它是20.2.4.LTS。 我现在已将其更改为21.12.0.STS。 您是指以下按命令行列出的内容吗?

    我很难错过重要的信息。 我禁用了用于调试目的的优化、以便汇编器列表与我的源代码行编号相对应。 因此、先前共享的汇编列表已关闭优化。 再次启用优化后、汇编列表如下所示:

    新列表现在包含 TMU 指令。 我认为关闭优化是缺少 TMU 指令的原因。  

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

    尊敬的乔治:

       我想我对切斯特·吉隆的答复解释了你为什么不能在最后提出这个问题 如果您能就我应该用于实现最快代码执行时间的最佳优化设置向我提供建议、那将会非常好。 我们主要运行电源转换器的控制算法、代码由 Matlab 嵌入式代码生成工具生成。 您能不能向我推荐合适的技术参考、该参考解释了我们应在 Matlab 代码生成中使用的任何设置、以便生成的代码充分利用 TI 控制器的 FPU 和 TMU 功能。 我们知道、我们的代码生成对于我们的控制器功能而言并不是最佳的。

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

    您在第一个帖子中显示的所有编译器选项看起来都很好。  也就是说、您可以随意尝试 -opt_for_speed 的设置。  控制代码大小和速度之间的权衡。

    [引用 userid="488051" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forume/1065693/tms320f280025-code-optimizing-and-tmU-instructions-ing-ing-ing-ing-ing-ing-assembly-listing/3943139#3943139"]请参阅合适的技术参考资料

    请参阅 C28x 编译器手册

    谢谢、此致、

    乔治

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

    请告诉我、是否有与 C28x 控制器系列相关的 MATLAB 嵌入式代码生成设置相关的任何文档。 其目的是生成使用 FPU 和 TMU 等硬件功能的代码、以实现最佳处理速度。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="488051" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forume/1065693/tms320f280025-code-optimizing-and-tmU-instructions-in assembly-listing/3947691#3947691"]如果有任何与嵌入式控制器系列相关的文档[引用与 LM28x 系列控制器设置相关]

    我不知道任何此类文档。

    谢谢、我很喜欢

    乔治