armhf/arm64/aarch64 是什么
armhf/arm64/aarch64
问题背景:2020年暑假的时候使用树莓派的时候当时下载Ubuntu mate的时候就有选择32位或64位,当时不明所以但是觉得自己电脑是64位就理所应当的选择了64,而最近实习的时候接触到了NVIDIA Jetson Nano(主要是teamviewer安装失败是因为架构不支持所以就又想深入一下了解为什么以及怎样去支持)
直到现在2021/1/6又回想起这个问题,就深入查了一下
首先是关于树莓派4B的特点:参考网址 Raspberry Pi 4 Tech Specs
树莓派4B中文简介:具体来说,树莓派4的核心处理器(SoC)为博通BCM2711(四核1.5GHz,CortexA72架构,树莓派3是四核A53),LPDDR4内存,由5V/3AUSB-C供电或GPIO5V
- Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz
- 2GB, 4GB or 8GB LPDDR4-3200 SDRAM (depending on model)
- 2.4 GHz and 5.0 GHz IEEE 802.11ac wireless, Bluetooth 5.0, BLE Gigabit Ethernet
- 2 USB 3.0 ports; 2 USB 2.0 ports.
- Raspberry Pi standard 40 pin GPIO header (fully backwards compatible with previous boards)
- 2 × micro-HDMI ports (up to 4kp60 supported)
- 2-lane MIPI DSI display port
- 2-lane MIPI CSI camera port
- 4-pole stereo audio and composite video port
- H.265 (4kp60 decode), H264 (1080p60 decode, 1080p30 encode)
- OpenGL ES 3.0 graphics
- Micro-SD card slot for loading operating system and data storage
- 5V DC via USB-C connector (minimum 3A*)
- 5V DC via GPIO header (minimum 3A*)
- Power over Ethernet (PoE) enabled (requires separate PoE HAT)
- Operating temperature: 0 – 50 degrees C ambient
接着是NVIDIA Jetson nano的特性:
- GPU 128-core Maxwell
- CPU Quad-core ARM A57 @ 1.43 GHz
- Memory 4 GB 64-bit LPDDR4 25.6 GB/s-
- Storage microSD (not included)
- Video Encode 4K @ 30 | 4x 1080p @ 30 | 9x 720p @ 30 (H.264/H.265)
- Video Decode 4K @ 60 | 2x 4K @ 30 | 8x 1080p @ 30 | 18x 720p @ 30 (H.264/H.265)
- Camera 2x MIPI CSI-2 DPHY lanes
- Connectivity Gigabit Ethernet, M.2 Key E
- Display HDMI and display port
- USB 4x USB 3.0, USB 2.0 Micro-B
- Others GPIO, I2C, I2S, SPI, UART
- Mechanical 69 mm x 45 mm, 260-pin edge connector
怎样子是怎么看出支持32/64位呢?2011年11月,ARM公司发布了新一代处理器架构ARMv8的部分技术细节。这是ARM公司的首款支持64位指令集的处理器架构,引自:百度百科ARM v8
ARM Cortex-A系列(A53、A57、A73等)处理器性能分类与对比
armhf与arm64的不同
armhf
stands for "arm hard float", and is the name given to a debian port for arm processors (armv7+) that have hardware floating point support.
On the beaglebone black, for example:
:~$ dpkg --print-architecture
armhf
Although other commands (such as uname -a
or arch
) will just show armv7l
:~$ cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 2 (v7l)
BogoMIPS : 995.32
Features : half thumb fastmult vfp edsp thumbee neon vfpv3 tls
...
The vfpv3
listed under Features is what refers to the floating point support.
Incidentally, armhf
, if your processor supports it, basically supersedes Raspbian, which if I understand correctly was mainly a rebuild of armhf
with work arounds to deal with the lack of floating point support on the original raspberry pi's. Nowdays, of course, there's a whole ecosystem build up around Raspbian, so they're probably not going to abandon it. However, this is partly why the beaglebone runs straight debian, and that's ok even if you're used to Raspbian, unless you want some of the special included non-free software such as Mathematica.
引用:stackoverflow: What is difference between arm64 and armhf?
Nano这边的系统是:NVIDIA论坛回答
That is correct, the Ubuntu 18.04 user space and Linux kernel architecture is aarch64 / arm64 (64-bit).
arm64 vs. aarch64
AArch64 is the 64-bit state introduced in the Armv8-A architecture. The 32-bit state which is backwards compatible with Armv7-A and previous 32-bit Arm architectures is referred to as AArch32. Therefore the GNU triplet for the 64-bit ISA is aarch64. The Linux kernel community chose to call their port of the kernel to this architecture arm64 rather than aarch64, so that's where some of the arm64 usage comes from.
As far as I know the Apple backend for aarch64 was called arm64 whereas the LLVM community-developed backend was called aarch64 (as it is the canonical name for the 64-bit ISA) and later the two were merged and the backend now is called aarch64.
So aarch64 and arm64 refer to the same thing.
Google翻译:AArch64是Armv8-A架构中引入的64位状态。 向后兼容Armv7-A和先前的32位Arm架构的32位状态称为AArch32。 因此,用于64位ISA的GNU三元组是aarch64。 Linux内核社区选择将其内核端口称为该体系结构arm64,而不是aarch64,因此这是一些arm64用法的来源。
据我所知,用于aarch64的Apple后端称为arm64,而LLVM社区开发的后端称为aarch64(因为它是64位ISA的规范名称),后来将两者合并,现在的后端称为aarch64
因此aarch64和arm64指的是同一件事
那问题来了:为什么.... teamviewer不支持aarch64呢?如果和arm64是同一个东西的话?Jetson Nano上的Teamviewer:CheckCPU:未知体系结构aarch64 就算是这样改了也是无用的
官方的teamviewer人员回复:For now, we do not have an aarch64 version of the TeamViewer Host.
ARM,AMD,X86,AArch64的概念
AMD
中文名(超威)超微半导体,是除了英特尔以外最大的x86架构微处理供应商,也是除了英伟达以外仅有的独立图形处理供应商。
x86
泛指一系列由英特尔公司开发的处理器的架构,最早为1978年面世的“Intel 8086”CPU。早期的处理器均是以此格式来命名,如Intel 8086,80186,80286,80386,80486,这些架构被统称为x86。由于数字不能被注册成为商标,因此公司每当有新的处理器使用,均会采用可注册的名称,如Pentium。
基于x86的32位架构(常被称为i386,x86),IA-32,而基于x86的64位架构,x86-64常称为AMD64或Intel64。最早是由AMD公司首先根据x86的架构生产出了64位的处理器,但是由于是竞争关系,Intel公司不愿意承认AMD64,近些年才推出了Intel64
ARM
英文为Advanced RISC Machine,或Acorn RISC Machine,也是一个架构,非常适用于移动通信这种低成本,高性能,低耗电的领域。ARM的公司为安谋控股(ARM Holding plc),又称为ARM公司,总部位于剑桥的设计与软件公司,现在已被日本的软银公司收购,后者同时也是国内互联网巨头阿里巴巴的最大股东。
AArch64是ARMv8的一种执行状态。
为了更广泛地向企业领域推进,需要引入 64 位构架,同时也需要在 ARMv8 架构中引入新的 AArch64 执行状态。
AArch64
不是一个单纯的 32 位 ARM 构架扩展,而是 ARMv8 内全新的构架,完全使用全新的 A64 指令集。这些都源自于多年对现代构架设计的深入研究。更重要的是, AArch64 作为一个分离出的执行状态,意味着一些未来的处理器可能不支持旧的 AArch32 执行状态。
虽然最初的 64 位 ARM 处理器将会完全向后兼容,但我们大胆且前瞻性地将 AArch64 作为在 ARMv8 处理器中唯一的执行状态。我们在这些系统中将不支持 32 位执行状态, 这将使许多有益的实现得到权衡,如默认情况下,使用一个较大的 64K 大小的页面,并会使得纯净的 64 位 ARM 服务器系统不受遗留代码的影响。立即进行这种划分是很重要的,因为有可能在未来几年内将出现仅支持 64 位的服务器系统。没有必要在新的 64 位架构中去实现一个完整的 32 位流水线,这将会提高未来 ARM 服务器系统的能效。
这样回想起来, AArch64 作为在 Fedora ARM 项目中被支持的 ARM 构架是一个很自然的过程: armv5tel、armv7hl、aarch64。新的架构被命名为:aarch64,这同 ARM 自己选择的主线命名方式保持一致,同时也考虑到了 ARM 架构名与 ARM 商标分开的期望。
作者:赏金Micheal
链接:https://www.jianshu.com/p/2753c45af9bf
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
在linux系统终端下输入,可得输出结果与架构对应表
uname -m
架构 | 输出结果 |
---|---|
i386 | i386, i686 |
amd64 | x86_64 |
arm | arm, armv7l |
arm64 | aarch64, armv8l |
mips | mips |
mips64 | mips64 |
等等等 | alpha, arc, blackfin, c6x, cris, frv, h8300, hexagon, ia64, m32r, m68k, metag, microblaze, mn10300, nios2, openrisc, parisc, parisc64, ppc, ppcle, ppc64, ppc64le, s390, s390x, score, sh, sh64, sparc, sparc64, tile, unicore32, xtensa |
2017-08-14-ubuntu-16.04-mate-desktop-beta-aarch64-bpi-m64-sd-emmc.img
# dpkg --add-architecture armhf
# apt update
# apt-get install libxtst6:armhf
# dpkg -i teamviewer-host_armhf.deb
# apt install -f
# teamviewer --daemon enable
后面有了解到其他的远程操作软件可以在树莓派与Nano上使用,官网:www.todesk.com
更多了解: