是armhf armel,还是armel

Linux(73)
出于低功耗、封装限制等种种原因,之前的一些ARM架构处理器因为内部资源宝贵,加入浮点运算单元是十分奢侈的,因为需要额外的软件实现。随着技术发展,目前高端的ARM处理器已经具备了硬件执行浮点操作的能力。这样新旧两种架构之间的差异,就产生了两个不同的嵌入式应用程序二进制接口(EABI)——软浮点与矢量浮点(VFP)。但是软浮点(soft float)和硬浮点(hard float)之间有向前兼容却没有向后兼容的能力,也就是软浮点的二进制接口(EABI)仍然可以用于当前的高端ARM处理器。
在ARM体系架构内核中,有些有浮点运算单元(fpu),有些没有。对于没有fpu内核,是不能使用armel和armhf的。在有fpu的情况下,就可以通过gcc的选项-mfloat-abi来指定使用哪种,有如下三种值:
soft:不用fpu计算,即使有fpu浮点运算单元也不用。armel:也即softfp,用fpu计算,但是传参数用普通寄存器传,这样中断的时候,只需要保存普通寄存器,中断负荷小,但是参数需要转换成浮点的再计算。armhf:也即hard,用fpu计算,传参数用fpu中的浮点寄存器传,省去了转换性能最好,但是中断负荷高。
kernel、rootfs和app编译的时候,指定的必须保持一致才行。
使用softfp模式,会存在不必要的浮点到整数、整数到浮点的转换。而使用hard模式,在每次浮点相关函数调用时,平均能节省20个CPU周期。对ARM这样每个周期都很重要的体系结构来说,这样的提升无疑是巨大的。
在完全不改变源码和配置的情况下,在一些应用程序上,虽然armhf比armel硬件要求(确切的是指fpu硬件)高一点,但是armhf能得到20-25%的性能提升。对一些严重依赖于浮点运算的程序,更是可以达到300%的性能提升。
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的编译。
安装armel和armhf
以上就是armel与armhf的比较。相信大家也应该有个大概的了解了。在Ubuntu系统下,如何根据需求分别实现两种交叉编译器的安装呢?
arm-linux-gnueabi的安装
sudo apt-get install gcc-arm-linux-gnueabi
按操作下载即可,没啥好说的。
&arm-linux-gnueabihf的安装
两种方法,
linaro开源组织有相关的交叉工具链下载,点击进入网页选择下载即可,地址:。到本站工具链页面下载,地址:。
然后就是解压到自定义目录中,并添加bin环境变量。
armhf 使用
armhf的开启需要硬件的支持,在Debian的wiki上要求ARMv7 CPU、Thumb-2指令集以及VFP3D16浮点处理器。
在gcc的编译参数上,使用-mfloat-abi=hard -mfpu=vfp即可。
在工具上,CodeSourcery最早支持hard模式。或者,也可已自己编译工具链。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2457330次
积分:21542
积分:21542
排名:第301名
原创:75篇
转载:1074篇
评论:293条
(3)(2)(9)(22)(18)(25)(67)(31)(32)(27)(56)(13)(12)(8)(33)(32)(36)(12)(34)(42)(30)(17)(11)(3)(5)(11)(18)(17)(13)(17)(7)(6)(27)(19)(47)(1)(19)(11)(2)(1)(25)(20)(10)(6)(2)(8)(3)(10)(9)(6)(4)(15)(7)(2)(7)(8)(50)(14)(11)(26)(20)(4)(1)(5)(14)(12)(4)(4)(3)(2)(4)(2)(4)(1)(1)(1)(3)(2)(11)(3)(8)(15)(2)(1)博客访问: 3868862
博文数量: 1023
博客积分: 19333
博客等级: 上将
技术积分: 11167
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 嵌入式
armel和armhf指得是arm体系中有fpu(浮点运算单元)的,有的arm没有fpu,则不能有armel和armhf两种使用fpu的方式了。armhf比armel硬件要求(确切的是指fpu硬件)高一点。如果fpu硬件,达到要求的标准了就可以通过gcc的选项-mfloat-abi来指定使用哪种,如下三种值:soft是不用​fpu计算,即使有fpu浮点运算单元也不用。armel是softfp,用fpu计算,但是传参数用普通寄存器传,这样中断的时候,只需要保存普通寄存器,中断负荷小,但是参数需要转换成浮点的再计算。armhf是hard,用fpu计算,传参数用fpu中的浮点寄存器传,省去了转换性能最好,但是中断负荷高。kernel rootfs app编译的时候,指定的必须一直才行。参考:
阅读(15529) | 评论(0) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。6732人阅读
编译器(13)
本文译至:
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。&
非常感谢参与本次树莓派论坛主题的人们提供了这个建议。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1716829次
积分:23054
积分:23054
排名:第257名
原创:432篇
转载:1009篇
译文:146篇
评论:73条
(24)(19)(20)(10)(22)(51)(22)(1)(1)(17)(9)(11)(65)(8)(29)(27)(1)(6)(32)(57)(29)(8)(3)(37)(89)(109)(51)(165)(92)(105)(220)(171)(34)(6)(19)(4)(1)(8)(6)(1)(1)Package: clementineVersion: 0.7.1+dfsg-2Justification: ftbfsSeverity: seriousTags: patchHi,clementine FTBFS on armel, armfg and sh4.- armelhttps://buildd.debian.org/status/fetch.php?pkg=clementine&arch=armel&ver=0.7.1%2Bdfsg-2&stamp=- armhfhttp://buildd.debian-ports.org/status/fetch.php?pkg=clementine&arch=armhf&ver=0.7.1%2Bdfsg-2&stamp=- sh4http://buildd.debian-ports.org/status/fetch.php?pkg=clementine&arch=sh4&ver=0.7.1%2Bdfsg-2&stamp=----/build/buildd-clementine_0.7.1+dfsg-2-armel-Txwhgu/clementine-0.7.1+dfsg/src/widgets/nowplayingwidget.cpp:344:49:error: ISO C++ says that these are ambiguous, even though the worstconversion for the first is better than the worst conversion for thesecond: [-Werror]/usr/include/qt4/QtCore/qglobal.h:1893:20: note: candidate 1: boolqFuzzyCompare(double, double)/usr/include/qt4/QtCore/qglobal.h:1898:20: note: candidate 2: boolqFuzzyCompare(float, float)cc1plus: all warnings being treated as errors----I created a patch which revise this problem.Could you check and apply this patch?Best regards,Nobuhiro-- System Information:Debian Release: wheezy/sidAPT prefers unstableAPT policy: (500, 'unstable')Architecture: amd64 (x86_64)Kernel: Linux 2.6.39-2-amd64 (SMP w/2 CPU cores)Locale: LANG=ja_JP.UTF-8, LC_CTYPE=ja_JP.UTF-8 (charmap=UTF-8)Shell: /bin/sh linked to /bin/bash--Nobuhiro Iwamatsu
iwamatsu at {nigauri.org / debian.org}
GPG ID: 40AD1FA6
Raw Message
Your message dated Thu, 04 Aug :13 +0000with message-id &E1Qoukn-000119-***@franck.debian.org&and subject line Bug#636001: fixed in clementine 0.7.1+dfsg-2.1has caused the Debian Bug report #636001,regarding clementine: FTBFS in qFuzzyCompare on armel, armhf and sh4to be marked as done.This means that you claim that the problem has been dealt with.If this is not the case it is now your responsibility to reopen theBug report if necessary, and/or fix the problem forthwith.(NB: If you are a system administrator and have no idea what thismessage is talking about, this may indicate a serious mail systemmisconfiguration somewhere. Please contact ***@bugs.debian.orgimmediately.)--636001: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=636001Debian Bug Tracking SystemContact ***@bugs.debian.org with problems
Loading...

我要回帖

更多关于 armel armhf 树莓派 的文章

 

随机推荐