9

我正在尝试为我正在设置的工具链找出 gcc 选项,用于开发板:Sabre-lite,它基于飞思卡尔的 iMX6q 四核处理器。

现在我知道 iMX6 基本上是一个 cortex-a9 处理器,它有协处理器 vfpv3 和 neon,还有矢量图形、2D 甚至 3D 引擎。

但是,发行说明和使用指南文档对如何启用可以在 gcc 中启用的任何选项并不太清楚。

事实上,我可以“玩”的选项如下。

-march= armv7-a                - ok this one is pretty obvious.
-mfpu= vfpv3/neon              - i can use only the vfpv3 co-processor, or both (respectively, depends on option)
-mfloat-abi=softfp/soft/hard   - I guess I can choose hard here, as there is hardware for fp operations
-mcpu=cortex-a9                - is it option even necessary? it is not clear if it just an alias for -march or something else.

我应该启用其他选项吗?为什么工具链具有构建 linux kernel/uboot/packages 的默认选项:

-march= armv7-a -mfpu= vfpv3 -mfloat-abi=softfp

谢谢您的帮助

4

2 回答 2

6

使用-mthumb -O3 -march=armv7-a -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon -mvectorize-with-neon-quad -mfloat-abi=softfp. 请注意,默认情况下,编译器不会使用 NEON 对浮点运算进行矢量化,因为 NEON 不支持非正规数。-ffast-math如果您对精度有所损失感到满意,您可以通过添加开关使 gcc 使用 NEON 进行浮点运算。

于 2013-02-19T17:30:16.343 回答
1

我无法回答所有问题,但“--softfp”表示使用 FPU,但要与不使用的代码保持兼容性。

稍微过时的 ARM FP 文档

于 2015-05-06T22:35:34.223 回答