【背景】
看到有人问关于S3C2440de6410的CPU,关于FPU方面的配置。
现去查找整理一下。
【折腾过程】
1.关于crosstool-ng中的-march,-mcpu,-mtune的配置,可参考:
crosstool-ng中的配置参数:Architecture level, Emit assembly for CPU, Tune for CPU
2.关于-mfpu的配置可参考:
3.现在去研究S3C6410中的核心参数是啥:
先去搜:
s3c6410 vfp
找到:
http://www.samsung.com/global/business/semiconductor/file/media/s3c6410_datasheet_200804-0.pdf
可知:
s3c6410的内核是:
ARM1176ZJF 533/667MHz VFP/SIMD
4.而对于ARM1176ZJF,对应的再去搜:
ARM1176 vfp
找到:
1.4.2. Vector Floating-Point (VFP)
中的:
The VFP implements the ARM VFPv2 floating-point coprocessor instruction set. |
以及:
http://www.arm.com/zh/products/processors/classic/arm11/arm1176.php
找到:
ARM1176 架构 Dhrystone 性能 多核 ISA 支持 内存管理 调试和跟踪 |
和:
中的:
VFP 架构版本在 ARMv7 架构之前,VFP 代表用于矢量运算的矢量浮点架构。 对于许多应用来说,设置硬件浮点至关重要,并且硬件浮点可用作使用高级设计工具(如 MatLab、MATRIXx 和 LabVIEW)直接对系统建模和派生应用程序代码的片上系统 (SoC) 设计流程的一部分。在与 NEON™ 多媒体处理功能结合使用时,可增强图像应用程序的性能(如缩放、2D 和 3D 转换、字体生成和数字过滤)。 迄今为止,VFP 主要有三个版本:
|
5.其他一些参考资料:
http://en.wikipedia.org/wiki/List_of_Samsung_System_on_a_Chip
中的:
|
6.【后记 2015-03-30】
又看到别人问类似的问题:
ARM11(S3C6410)平台上如何使用浮点运算?- 知乎
然后找资料期间,找到了相关的帖子:
其中介绍了,关于
-mfloat-abi=softfp
和
-mfloat-abi=hard
的区别。
7.更多相关内容,详见:
ArmHardFloatPort/VfpComparison – Debian Wiki
ARM and Keil Tools: ARM Cortex-A Processors and… | ARM Connected Community
【总结】
1.S3C6410内核是ARM1176ZJF
2.ARM11的内核是ARMv6架构
3.ARM1176ZJF的ARMv6中用的FPU是VFPv2
对应着:
gcc中的选项是:
参考:
中的:
-march=armv6
-mcpu=arm1176jzf-s
-mtune=s3c6410
或者是:
(参考:[Clfs-support] Target specific options…)
-mtune=arm1176jzf-s
对应fpu的配置,应该是:
(由于3.17.3 ARM Options中没有看到vfpv2,而且网上搜
-mfpu=vfp
在另外,应该是:
-mfloat-abi=hard
或:
(参考:Android.mk)
-mfloat-abi=softfp
即可。
其中:
【-mfloat-abi和mfpu参数的含义】
- -mfloat-abi:决定了采用何种ABI->即内部的参数传递和(调用函数后的)结果的返回的方式和规则->ARM中最常用的是:新的用AAPCS,而旧的是用其他方式。
- 软件模拟浮点:没有硬件浮点计算单元。采用软件模拟浮点运算。通过调用相关的库函数去模拟实现浮点运算。
- 猜测:估计对应的配置是 -mfpu=none和-mfloat-abi=softfp
- -mfloat-abi=softfp:有硬件浮点计算单元,但用的是soft-float ABI;编译器产生VFP浮点指令集。但是浮点计算结果返回值调用方式是采用和传统的软件浮点一样的方式。
- -mfloat-abi=hard:有硬件浮点计算单元,但用的是VFP ABI,算是AAPCS的VFP变体;浮点计算的参数和结果的返回值采用VFP寄存器返回,使得浮点计算更快。
- -mfpu:决定了硬件浮点单元是什么。常见的值有
- none:没有硬件浮点计算单元
- vfp:之前的一些ARM芯片的硬件浮点计算单元
- neon:一些新的ARM芯片的内置的硬件浮点计算单元,对应的是VFPv3
转载请注明:在路上 » 【记录】查找关于S3C6410中的中的-march,-mcpu,-mtune以及-mfpu和-mfloat-abi