飞凌嵌入式 发表于 2017-12-29 13:23:09

如何在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),其它板卡请酌情参考使用,具体实现操作步骤如下:http://www.forlinx.com/UploadFiles/65954321.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: aeabiFile AttributesTag_CPU_name: "7-A"Tag_CPU_arch: v7Tag_CPU_arch_profile: ApplicationTag_ARM_ISA_use: YesTag_THUMB_ISA_use: Thumb-2Tag_FP_arch: VFPv3Tag_Advanced_SIMD_arch: NEONv1Tag_ABI_PCS_wchar_t: 4Tag_ABI_FP_denormal: NeededTag_ABI_FP_exceptions: NeededTag_ABI_FP_number_model: IEEE 754Tag_ABI_align_needed: 8-byteTag_ABI_align_preserved: 8-byte, except leaf SPTag_ABI_enum_size: intTag_ABI_HardFP_use: SP and DPTag_ABI_VFP_args: VFP registersTag_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: aeabiFile AttributesTag_CPU_name: "ARM10TDMI"Tag_CPU_arch: v5TTag_ARM_ISA_use: YesTag_THUMB_ISA_use: Thumb-1Tag_ABI_PCS_wchar_t: 4Tag_ABI_FP_denormal: NeededTag_ABI_FP_exceptions: NeededTag_ABI_FP_number_model: IEEE 754Tag_ABI_align_needed: 8-byteTag_ABI_align_preserved: 8-byte, except leaf SPTag_ABI_enum_size: intTag_DIV_use: Not allowed未使用VFP 测试结果:进行10亿次加减乘除运算,硬浮点时间为1分34.8 软浮点时间为4分19.7。

sjqlwy 发表于 2017-12-29 15:27:31

马一下,谢谢
页: [1]
查看完整版本: 如何在i.MX6UL平台上实现硬浮点与软浮点?