如何在ARM Cortex-M上使用GCC定点类型扩展?

use*_*152 12 c embedded gcc arm fixed-point

我使用的是ARM Cortex-M3和Cortex-M4.我想利用GCC的定点类型扩展.我正在使用召唤臂式工具链.以下代码行

_Fract f = 0.1;
Run Code Online (Sandbox Code Playgroud)

抛出以下编译错误:

error: fixed-point types not supported for this target
Run Code Online (Sandbox Code Playgroud)

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

use*_*152 11

只是为了记录,我将回答我自己的问题.

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

答案很长:

在写入时,所述召唤臂工具链默认Linaro的-GCC-4.5-2011.02(或备选地GCC-4.5.2)的下载.它不是已经默认启用定点类型扩展.我尝试添加的参数--enable-fixed-pointconfigure,但我得到这个描述的编译错误的bug.我尝试使用更新版本的(linaro-)gcc,但是summon -arm-toolchain在将这个自己提供的gcc补丁应用到这个新版本时遇到了问题.我也试过使用这个工具链的dev分支(使用linaro-gcc-4.6-2011.10)但没有成功.它看起来像,在这一点上,不为Linaro的-GCC,也不支持的定点扩展的ARM Cortex-M/R既不主要的gcc分支.

然后我尝试了gcc-arm嵌入式工具链,它基于gcc 的嵌入式分支.对于目标ARM Cortex-M3和Cortex-M4,我能够毫无问题地编译我的定点类型示例程序.2011年底增加了对Cortex-M/R扩展的支持,可以在这个帖子中看到.


Akh*_*hil 6

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

此外,根据对这个gcc bug一个的评论.

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