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.

[参考译文] AM62A7-Q1:MCU 程序无法执行浮点运算

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1598713/am62a7-q1-the-mcu-program-cannot-perform-floating-point-operations

器件型号: AM62A7-Q1

您好、

我们在尝试调整 EB 协议栈时遇到问题、该问题似乎与浮点单元 (FPU) 有关。 我们有以下问题:

在 TI 示例代码中、FPU 模块被启用了在哪里?  

如果我要在我自己的代码中启用 FPU 模块、我应该遵循哪些步骤?  

谢谢、

Yuwei

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

    您好、Yuwei、

    请提供更多信息。 您尝试编程哪个核心? 您在该内核上运行什么软件? 您使用的是哪个版本的软件?

    此致、

    Nick

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

    您好、Nick、

    您正在尝试编程哪个内核?

    我们使用的核心是 MCUR5。

    您在该内核上运行哪些软件?

    我们使用 EB 协议栈、通过操作系统调度自己创建的任务函数。

    您使用的是哪个版本的软件?

    我们使用的版本是 10.01。

    我们现在遇到的问题是、在执行以下代码时、程序崩溃、PC 指针被移动到位置 0x4。

    volatile float32 test = 0.0;
    test = test + 1.0;

    我检查了汇编代码、执行以下语句会导致中断、PC 指针被强制指向位置 0x4。

    vldr    s0,[r1]

    存储在 R1 寄存器中的值为 0x791678bc。

    我不确定原因、请查看以下内容。

    谢谢、

    Yuwei

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

    您好、Yuwei、

    我已将您的线程重新分配给熟悉 R5F 上 AutoSAR 开发的团队成员。 对延迟表示歉意、这将是第二天、我们可以向您提供初步答复。

    此致、

    Nick

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

    您好、Yuwei、

    当分配的所有者今天是 ooo 时、请检查以下内容:

     RE:TDA4VM:在 MCU R5F 内核中启用 FPU(浮点单元) 

    Cortex-R5 部分: https://software-dl.ti.com/codegen/docs/tiarmclang/rel3_2_1_LTS/getting_started_guide/supported_arm_processors.html# 

    以下编译器选项可用于启用 FPU:

    -mfloat-abi=hard -mfpu=vfpv3-D16 

    请查看 MCU+SDK 中所有“example.projectspec"文件“文件的“compilerBuildOptions" 以“以供参考:

    此致、
    Krithika.

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

    尊敬的 Krithika:

    -mfloat-abi=hard -mfpu=vfpv3-D16

    我检查了我的编译选项、我认为我的编译选项包括此内容。

    同时、我启用了与 FPU 相关的协处理器、从而激活浮点算术功能。

    当时,我所描述的情况仍然存在。 当我尝试将数据存储到 S0 寄存器时、会发生中断、PC 指针将指向地址 0x4。

    vldr    s0,[r1]

    我有以下问题需要回答:

    在 CCS 中、我检查了 CCS 的寄存器窗口、没有在其中找到 CACR 寄存器。 如何查看 CACR 寄存器?

    是否有任何其他建议来检查有关访问 S0 寄存器触发中断的情况的问题?

    谢谢、

    Yuwei

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

    尊敬的 Krithika:

    在这个问题上是否有任何进展?

    谢谢、

    Yuwei

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

    尊敬的 Yuwei:

    我无法重现中止。 您能告诉我您使用的是哪个版本的 ti-arm-clang? 您是否在任何默认 SDK 中尝试过此代码、并检查它是否起作用?

    此致、
    Nihar Potturu

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

    尊敬的 Krithika:

    您能告诉我您使用的是 ti-arm-clang 版本吗? [/报价]

    我使用的版本为 ti-cgt-armllvm_3.2.2.LTS、

    您是否在任何默认 SDK 中试用过此代码并检查它是否有效?

    我们正在调整协议栈代码、并且没有使用 TI 的 SDK。

    我想知道我的问题可能与哪些注册有关。 我认为应该仔细检查相关的寄存器。

    谢谢、

    Yuwei

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

    尊敬的 Krithika:

    感谢您的答复、我的问题已解决。

    此问题是由于未设置 FPEXC 寄存器中的 FPU 计算使能位。

    谢谢、

    Yuwei