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.

[参考译文] CODECOMPOSER:TI ARM CLANG 4.0.3.LTS 版本?

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1520251/codecomposer-ti-arm-clang-4-0-3-lts-release

部件号:CODECOMPOSER
主题:SysConfig 中讨论的其他器件

工具/软件:

在此处查看 https://www.ti.com/tool/download/ARM-CGT-CLANG 后、 TI Arm Clang 编译器工具用户指南 v4.0.0.LTS 链接无法正常工作。

在“What's new“下、 “Support for MSP M0/M0+Math Accelerator“对于编译器而言意味着什么? 它是否会自动将一些数学逻辑映射到 MATHACL、如果是这样、在什么条件下进行哪些数学运算、或者 它是其他...?

此致、

Eugene

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    TI Arm Clang 编译器工具用户指南 v4.0.0.LTS 链接不起作用

    感谢您让我们知道。  我通知了有关小组。  同时、 此链接 始终转到最新版本。

    “新增功能“下 、“支持 MSP M0/M0+Math 加速器“对于编译器而言意味着什么? 它是否会将一些数学逻辑自动映射到 MATHACL

    是的。  主要区别在于编译器为实现这些运算而调用的 RTS 函数。  根据 TI 的本文档、以下操作会受到影响:

    除法、平方根、乘法累加和三角(正弦,余弦,x 的反正切、y/x 的反正切)

    谢谢。此致、

    -乔治

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

    您好、George、

    您能否举例说明编译器将对 MATHACL 执行哪些操作? AFAIU、MATHACL 是片上外设、需要上电、初始化等  TI ARM Clang 编译器如何做到这一切、但仍停留在 C 标准的上下文中? 是否有一个示例说明了 C 运行时初始化期间需要什么内容、或者要包括哪些头文件和库? 我在编译器手册中看不到任何一个...除非我感到困惑,错过了一些东西..

    此致、

    Eugene

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

    我认为 这个有关 MSPM0 数学加速器的视频以及它参考的所有材料会回答您的问题。

    谢谢。此致、

    -乔治

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

    您好、George、

    仅供参考、来自该视频的演示文稿链接不起作用。

    本视频介绍了如何将 MATHACL 用作 SDK 的外部独立库。  那么、“支持 MSP M0/M0+Math 加速器“是否是误导性的说法?   以下代码不是 C 编译器原生代码、而是使用外部 SDK 调用:

    /*设置无符号乘法运算、OP1 = 0.5、OP2 = 0.3 */
    DL_MathACL_startMpyOperation (MATHACL、&gMpyConfig、OP1_Q31、OP2_Q31);
    DL_MathACL_waitForOperation (MATHACL);

    /*获取结果--浮点 Q31 等效值 0.15 = 0x1333 3333 */
    mpyRes = DL_MathACL_getResultOne (MATHACL);

    另一方面、对于具有 FP 硬件支持的器件、 使用内置浮点/双精度型时、编译器将为 FP 协处理器生成指令。 对于 MATHACL 而言、似乎不是这种情况。 什么内置 C 结构或 CLI 选项(例如-mfloat-abi)会导致编译器生成对 MATHACL SDK API 的调用?

    此致、

    Eugene

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

    我很抱歉我的第一次答复。  这有点误导。

    “新增功能“下 、“支持 MSP M0/M0+Math 加速器“对于编译器而言意味着什么? 它是否会将一些数学逻辑自动映射到 MATHACL

    我应该说只有整数除法使用数学加速器。  对于数学加速器支持的其他运算、您必须调用相关 SDK 库中提供的函数。

    编译器手册未对其进行描述 -mmathacl 。    已提交条目 EXT_EP-12626 以更改手册。  欢迎点击这个链接。  同时是编译器 --帮助  摘要显示...

    $ tiarmclang --help | findstr mathacl
      -mmathacl             Enable hardware integer division routines (only available for cortex-m0plus)

    谢谢。此致、

    -乔治

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

    您好、George、

    这是有道理的。 AFAIU、MATHACL 必须在上电后才能使用。 这就带来了后续问题:

    1. 编译器本身如何使用-mathacl 选项处理 MATHACL 初始化(上电,复位)?
    2. 如何在应用软件中处理或处理编译器使用带-mathcal 选项的 MATHACL 与使用 SDK MATHACL 库之间的交互?

    此致、

    Eugene

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    编译器如何使用-mathacl 选项处理 MATHACL 初始化(上电,复位)?

    请运行此仅构建实验。

    C:\examples>type file.c
    volatile int a, b;
    int main()
    {
        return a / b;
    }
    
    C:\examples>tiarmclang -mcpu=cortex-m0plus file.c -o no_math.out -Wl,-c,-m=no_math.map
    
    C:\examples>tiarmclang -mcpu=cortex-m0plus -mmathacl file.c -o with_math.out -Wl,-c,-m=with_math.map

    然后比较映射文件。  In with_math.map 您将看到对名为的编译器 RTS 库中目标文件的引用  mathacl_init.c.obj 。  这意味着必须有一个名为的源文件  mathacl_init.c 。  它位于 compiler_install_root 目录中 /lib/sysv src  它包含用于初始化数学加速器的代码。

    如何在应用软件中处理或处理带有-mathcal 选项的编译器使用 MATHACL 与 SDK MATHACL 库使用之间的交互?

    请参阅 SDK 库随附的文档和示例。  但我的理解是库和选项的使用 -mmathacl 是独立的。  也就是说、使用仍然是合理的 -mmathacl 可以在 CPU 支持时对其进行调整。  这样、代码中的任何整数除法都会提高性能。

    谢谢。此致、

    -乔治

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

    您好、George、

    感谢您澄清了初始化问题。 当然、-mmatchacl 选项很有用。

    不过、我仍然不清楚-mmathacl、SysConfig 和 SDK MATHACL 库如何协同工作。 我不确定 SDK 库是否有任何关于-mmathacl 的信息、如果存在冲突、我不想进入难以调试的情况。 如果有任何互动、有人可以请您澄清一下吗?

    此致、

    Eugene

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

    您好、Eugene、

    我将在总链路连接方面为您介绍一些细微差别。 在 DriverLib 方面、 如果您将 MATHACL 外设添加到 SysConfig、我们将重置并启用 MATHACL 外设。

    通常、这不会导致任何问题、除非您重置外设、然后编译器在重新启动 MATHACL 之前执行数学操作。 如需使用 MATHACL、我建议在执行乘法/除法操作时检查 BUSY 标志、然后放入 SDK MATHACL 函数调用中。

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

    您好 Luke、

    是的、这是个问题、因为在库是显式的情况下、很难控制编译器的作用。 用户可以轻松编写在这里可能不起作用的代码。 一些准则需要公布。 我想知道 -mathacl 是否比 MATHACL SDK 库更安全?

    此致、

    Eugene

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

    您好、Eugene、

    通过编译器启用 MATHACL 后、会在引导例程开始时启用 MATHACL(这是通过设置 PWREN 位来完成的)。 SDK 没有任何有关 MATHACL 的编译器标志的上下文。 唯一相关的情况是重置 MATHACL、然后在启用编译器标志时执行除法操作。

    我将围绕 DL_MathACL_reset (MATHACL) 函数获得代码注释、以详细说明编译器注意事项、并在 SDK 用户指南中提供类似注释。 当编译器团队在用户指南中添加--mathacl 时、我会将其传递给编译器团队、提及如果您重置 MATHACL、那么如果未重新启用 MATHACL、您可能会导致故障。

    编译器不会执行除形式除法之外的任何其他数学运算(截至本文发布时)、因此我认为您仍需要同时使用 MATHACL 和编译器版本。 或者、如果希望完全手动控制除法和其他数学运算、则无法启用编译器版本。

    此致、
    Luke

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

    您好 Luke、

    你说是有的 无冲突 之间的区别 使用 MATHACL 进行整数除法 和用户之外的环境 将 MATHACL 用于除整数除法之外的任何其他操作 ? 此假设是否正确? MATHACL 中是否有不同操作的并行性?

    MATHACL 寄存器的线程保护如何? 对于上述任何用例、可以保存/恢复什么?

    此致、

    Eugene

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

    您好、Eugene、

    MATHACL 不会执行并行操作、您需要等待 MATHACL 完成、然后再向寄存器写入新数据(这可以通过检查 BUSY 位来实现)。 如果 CPU 在没有数学结果完成的情况下读取结果寄存器、则 CPU 将停止、直到结果就绪。 如果您想要执行并行数学运算、则可能需要处理 CPU 和 MATHACL 之间的数学运算、但 在这种情况下、我不建议使用包含 MATHACL 的编译器。  

    MATHACL 和 CPU 不会有有关线程安全的硬件上下文、 但您可以将系统级注意事项考虑生效。 使用检查繁忙状态或通过全局布尔值锁定访问的典型技术。 在我们的电机控制库中、我们保留了对 MATHACL 的最高优先级线程访问权限 、因此不会覆盖 MATHACL 的风险。  如果您在 MATHACL 运行时确实更改了操作或操作数、则将获得错误的结果。

    保存和恢复应该是 CTL、OP1 和 OP2 寄存器。 每个寄存器 32 位。

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

    您好 Luke、

    感谢您的详细说明。 您是否认为在 MATHACL SDK 库函数中包括忙于检查会对用户有利? 借助-mmathacl 编译选项、这将使其更强大、并将简化用户集成。  

    此致、

    Eugene

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

    您好、Eugene、

    我可以研究是否可以这样做、但它可能会破坏与当前用户的兼容性、即使它可能是 QoL 更新。

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

    您好 Luke、

    “怎么样? 现有用户链接到旧版本、检查忙位不应中断任何操作(理论上)... 也许为-mmathacl 的情况添加内置编译器定义会有所帮助?

    此致、

    Eugene

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

    您好、Eugene、

    当 C 代码执行类似 z = x / y 的操作时、存储到变量 Z 中、CPU 会等待操作完成。 如果您的 z = x/y、则 ISR 跳转到另一个除法或 MATHACL 函数、然后您会遇到这种情况、从而导致变量 Z 在 CPU 返回 main 时存储错误值。

    DL_MathACL_waitForOperation 命令可用于检查 BUSY 位(在 BUSY 位被清除之前、该函数是一个 while 循环)。 我能够确认我们不能更改现有的函数以添加到等待功能中、但我们确实有可用的函数来执行相同的操作。  

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

    ...但这不是同样的问题与-mmathacl ?

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

    您好、Eugene、

    是的、这是 Math ACL 需要考虑的问题、我想确保这一点很明确、以防止将来进行任何调试工作。

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

    以上都是我对-mmathacl flag 的有用性提出的问题。 在编译器级别使用它似乎存在许多问题 @George Mock。 -mmathacl 会产生更多它能解决的问题。

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

    我向编译器提出了问题、目的是让编译器、数学加速器和 SDK 方面的专家开始讨论。  此时、对问题的描述比较模糊。  在这种情况下,我认为等待公开发布是明智的。  请耐心等待。

    谢谢。此致、

    -乔治