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

本文介绍了如何在i.MX6UltraLite(i.MX6UL)平台上实现硬浮点和软浮点运算。通过交叉编译设置,如使用`-mfloat-abi=hard`参数实现硬浮点,利用VFPv3和NEON技术提高处理速度;而软浮点则不使用VFP。在性能测试中,硬浮点运算比软浮点快约三倍,硬浮点用时1分34.8秒,软浮点用时4分19.7秒。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

i.MX 6UltraLite(简称为i.MX 6UL)是i.MX6系列的新产品。i.MX 6UltraLite采用单核ARM Cortex-A7,处理器主频528MHz,采用NEON技术加速多媒体和信号处理算法,具有浮点运算单元。适合于物联网,电子支付,智能家居,能源管理等领域。

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

本次开发使用的硬件平台为飞凌嵌入式OKMX6UL-C开发板,其它板卡请酌情参考使用,具体实现操作步骤如下:

05cbf54500dd7bee343878b9b5f4d04f.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、付费专栏及课程。

余额充值