是armhf,还是armel?
本文译至: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?的更多相关文章
- armel和armhf区别
出于低功耗.封装限制等种种原因,之前的一些ARM架构处理器因为内部资源宝贵,加入浮点运算单元是十分奢侈的,因为需要额外的软件实现.之前的ARM处理器架构是什么样的?(http://www.cnblog ...
- 0x00-Kali Linux 系列入门篇
Kali Linux介绍篇 Kali Linux 官网:https://www.kali.org/ Kali Linux 前身是著名渗透测试系统BackTrack ,是一个基于 Debian 的 Li ...
- 【转帖】ARM的两种不同的CPU docker 应该也是支持arm的
armel和armhf区别选择 知识经验 3年前 (2014-11-07) 20603浏览 1评论 目录 fpu单元 armel与armhf 安装armel和armhf arm-linux-gn ...
- Docker inside Docker 基于 Alpine Linux
Study From https://hub.docker.com/_/docker/ 感慨一句 这些人真牛B .. 简单测试 拉取镜像 docker pull docker:dind 运行镜像 do ...
- Kali Linux介绍篇
Kali Linux 官网:https://www.kali.org/ Kali Linux 前身是著名渗透测试系统BackTrack ,是一个基于 Debian 的 Linux 发行版,包含很多安全 ...
- armel、armhf和arm64
1 这些名词是什么的缩写 1.1 armel 是arm eabi little endian的缩写.eabi是软浮点二进制接口,这里的e是embeded,是对于嵌入式设备而言. 1.2 armhf 是 ...
- [转帖]armel、armhf和arm64
armel.armhf和arm64 转帖 1 这些名词是什么的缩写 1.1 armel 是arm eabi little endian的缩写.eabi是软浮点二进制接口,这里的e是embeded,是对 ...
- 瞎折腾实录:构建 Armel 版本的 .NET Core 教程和资料资源
目录 首先我要说明,我失败了~ 我把我的进度和经验放出来,希望能够帮助别人完成编译工作~ 背景:最近接手一个华为某型号的嵌入式设备,需要在上面搭建 .NET Core 环境. 设备是 Armel 架构 ...
- qemu ubuntu for zynq(armhf)
apt-get install qemu-user-static qemu-system mkdir qemu-ubuntu qemu-debootstrap --arch=armhf trusty ...
随机推荐
- vue2.0页面缓存和不缓存的方法
// 模板中: <div class="home"> <keep-alive> <router-view v-if="$route.meta ...
- Android MediaPlayer播放raw资源封装类
import android.content.Context; import android.media.MediaPlayer; import xxxx.R; public class MediaU ...
- 使用 Topshelf 结合 Quartz.NET 创建 Windows 服务
Ø 前言 之前一篇文章已经介绍了,如何使用 Topshelf 创建 Windows 服务.当时提到还缺少一个任务调度框架,就是 Quartz.NET.而本文就展开对 Quartz.NET 的研究,以 ...
- 三十八、Linux 线程——线程属性初始化、销毁、设置和获得分离属性
38.1 线程属性初始化和销毁 #include <pthread.h> int pthread_attr_init(pthread_attr_t *attr); int pthread_ ...
- mysql load_file在数据库注入中使用
load_file函数只有满足两个条件就可以使用: 1.文件权限:chmod a+x pathtofile 2.文件大小: 必须小于max_allowed_packet 例子: select load ...
- 【省时的 IDEA 配置 】 JRebel Mybatis Problems Spring Auto-Scan
在 Java Web 开发中, 一般更新了 Java 文件后要手动重启 Tomcat 服务器, 才能生效, 浪费不少生命啊, 自从有了 JRebel 这神器的出现, 不论是更新 class 类还是更新 ...
- 【bzoj 3110】[Zjoi2013]K大数查询
Description 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c.如果是2 a b c形式,表示询问从第a个位置到第b个位 ...
- Debian Security Advisory(Debian安全报告) DSA-4415-1 passenger security update
Debian Security Advisory(Debian安全报告) DSA-4415-1 passenger security update Package : passenger CVE I ...
- 第20月第17天 mvvm 多次点击push -ObjC
1. 响应式库EasyReact建成后,为了能使其得到更好的利用,更好地降低使用的理解和学习成本,臧成威老师又带领团队开发了基于响应式的MVVM框架:EasyMVVM. https://www.jia ...
- Factorized Hidden Variability Learning For Adaptation Of Short Duration Language Identification Models
基于因子分解的隐层变量学习,应用于短语句语种识别模型的自适应 LFVs(Language Feature Vectors,语种特征向量)[11],与BSVs(Bottleneck Speake ...