12

我正在使用 ARM Cortex-M3 和 Cortex-M4。我想利用 GCC 的定点类型扩展。我正在使用summ-arm-toolchain。以下代码行

_Fract f = 0.1;

抛出以下编译错误:

error: fixed-point types not supported for this target

GCC 真的不支持 Cortex-M3/M4 的定点类型,还是我在这里遗漏了什么?

4

2 回答 2

11

只是为了记录,我会回答我自己的问题。

TL;DR :在 gcc 的嵌入式分支(4.6 版及更高版本)中,ARM Cortex-M/R 架构支持定点类型扩展。在这里可以找到基于该 gcc 分支的工具链。

长答案

在撰写本文时,召唤臂工具链默认下载 linaro-gcc-4.5-2011.02(或 gcc-4.5.2)。默认情况下,它没有启用定点类型扩展。我尝试将参数添加--enable-fixed-pointconfigure,但我得到了这个错误描述的编译错误。我尝试使用较新版本的 (linaro-)gcc,但在将其自己提供的 gcc 补丁应用到此较新版本时,召唤臂工具链遇到了问题。我还尝试使用此工具链的dev分支(使用 linaro-gcc-4.6-2011.10)但没有成功。看起来,在这一点上,ARM Cortex-M/R 既不支持定点扩展,linaro-gcc 也不支持gcc的主要分支。

然后我尝试了gcc-arm-embedded toolchain,它基于 gcc 的嵌入式分支。对于目标 ARM Cortex-M3 和 Cortex-M4,我能够毫无问题地编译我的定点类型示例程序。2011 年末增加了对 Cortex-M/R 扩展的支持,正如在这个线程中看到的那样。

于 2012-06-14T22:26:21.463 回答
6

根据GCC Wiki--enable-fixed-point ,您可以通过在配置时将其作为参数传递给 GCC 来启用定点扩展。

此外,根据对此 gcc错误错误的评论。

目前仅 MIPS 目标支持定点支持。

于 2012-06-14T18:10:40.333 回答