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.

[参考译文] TMS320F28388D:__sqrt () 28388 中的 CLA 内在函数?

Guru**** 2874030 points

Other Parts Discussed in Thread: C2000WARE, TI-CGT

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1629082/tms320f28388d-__sqrt-cla-intrinsic-in-28388

器件型号: TMS320F28388D
主题: C2000WARE 中讨论的其他器件

您好、

我一直在 2837D 上使用 CLA 中的_sqrt () 内在函数、并将代码移植到 28388D、并且在调用 CLA 上的__sqrt () 内在函数时收到编译错误。 在 C2000ware 示例工程中、我在 28388 上、但在 28377 上不调用该内在函数时也会出现同样的错误。 2 类 CLA 是否不支持该内在函数? 我是否必须开始使用 CLAmath 库而不是__sqrt 内在函数?

我使用 CCS 12.5.0.00007、C2000Ware 5.1 和 ti-cgt_c2000_22.6.1.LTS 编译器。 在 28377 器件支持示例(例如 cla_sqrt _cpu01)上、_sqrt 内在函数不会导致任何构建错误。 但是、如果我尝试修改 2838x 器件支持示例 cla_asin_cpu01 以调用.cla 文件中的__sqrt 内在函数、则会在“cla_ex1_asin_cla.obj “上出现编译失败、没有有意义的错误消息。  

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

    Andrew、

    我在 F2837xD ASIN 示例和 F28388x 示例上看到了相同的行为。

    __sqrt () 内在函数是__meisqrtf32 () 的别名、似乎可以正常工作。 可能在代码中的某个位置有一个#define 将其重新映射到这个内在函数?

    您可以尝试使用此内在函数吗?

    Ref www.ti.com/lit/spru514 - CLA 编译器一章

    此致

    Lori

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

    嗨 Lori。 我已验证__meisqrtf32 () 内在函数 计算 1/sqrt (x) 而不是 sqrt (x)。  _sqrt () 内在函数和 __meisqrtf32 () 内在函数都使用内置 1/sqrt (x) 估计值,后跟牛顿 — 拉弗森近似值(但对于 1/sqrt (x) 与 sqrt (x),牛顿 — 拉弗森实现不同)。 因此、我认为上面针对 sqrt 内在函数显示的编译器文档注释是错误的、因为该注释 描述了 1/sqrt (x) 内在函数。

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

    我同意。 它应该是类似__ isqrt () 而不是___ sqrt ()。  

    在 CLAmath 库中、CLAmath.h 文件包含:  

    #define __sqrt             CLAsqrt_inline

    您能否仔细检查原始工程是否正在使用此头文件?

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

    我的原始工程未使用 CLAmath 库。 我在 28388 示例中尝试使用 CLAmath 库、它确实可行、但正如您在上面提到的、它使用的是 CLAsqrt_inline 函数。 查看这一点后、似乎可能是一个编译器错误、__sqrt 内在函数在 28377 上工作(没有 CLAmath 库)、而在 28388 上不工作。 我的问题之一是看看这是否是有意在 2 类和 3 类 CLA 之间进行的更改。  

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

    感谢您的查看、Andrew。 出于某种原因、当我在用于 F2837xD 的 c2000Ware 示例中的.cla 文件中尝试使用__sqrt () 时、它也不会进行编译。 我还尝试更改不同类型 CLA 的编译器开关、但它仍然没有编译。 我将向编译器团队报告。 至少存在文档问题。

    对于从 2 类更改为 3 类的情况 — 仅在 CLA 3 类中添加了后台任务功能。 未删除/更改任何指令、并且仅将运行后台任务所需的指令和挂钩添加到编译器中。  

    此致

    Lori

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

    大家好、编译器团队还有一件事:编译器参考指南的所有网站链接都链接到 SPRU514Z(22.6.0 编译器版本)、无论文本显示链接到的是哪个版本。

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

    感谢您的报告。