码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-04-11 22:13:16      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:section   size   attribute   时间   normal   lin   实现   name   arch   

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),其它板卡请酌情参考使用,具体实现操作步骤如下:

硬浮点交叉编译方法为

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。

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

标签:section   size   attribute   时间   normal   lin   实现   name   arch   

原文地址:https://blog.51cto.com/14771125/2486527

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!