JNH官网

【GreenHills】S32DS调用GHS编译器设置Float Point

1、 文档目标

记录S32 DS中如何设置Float Point,以及分析其不同设置的区别。


2、 问题场景

客户之前使用浮点型函数并不了解如何在S32DS中设置Float Point以及相关设置具有如何影响,并且部分客户使用S32DS去调用GHS的编译器进行使用,节约授权的占用率。


3、软硬件环境

1)、软件版本:Mutil 8.14

2)、电脑环境:Windows 11

3)、外设硬件:无


4、解决方法

1)、打开S32DS,选中项目点击右键,选中“Properties”,进入设置界面。

图4-1

2)、进入“Properties for test”,选择“C/C++Build” -->"Settings"-->"Target"-->"Floating-Point",在<Floating-Point Mode>框内,选择相应的浮点模式进行使用。

图4-2

3)、Floating-Point Mode

指示应该使用软件、硬件还是两者的组合来计算浮点运算。此选项还允许您完全禁用浮点操作。此选项允许的设置为:

No Floating-Point (-fnone):禁止所有浮点操作。除了在没有FPU的处理器上使用之外,如果您试图最小化程序大小,这个设置也可能是合适的。要理解其中的原因,请考虑-fnone对程序编译的两个主要影响。


1. 首先,C和c++编译器对任何浮点变量或常量的使用都会给出错误。这将大大减少诸如printfscanf之类的库函数的大小。

2. 其次,编译器将传递-D__NoFloat__以允许源代码和头文件隐藏对浮点对象的引用。


注意:与浮点操作相关的代码可以链接到可执行文件中,即使它不使用浮点变量。排除这些代码可以导致程序大小的额外显著减少。最后,由于此设置需要系统库和头文件的支持,因此对于使用具有自己的C或c++头文件和库的嵌入式操作系统的环境不支持此设置。其他目标可能使用特定于目标的头文件,这些头文件需要使用浮点类型。该设置意味着-no_float_scanf。


VFP Hardware Coprocessor (-fhard):硬件浮点(HFP)模式。此设置使目标将浮点数据存储在浮点寄存器中,并使用浮点指令执行浮点操作。这与软件模拟的浮点模式(参见下面的-fsoft)形成对比。HFP模式使用ARM VFP协处理器,仅支持v5或更高的体系结构。要识别默认使用-fhard的处理器,请参见“ARM处理器变体”下的第二个表。对于Cortex-A和Cortex-R52处理器,- hard还提供了对NEON协处理器的支持。


Hardware Single, Software Double (-fsingle):为单精度操作指定硬件浮点模式,为双精度操作指定软件浮点模式。与- hard相同的处理器支持此设置。对于Cortex-M4F,默认开启-fsingle。


Software Emulation (-fsoft): SFP (software floating-point)模式。此设置使目标使用整数寄存器来保存浮点数据,并使用库子例程调用来模拟浮点操作。对于没有FPU的目标,这是默认设置。如果目标有一个FPU,这个设置选择一组不同的浮点库。


【更多软件使用问题请站内搜索或关注B站:查看视频教学】

jnh官网 jnh官网 jnh官网 jnh官网 金年会 金年会 金年会 金年会