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.

[参考译文] TMS320F28384S:CM -浮点值/变量问题

Guru**** 2393725 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1293750/tms320f28384s-cm---float-values-variables-issues

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

您好!
我正在 Cortex 内核(连接管理器)上开发一个应用、但在使用单精度浮点变量和值时会出现一些问题。


示例1
如果我将双精度浮点值分配给浮点变量(单精度)、则会出现硬故障。

浮点;
a = 1.0;


示例2
如果我 使用单精度浮点变量对 int32变量进行分频、就会出现硬件故障。

uint32_t b;
uint32_t c;

b = 1600;
c = b/1.0f;

示例3
与示例2相同、但在本例中、从 floatig-point 值中删除 F 后缀(双精度)。
在这种情况下,我没有问题。

b = 1600;
c = b / 1.0;

使用单精度浮点值时、为什么会有这些异常?

谢谢!
卡洛

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

    您好、Carlo。

    F2838x 中的 Cortex M4内核没有浮点支持。 您是否在项目设置中启用了此功能?

    此致、

    维纳

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

    您好 Veena:
    我得出了同样的结论。

    实际上、为了更好地构建 Cortex-M 配置文件、 我了解到 FPU 是 Cortex-M4处理器上的一个可选功能。

    以下是我使用的处理器选项:

    当我强制使用单精度值时、例如通过附加 F 后缀来判断硬故障。

    在本例中、我看到异常在尝试执行 VMOV 指令以将浮点值加载 到 S0寄存器时发生、该寄存器在 CM 上不存在。 不是吗?

    此致、
    卡洛

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

    是的、该器件不在 cortex M4中包含 FPU 模块。 因此、如果您启用 float_support、编译器会生成无法在该器件中的 Cortex M4上运行的 FPU 指令。 请将该选项设置为"无"。

    我建议您参考 C2000ware 中提供的示例、以了解要使用的编译标志

    此致、

    维纳

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

    谢谢 Veena。

    实际上、通过查看 C2000Ware 示例、FPU 支持选项设置为"无"。

    我被 C2000Ware 部署的文档"F28838x 固件开发包"(F2838x_FRM_EX_UG.pdf)中的一个错误误导  4.02.00.00。
    在本文档的第2.2节"项目创建/CM 子系统项目创建"中、说明了如何设置 FPU 支持选项"FPv4SPD16"。  

    此致、
    卡洛