如何将GCC选项链接到arm MCU FPU数据表?

时间:2013-10-19 09:35:47

标签: gcc embedded arm

我有一个STM32F406VG MCU,我有一个手臂GCC。我使用谷歌为我的平台编译的FPU使用了一些奇怪的参数,但我无法找到任何参考文件来进行通信。

我使用-mfpu = fpv4-sp-d16,我有数据表告诉我,我有一个Cortex-M4F,但没有关于FPU。我发现了GCC的一些无用文档:http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html以及来自ARM的一些无用文档:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489c/CIAHHAFG.html

但我无法使用任何精确的定义来使这个参数与我的FPU相匹配。在互联网上是否有某种巨型表格,其中包含所有部件号和相应的精确FPU定义?

2 个答案:

答案 0 :(得分:3)

您可以将来自多个地方的信息组合在一起。首先,您必须确定要查看的ARM处理器,然后找到该处理器的TRM。在这种情况下,Cortex-M4 TRM可在此处获取:

http://infocenter.arm.com/help/topic/com.arm.doc.ddi0439d/DDI0439D_cortex_m4_processor_r0p1_trm.pdf

这告诉你(第7节)Cortex-M4中的FPU是:

  

ARMv7-M的单精度变体的实现   浮点扩展(FPv4-SP)。

查看ARMv7m架构参考手册(可在http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0403c/index.html处获得许可证),我们可以在A1.3节中找到有关浮点架构扩展的信息。在这里我们也找到了这个建议:

  

基于为ARMv7-A和。定义的VFP实现选项   ARMv7-R架构配置文件,是ARMv7-M的完整特性   浮点扩展是FPv4-SP-D16-M。一些软件工具可能会   需要这种表征。

GCC不会在表征结束时添加'm',因此我们可以选择-mfpu = fpv4-sp-d16。

对于VFPv4-d16的含义,我们必须查看ARMv7a架构参考手册(此处为http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0419c/index.html许可证),其中A1.4.1节给出了这个定义:

  

VFPv4可以用32个或16个双字实现   寄存器,请参阅高级SIMD和浮点扩展寄存器   第A2-56页。必要时,这些实施选项是   区分使用条款:

     

•VFPv4-D32或VFPv4U-D32,用于a   三十二个注册实现

     

•VFPv4-D16或VFPv4U-D16,用于a   十六个注册实现。

     

使用术语VFPv4时   涵盖两种选择。

答案 1 :(得分:1)

ARM的Cortex M4页面告诉它有一个“单精度浮点单元 - 符合IEEE 754”,它对应于gcc上的“fpv4-sp-d16”。 d16用于告知有32个sp寄存器。

http://mobile.arm.com/products/processors/cortex-m/cortex-m4-processor.php?tab=Specifications