本文译至:https://blogs.oracle.com/jtc/entry/is_it_armhf_or_armel

ARM处理器有各种品牌和规格,其中一部分的原因涉及到市场问题,成本,大小和功耗的要求是非常宝贵的。在这个前提下,甚至包含一个浮点单元也被认为是不必要的奢侈品。为了在这些处理器上执行浮点运算,软件模拟是必需的。 

更高端的ARM处理器都捆绑浮点运算硬件的附加功能。这两种架构之间的差异产生了针对ARM的两个不同的EABI(嵌入式应用程序二进制接口):软浮点和VFP(向量浮点)。虽然在软硬浮点之间具备前向兼容性,但不存在后向兼容性。事实上,当为ARM嵌入式Java SE提供二进制文件时,Oracle提供了两个独立的选择:一个软浮点二进制和一个VFP二进制。在Linux社区,基于这两个EABI的发布均称为是基于armel发布的。 

进入armhf后,虽然在性能上迈出了一大步,但VFP EABI在浮点运算时使用了非最优的参数传递方式。在这种情况下,浮点参数在浮点运算单元执行之前必须首先通过整数寄存器传递。新EABI,指的是armhf优化了调用约定,将参数直接传递到浮点寄存器浮点运算。它还包括一个更有效的系统调用约定。最终的结果是用armhf标准编译的程序在一些情况下表现出一定的性能改善,而在浮点密集型应用程序上表现出显著的改进。

同时,armhf代表了另一种二进制不兼容的标准,但是在社区已经获得了相当的牵引力。虽然还相对较早,但从armel到armhf的过渡正在进行中。事实上,Ubuntu已经已经宣布,未来的版本将只构建在armhf标准之上,并有效地淘汰armel。正如Henrik Stahl的博客提到的,Java SE Embedded的一个armhf版本正在进行中,我们已经完成了以基于armhf的JDK8 JavaFX 开发者预览版。 

在此期间,我们将不得不面对armel和armhf之间的不兼容问题。最近,我们已经看到了一些轻率的错误尝试,他们试图在基于armhf 的Linux发行版上运行的ARMv7 VFP的Java SE Embedded。 在诊断过程中,问题就变成了,我怎么能确定我的Linux发行版是基于armel或是armhf?原来这不是像人们想象的那样简单。除了经验和传闻,来确定你是否在armel或armhf运行的一种可能的方式是运行以下晦涩的命令:

pi@raspberrypi:~$ readelf -A /proc/self/exe | grep Tag_ABI_VFP_args

Tag_ABI_VFP_args: VFP registers

如果找到Tag_ABI_VFP_args标签,那么你是在一个armhf系统上运行。如果没有返回,那么它是armel。

为了向你展示一个例子,这里有一个运行Raspbian发行版的树莓派上的结果: 

pi@raspberrypi:~$ readelf -A /proc/self/exe | grep Tag_ABI_VFP_args
  Tag_ABI_VFP_args: VFP registers

这表示是一个armhf发行版,这实际上就是Raspbian。

在原有的,软浮点Debian Wheezy 发行版上,结果如下:

pi@raspberrypi:~$ readelf -A /proc/self/exe | grep Tag_ABI_VFP_args
没有返回表明这的确是armel。 

参考链接:http://blog.csdn.net/robertsong2004/article/details/38776457

是armhf,还是armel?的更多相关文章

  1. armel和armhf区别

    出于低功耗.封装限制等种种原因,之前的一些ARM架构处理器因为内部资源宝贵,加入浮点运算单元是十分奢侈的,因为需要额外的软件实现.之前的ARM处理器架构是什么样的?(http://www.cnblog ...

  2. 0x00-Kali Linux 系列入门篇

    Kali Linux介绍篇 Kali Linux 官网:https://www.kali.org/ Kali Linux 前身是著名渗透测试系统BackTrack ,是一个基于 Debian 的 Li ...

  3. 【转帖】ARM的两种不同的CPU docker 应该也是支持arm的

    armel和armhf区别选择 知识经验  3年前 (2014-11-07)  20603浏览  1评论 目录 fpu单元 armel与armhf 安装armel和armhf arm-linux-gn ...

  4. Docker inside Docker 基于 Alpine Linux

    Study From https://hub.docker.com/_/docker/ 感慨一句 这些人真牛B .. 简单测试 拉取镜像 docker pull docker:dind 运行镜像 do ...

  5. Kali Linux介绍篇

    Kali Linux 官网:https://www.kali.org/ Kali Linux 前身是著名渗透测试系统BackTrack ,是一个基于 Debian 的 Linux 发行版,包含很多安全 ...

  6. armel、armhf和arm64

    1 这些名词是什么的缩写 1.1 armel 是arm eabi little endian的缩写.eabi是软浮点二进制接口,这里的e是embeded,是对于嵌入式设备而言. 1.2 armhf 是 ...

  7. [转帖]armel、armhf和arm64

    armel.armhf和arm64 转帖 1 这些名词是什么的缩写 1.1 armel 是arm eabi little endian的缩写.eabi是软浮点二进制接口,这里的e是embeded,是对 ...

  8. 瞎折腾实录:构建 Armel 版本的 .NET Core 教程和资料资源

    目录 首先我要说明,我失败了~ 我把我的进度和经验放出来,希望能够帮助别人完成编译工作~ 背景:最近接手一个华为某型号的嵌入式设备,需要在上面搭建 .NET Core 环境. 设备是 Armel 架构 ...

  9. qemu ubuntu for zynq(armhf)

    apt-get install qemu-user-static qemu-system mkdir qemu-ubuntu qemu-debootstrap --arch=armhf trusty ...

随机推荐

  1. Nginx 学习笔记(六)引入线程池 性能提升9倍

    原文地址:https://www.cnblogs.com/shitoufengkuang/p/4910333.html 一.前言 1.Nignx版本:1.7.11 以上 2.NGINX采用了异步.事件 ...

  2. MVC Repository模式

    近来发现很多ASP.NET MVC的例子中都使用了Repository模式,比如Oxite,ScottGu最近发布的免费的ASP.NET MVC教程都使用了该模式.就简单看了下. 在<企业架构模 ...

  3. [Android] [putty连接Android设备] [Android设备网络调试]

    file: system/core/adb/adb.c line: 921 /* for the device, start the usb transport if the ** android u ...

  4. SQL Server进阶 遍历表的几种方法

    https://www.cnblogs.com/mcgrady/p/4182486.html

  5. IDEA导入JUnit4

    Step 1. IDEA最上面一栏的菜单栏中,选File->Project Structure(从上往下第11个),弹出窗口左边有一个列表,选Module. Step 2. 右侧有一个带3个标签 ...

  6. HTTP 返回状态码

    一.HTTP 超文本传输协议 HTTP 是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议. 一个HTTP "客户端"是一个应用程 ...

  7. IIS服务器的安全保护措施

    转载自:https://www.williamlong.info/archives/118.html 部分内容做了修改. 通过标注Web服务器安全级别以及可用性的安全策略,网络管理员将能够从容地在不同 ...

  8. pycharm活动模板

    1.复制模板内容 2.文件设置: 点击+号:

  9. luogu P5234 [JSOI2012]越狱老虎桥

    传送门 题目要求割掉一条边后使得图不连通,那么可以使用tarjan算法求出所有的割边,然后把边双缩成点,就能得到一棵树,现在问题是在加入一条边的情况下,割掉最小的一条边使得图不连通,割掉的这条边权值最 ...

  10. Ant使用指南

    ant 使用指南  参考:http://www.cnblogs.com/hoojo/archive/2013/06/14/java_ant_project_target_task_run.html 一 ...