首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在设置为SoftVFP或none的情况下在Cortex A8上启用霓虹灯

在设置为SoftVFP或none的情况下在Cortex A8上启用霓虹灯
EN

Stack Overflow用户
提问于 2012-01-17 10:25:21
回答 2查看 945关注 0票数 0

我正在尝试使用RVDS4.0为Cortex A8构建一个可执行文件。我的代码使用霓虹灯,但我希望将fpu选项设置为none或SoftVFP。ARM网站提到,当fpu设置为SoftVFP时,霓虹灯将被禁用。这是因为VFP和霓虹灯共享寄存器吗?

有人可以解释为什么我不能使用霓虹灯时,fpu设置为SoftVFP,或者是否有任何选项,我可以通过启用霓虹灯,即使当fpu设置为SOftVFP?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2012-02-23 04:32:01

为什么不直接使用--cpu=7-A?这应该意味着currect --fpu选项

softvfp是一个模拟库,我猜NEON根本没有实现。

票数 0
EN

Stack Overflow用户

发布于 2014-01-22 09:08:34

是的,霓虹灯和VFP寄存器是共享的。这简化了操作系统上下文切换支持,因为任何能识别VFP的操作系统也可以正确地处理霓虹灯。

将为softVFP构建的代码与为硬件VFP构建的代码链接是不安全的,因为它们将函数参数/结果放在不同的寄存器中-在这方面,使用霓虹灯很像使用硬件VFP。

但是有一种特殊的情况,当你不得不链接到SoftVFP库,但你碰巧知道你的SoC支持它(你知道吗?有很多A8没有霓虹灯)。这种特殊情况称为softvfp+。其工作方式是将函数参数传递到整数寄存器中,但在函数内部,编译器可以使用FPU,也可以使用霓虹灯。对于ARM的编译器,目标是带有霓虹灯的CortexA8,您应该使用"--fpu=softvfp+vfpv3“

有关ARM编译器与此相关的一些选项,请参见此。许多其他编译器都有类似的开关。

对于ARM的RVCT3.x和更高版本的编译器,您将需要(http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491c/CIHCJIFE.html):

softvfp+vfpv3

选择符合VFPv3的硬件向量浮点单元,具有软件浮点链接。如果要在实现VFPv3设备的系统上将Thumb代码与ARM代码互通,请选择此选项。

对于GCC,你需要"-mfloat-abi=softfp",而我认为“-mfpu=‘neon’”。摘自GCC手册(http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html):

-mfloat-abi=名称

指定要使用的浮点ABI。允许值为:‘soft’、‘softfp’和‘hard’。指定‘soft’会导致GCC生成包含浮点运算的库调用的输出。“‘softfp”允许使用硬件浮点指令生成代码,但仍使用软浮点调用约定。‘’hard‘允许生成浮点指令,并使用特定于FPU的调用约定。

默认值取决于特定的目标配置。请注意,硬浮点ABI和软浮点ABI不是链接兼容的;您必须使用相同的ABI编译整个程序,并使用一组兼容的库进行链接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8888945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档