出于低功耗、封装限制等种种原因,以前的一些ARM处理器没有独立的硬件浮点运算单元,需要手写软件来实现浮点运算。

随着技术发展,现在高端的ARM处理器基本都具备了硬件执行浮点操作的能力。这样,新旧两种架构之间的差异,就产生了两个不同的嵌入式应用程序二进制接口(EABI)——软浮点与矢量浮点(VFP)。但是软浮点(soft float)和硬浮点(hard float)之间有向前兼容却没有向后兼容的能力,也就是软浮点的二进制接口(EABI)仍然可以用于当前的高端ARM处理器。

1 fpu单元

在ARM体系架构内核中,有些有浮点运算单元(fpu,floating point unit),如上图,有些没有。对于没有fpu内核,是不能使用armel和armhf的。在有fpu的情况下,就可以通过gcc的选项-mfloat-abi来指定使用哪种,有如下三种值:soft:不用​fpu计算,即使有fpu浮点运算单元也不用。

armel:(arm eabi little endian)也即softfp,用fpu计算,但是传参数用普通寄存器传,这样中断的时候,只需要保存普通寄存器,中断负荷小,但是参数需要转换成浮点的再计算。

armhf:(arm hard float)也即hard,用fpu计算,传参数用fpu中的浮点寄存器传,省去了转换性能最好,但是中断负荷高。

arm64:64位的arm默认就是hard float的,因此不需要hf的后缀。

kernel、rootfs和app编译的时候,指定的必须保持一致才行。使用softfp模式,会存在不必要的浮点到整数、整数到浮点的转换。而使用hard模式,在每次浮点相关函数调用时,平均能节省20个CPU周期。对ARM这样每个周期都很重要的体系结构来说,这样的提升无疑是巨大的。在完全不改变源码和配置的情况下,在一些应用程序上,虽然armhf比armel硬件要求(确切的是指fpu硬件)高一点,但是armhf能得到20-25%的性能提升。对一些严重依赖于浮点运算的程序,更是可以达到300%的性能提升。

2 armel与armhf之前EABI中,armel(低端ARM硬件,支持armv4以上版本),在执行浮点运算之前,浮点参数必须首先通过整数寄存器,然后传递到浮点运算单元。新的EABI ,也就是armhf,通过直接传递参数到浮点寄存器优化了浮点运算的调用约定。相比我们熟悉的armel,armhf代表了另一种不兼容的二进制标准。在一些社区的支持下,armhf目前已经得到了很大的发展。像Ubuntu,已经计划在之后的发行版中放弃armel,转而支持armhf编译的版本。正如目前依然很火热的Raspberry Pi(ARM11),由于ubuntu只支持armv7架构的编译,Raspberry Pi将不能直接安装ubuntu系统。而 BB Black(Cortex-A8)和 Cubietruct(Cortex-A7)则同时支持ubuntu的armel与armhf的编译。

3 安装armel和armhf

以上就是armel与armhf的比较。相信大家也应该有个大概的了解了。在Ubuntu系统下,如何根据需求分别实现两种交叉编译器的安装呢?

3.1 arm-linux-gnueabi的安装

sudo apt-get install gcc-arm-linux-gnueabi

按操作下载即可,没啥好说的。

3.2 arm-linux-gnueabihf的安装

两种方法:linaro开源组织有相关的交叉工具链下载,点击进入网页选择下载即可,地址:https://launchpad.net/linaro-toolchain-binaries。

到本站工具链页面下载,地址:http://www.veryarm.com/arm-linux-gnueabihf-gcc。

然后就是解压到自定义目录中,并添加bin环境变量。

4 armhf 使用

armhf的开启需要硬件的支持,在Debian的wiki上要求 ARMv7 CPU、Thumb-2 指令集以及 VFP3D16 浮点处理器。在 gcc 的编译参数上,使用 -mfloat-abi=hard -mfpu=vfp 即可。

在工具上,CodeSourcery最早支持hard模式。或者,也可已自己编译工具链。

