http://www.crifan.com/find_s3c6410_march_macpu_mtune_mfpu_mfloat_abi/
【背景】
看到有人问关于S3C2440de6410的CPU,关于FPU方面的配置。
现去查找整理一下。
【折腾过程】
1.关于crosstool-ng中的-march,-mcpu,-mtune的配置,可参考:
crosstool-ng中的配置参数:Architecture level, Emit assembly for CPU, Tune for CPU
2.关于-mfpu的配置可参考:
crosstool-ng中的配置参数:浮点处理单元FPU
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 支持
内存管理 调试和跟踪 |
和:
ARM 浮点架构 (VFP)
中的:
VFP 架构版本在 ARMv7 架构之前,VFP 代表用于矢量运算的矢量浮点架构。 对于许多应用来说,设置硬件浮点至关重要,并且硬件浮点可用作使用高级设计工具(如 MatLab、MATRIXx 和 LabVIEW)直接对系统建模和派生应用程序代码的片上系统 (SoC) 设计流程的一部分。在与NEON™ 多媒体处理功能结合使用时,可增强图像应用程序的性能(如缩放、2D 和 3D 转换、字体生成和数字过滤)。 迄今为止,VFP 主要有三个版本:
|
5.其他一些参考资料:
http://en.wikipedia.org/wiki/List_of_Samsung_System_on_a_Chip
中的:
|
【总结】
1.S3C6410内核是ARM1176ZJF
2.ARM11的内核是ARMv6架构
3.ARM1176ZJF的ARMv6中用的FPU是VFPv2
对应着:
gcc中的选项是:
参考:
3.17.3 ARM Options
中的:
-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
即可。