arm-linux-gcc硬浮点,如何在i.MX6UL平台上实现硬浮点与软浮点?

i.MX

6UltraLite(简称为i.MX 6UL)是i.MX6系列的新产品。i.MX 6UltraLite采用单核ARM

Cortex-A7,处理器主频528MHz,采用NEON技术加速多媒体和信号处理算法,具有浮点运算单元。适合于物联网,电子支付,智能家居,能源管理等领域。

如何在i.MX6UL平台上实现硬浮点与软浮点?

本次开发使用的硬件平台为飞凌嵌入式OKMX6UL-C开发板(产品详情:www.forlinx.com/69.htm),其它板卡请酌情参考使用,具体实现操作步骤如下:

a4c26d1e5885305701be709a3d33442f.png

硬浮点交叉编译方法为

arm-linux-gcc

-march=armv7-a -mfpu=neon -mfloat-abi=hard -o test

test.c

加入编译参数

-mfloat-abi=hard,并且使用arm-linux-readelf

-A test查看,如下:

Attribute

Section: aeabi

File

Attributes

Tag_CPU_name:

"7-A"

Tag_CPU_arch:

v7

Tag_CPU_arch_profile:

Application

Tag_ARM_ISA_use:

Yes

Tag_THUMB_ISA_use:

Thumb-2

Tag_FP_arch:

VFPv3

Tag_Advanced_SIMD_arch:

NEONv1

Tag_ABI_PCS_wchar_t:

4

Tag_ABI_FP_denormal:

Needed

Tag_ABI_FP_exceptions:

Needed

Tag_ABI_FP_number_model:

IEEE 754

Tag_ABI_align_needed:

8-byte

Tag_ABI_align_preserved:

8-byte, except leaf SP

Tag_ABI_enum_size:

int

Tag_ABI_HardFP_use:

SP and DP

Tag_ABI_VFP_args:

VFP registers

Tag_DIV_use:

Not allowed

采用的是Tag_ABI_VFP_args:

VFP registers ,已经采用硬浮点了。

软浮点交叉编译方法:

arm-linux-gcc

-o teset_soft test.c 并且使用arm-linux-readelf -A

test_soft查看,如下:

Attribute

Section: aeabi

File

Attributes

Tag_CPU_name:

"ARM10TDMI"

Tag_CPU_arch:

v5T

Tag_ARM_ISA_use:

Yes

Tag_THUMB_ISA_use:

Thumb-1

Tag_ABI_PCS_wchar_t:

4

Tag_ABI_FP_denormal:

Needed

Tag_ABI_FP_exceptions:

Needed

Tag_ABI_FP_number_model:

IEEE 754

Tag_ABI_align_needed:

8-byte

Tag_ABI_align_preserved:

8-byte, except leaf SP

Tag_ABI_enum_size:

int

Tag_DIV_use:

Not allowed

未使用VFP

测试结果:

进行10亿次加减乘除运算,硬浮点时间为1分34.8

软浮点时间为4分19.7。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值