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.

[参考译文] TMS320F28335:在28335上运行 acosf

Guru**** 2587365 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1214616/tms320f28335-acosf-running-on-28335

器件型号:TMS320F28335

acosf 是 cosf 的反函数,但它 从[-1、1]返回的值是错误的结果,给定0.5返回值是0.5,该值应该是(pi/3),这是错误的

当我使用 atan2f 或 cosf 函数时、返回值是正确的

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

    请检查反汇编以查看是否有对 acosf 函数的调用、因为 yyy = xxx、它可能根本不会调用该函数。

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

    我检查了反汇编、已调用"_acos"函数、这是正确的功能吗? 当输入为负时、输出不等于输入、但仍然是错误的。

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

    这似乎不太对。 您能否查看项目链接器属性并向我发送包含哪个 RTS 库的屏幕截图?

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

    链接器属性

    使用快速 RTS

    是否已正确设置项目?

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

    啊! 我想发生这种情况的原因是您使用的是 F28335、该器件没有 TMU、而 FPUFastRTS 库 acos 函数会假定存在 TMU (除 FPU 之外)。 请查看 acos_F32.asm 和 TMU 指令。

    一些 FPUFastRTS 库函数是这样的。 其他一些功能是 TMU 替代功能、即它们是在没有 TMU 指令的情况下实现的、旨在模仿 TMU 中以简单指令形式提供的功能。

    奇怪的是、您的项目生成并未带来错误。 我认为、基本上您的项目设置可能已启用 TMU0、因此正在构建、但当您在没有 TMU 的 F2833x 器件上运行它时、它只是无声失败(未丢弃错误)。

    谢谢。

    SIRA

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

    未启用 TMU

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

    默认情况下、在 FPUFastRTS 库构建本身内启用 TMU0、这就是包含项目内的设置看起来无关紧要的原因。

    如果您在不支持 TMU 的情况下构建 FPUFastRTS 库、则不会汇编 acos_F32.asm 和 ASIN_F32.asm、而会生成警告。

    谢谢。

    SIRA

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

    因此、当启用 tmu0时、如果没有任何内容、则会报告警告

    使用28335和 fastRTS 无法使用此函数

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

    是的。

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

    当我使用 cosf 函数时、插入了 XDS100仿真器、28335计算正确答案

    当移除 XDS100时、结果刚消失。

    来解决该问题?

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

    是否会修复此错误? 或者、我也可以尝试使用旧库

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

    很遗憾、我不太了解这里的连接。

    如果这是不同/新问题、您需要提交新 TT 并提供所有详细信息。

    我们还需要将先前的问题标记为已解决。

    谢谢。

    SIRA

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

    我使用 atan2f 来替换 acosf、这个函数似乎是正确的

    我需要寻找加速代码,有什么建议?

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

    是的、您可以将 atan2_f32与 FPUFastRTS 库一起使用。

    这应该起作用。 您可参考库中的相应示例。