armhf php环境搭建,armel、armhf 和 arm64 区别选择相关推荐

  1. panabit环境搭建及初始化

    panabit环境搭建及初始化 概述 1.Panabit 是基于 Linux 版本 FreeBSD 操作系统开发的流控系统,由北京派网软件公司研发. 2.具备集成路由.负载均衡.认证.一拖N检测.移动 ...

  2. 一次SDN控制器环境搭建之路

    一次SDN控制器环境搭建之路 目的 SDN控制器选择 目的 由于进行对比测试的需要 ,我决定选取一款开源的SDN控制器,搭建SDN网络.主要内容是基于开源SDN控制器+Mininet的方式进行Open ...

  3. ARM64+树莓派4b+JLINK仿真器实验环境搭建指南

    ARM64体系结构与编程,全球原创的ARM64实验,笨叔带队,等你哟! ARM64体系结构与编程-yx音频:00:00/00:20 奔跑吧第三季视频课程实验设备清单 硬件开发平台:树莓派4B (2G或 ...

  4. 全志JAVA_android 全志a10(2.3.4)开发1(编译环境搭建)

    android 全志a10(2.3.4)开发一(编译环境搭建) android系统编译可分为两部分:一部分是linux内核编译:另一部分是android源码编译:全文中主要是说明从搭建编译环境,安装编 ...

  5. TF-Lite极简参考-环境搭建

    TF-Lite极简参考-环境搭建 <TF-Lite极简参考-环境搭建>   TensorFlow Lite 是移动端计算机视觉应用程序中的明星产品,同为Google研发的产品,由于其和安卓 ...

  6. 安卓从入门到进阶第一篇(环境搭建)

    "转发,助力一波!" 1.1 系统配置 1.1.1 开发环境 我们平时使用的电脑环境,基本都是Windows操作系统,为了开发Android去将电脑装成Linux系统,显而易见不太 ...

  7. Go语言环境搭建详解(2020版)

    最近写了很多Go语言的原创文章,其中Go语言实战系列30篇,近15W字,还有最近更新的Go经典库系列,不过通过大家的咨询来看,还是想要一些入门的知识,这一篇文章写于2017年初,这3年多Go更新了很多 ...

  8. KubeEdge环境搭建(支持网络插件flannel)

    KubeEdge环境搭建 准备工作--K8s集群环境搭建 准备开始 配置国内镜像(仅amd64架构,如果是arm架构的不要更改镜像) 安装docker 安装K8s 初始化Master节点 网络插件安装 ...

  9. rk3568安卓11系统之开发环境搭建

    目录 前言 一.解压sdk 二.更新系统并安装依赖 1.更新系统 2.安装依赖 三.编译3568 sdk 1.准备编译环境 2.选择产品 3.IO-Domain GPIO电压配置 4.开始编译sdk ...

最新文章

  1. hashMap与arrayList,linkedList,hashTable的区别
  2. 求两个字符串的最长公共字串(连续)
  3. oracle删除orcl库_oracle删除数据文件
  4. 请设计输出实数的格式,包括:⑴一行输出一个实数;⑵一行内输出两个实数;⑶一行内输出三个实数。实数用quot;6.2fquot;格式输出。
  5. telnet发送socket报文_简单讲解一下Socket网络编程
  6. Redis 两种持久化方式的原理
  7. 十分钟理解Redux中间件
  8. python滤波器信号处理_详解利用Python scipy.signal.filtfilt() 实现信号滤波
  9. centos下Linux网易云音乐,CentOS7.5安装网易云音乐
  10. JDK8各个历史版本下载方法
  11. 智能网联(车联网)示范区发展现状分析—华南篇
  12. 电脑声音图标显示正常却没有声音,扬声器显示未插入
  13. 电驴服务器更新的作用,怎样更新eMule(电驴)服务器列表,有什么好处?
  14. 2013年计算机毕业生流向,2013年计算机专业应届毕业生自我鉴定
  15. c语言魔法阵原理,魔法阵构成理论及运行原理
  16. 在中国做量化交易一天的工作内容
  17. 用js给html添加样式
  18. 洛谷P1007——独木桥 解法 (C++)
  19. 非线性光纤光学_北京大学刘忠范院士/刘开辉教授等《自然·纳米技术》:光纤内二维材料的均匀生长实现超高非线性...
  20. VirtualBox - 利用虚拟显示屏调整屏幕大小,屏幕分辨率

热门文章

  1. Python Flask Web 第八课 —— request 请求对象
  2. [面试] 算法(八)—— 树
  3. utilities——比较与排序规则(C++)
  4. 标准模板库(STL)之 list 列传
  5. 逻辑思维与C/C++解题
  6. Python 基础——一张图告诉你PyCharm如何进行断点调试
  7. 为什么都建议学java而不是python-为什么都建议学Java而不是Python?两者有什么区别吗?...
  8. 零基础学python书籍-图书推荐:《零基础学Python(全彩版)》
  9. python基础语法手册-python语法手册
  10. python入门先学什么-学Python首先要学什么?