山高疑日近,海阔觉天低

Arm构架

一,Arm 构架

下面是常见的 ARM 架构 及其每个架构的常用 CPU 的表格。每个架构适应不同的市场需求,所包含的 CPU 核心也有所不同,具体如下:

ARM 架构版本 常见的 CPU 核心 应用领域 常见 SoC 示例
ARMv7-A Cortex-A8, Cortex-A9, Cortex-A7, Cortex-A15, Cortex-A17 智能手机、嵌入式设备、平板、汽车信息娱乐、电视、工业控制等 i.MX6ULL(NXP)<br> Allwinner A20
ARMv7-M Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7 低功耗微控制器、嵌入式设备、传感器、消费电子、家电、汽车等 STM32F103  Cortex-M3
STM32F4  Cortex-M4
ARMv8-A Cortex-A53, Cortex-A57, Cortex-A72, Cortex-A73, Cortex-A75, Cortex-A76, Cortex-A77, Cortex-A78 高性能智能手机、平板、嵌入式设备、服务器、数据中心、边缘计算、AI 加速等 RK3399(Rockchip)<br> Exynos 9810(Samsung)
ARMv8-M Cortex-M23, Cortex-M33 低功耗嵌入式系统、物联网设备、传感器、家电、可穿戴设备等 STM32L5
ARMv8-R Cortex-R4, Cortex-R5, Cortex-R7, Cortex-R8 实时处理系统、汽车控制、工业控制、航空电子设备 i.MX7(NXP)<br> Renesas R-Car
ARMv9-A Cortex-X1, Cortex-A78C, Cortex-A78, Cortex-A710 高性能计算、智能手机、汽车信息娱乐、5G 基站、AI 加速、云端服务器 Cortex-X1(用于高端定制芯片)<br> Exynos 2100(Samsung)
ARMv8.1-A Cortex-A72, Cortex-A73, Cortex-A76 虚拟化、高性能计算、增强安全性等 HiSilicon Kirin 970(Huawei)<br> Exynos 8890(Samsung)
ARMv8.2-A Cortex-A76, Cortex-A77 高效的浮点运算、增强的内存一致性、多核高效计算、服务器应用 Qualcomm Snapdragon 855<br> NVIDIA Jetson Xavier NX
ARMv8.3-A Cortex-A73, Cortex-A75 多核处理器应用、增强浮点运算、机器学习、云计算等 Qualcomm Snapdragon 845<br> MediaTek Dimensity 1000
ARMv9-R Cortex-R82 高可靠性实时应用、汽车、工业控制、航空电子 Renesas R-Car H3<br> i.MX 8X(NXP)

说明:

  1. ARMv7-A:适用于 32 位应用,例如一些较老的智能手机、嵌入式设备,尤其在多年前很流行。常见的 Cortex-A8 和 Cortex-A9 核心至今仍有应用。

  2. ARMv8-A:引入了 64 位计算,向前兼容 32 位模式(AArch32),适用于现代智能手机、高性能计算以及服务器等场景。包括了从 Cortex-A53(低功耗)到 Cortex-A76(高性能)等多个核心。

  3. ARMv8-M:是专为 低功耗嵌入式设备 和 物联网应用 设计的架构,提供了适用于微控制器的 Cortex-M 核心,例如 Cortex-M0 和 Cortex-M4

  4. ARMv8-R:针对 实时系统,如汽车电子、工业控制等应用,提供了高可靠性和低延迟的 Cortex-R 系列核心。

  5. ARMv9-A:是 ARMv8-A 的继任者,支持更强的 安全性AI 加速 和 虚拟化,适用于智能手机、服务器、AI 计算等场景,具有更强的计算能力和数据处理能力。

  6. ARMv9-R:针对高可靠性的 实时系统,提升了性能和安全性,适用于高性能实时任务的场景。

各系列特点:

  • Cortex-A 系列:主要用于 高性能计算,如智能手机、平板、服务器等。
  • Cortex-M 系列:专为 低功耗、嵌入式设备 设计,适用于传感器、物联网设备、家电等。
  • Cortex-R 系列:专为 实时应用 设计,适用于汽车、工业控制、航空等要求高实时性的系统。

通过这些不同的架构和 CPU 核心,ARM 能够满足从低功耗嵌入式设备到高性能计算平台等各种不同的需求。

交叉编译器(Cross Compiler)的命名通常遵循一定的规则,特别是在嵌入式开发中,以便区分目标平台的架构和主机平台。命名规则通常包括目标架构、操作系统、ABI(应用二进制接口)以及主机系统等信息。以下是常见的交叉编译器命名方式的详细解析:

二,交叉编译器的命名方式

交叉编译器的命名通常采用以下格式:

<target-triplet>-<compiler-name>-<version>

其中,<target-triplet> 描述了目标平台的架构,<compiler-name> 表示编译器的名称(例如 gcc),<version> 是编译器的版本号。下面是对各部分的详细解释:

1. Target Triplet(目标三元组)

<target-triplet> 是交叉编译器命名的核心部分,它指定了目标平台的硬件架构、操作系统和应用二进制接口(ABI)。通常格式如下:

<arch>-<vendor>-<os>-<options>

arch:目标架构(如 armx86_64aarch64mips 等)
vendor:目标平台的供应商或实现(通常是空值或 unknown
os:目标操作系统(如 linuxwin32elf,或者 none 等表示裸机系统)
options:目除了这三部分,通常还会加上 ABI(应用二进制接口) 和 浮点支持 等信息,这些部分对于交叉编译器的正确配置非常重要
    gnu:表示 GNU 工具链,用于构建和链接程序的标准工具集,通常用于 Linux 系统
    eabi:表示 嵌入式应用二进制接口Embedded Application Binary Interface),这是一个特定于嵌入式系统的 ABI,通常用于 ARMV7 处理器的开发。
    hf:表示 硬件浮点支持Hardware Floating Point),即编译器生成的代码将使用目标硬件的浮点运算单元,而不是依赖软件模拟浮点运算
注意:eabi与hf 是Armv7的特性,只有ArmV7版本的32位编译器才会带这2个特性,ArmV8版本的编译器 有两种版本arm开头,表示是编译成32位兼容旧版本的v7构架构。Armv8 64位编译器的options通常是gnu,省略了AArch64 ABI和HF,因为aarch64包含了这两项

2. Compiler Name(编译器名称)

编译器的名称通常是:
gcc:GNU 编译器,适用于 C/C++ 编译。
g++:GNU C++ 编译器。
clang:一个替代 GCC 的编译器工具链。
ld:GNU 链接器。
as:GNU 汇编器。

所以,交叉编译器的名称会包括类似 arm-none-eabi-gcc 或 arm-linux-gnueabihf-gcc,这些名称表明这是为相应的目标平台编译的编译器。

3. 版本号(Version)

大部分交叉编译器在命名时会包含编译器的版本号。比如:

  • arm-none-eabi-gcc-10.2.1:表示版本号为 10.2.1 的 arm-none-eabi-gcc 编译器。
  • aarch64-linux-gnu-gcc-9.3.0:表示版本号为 9.3.0 的 aarch64-linux-gnu-gcc 编译器。

4. 常见的交叉编译器命名示例

编译器 目标架构 操作系统 ABI
arm-none-eabihf-gcc ARM(32位) 裸机(没有操作系统) EABI
arm-linux-gnueabihf-gcc ARM(32位) Linux GNU EABI,支持硬件浮点(hf)
aarch64-linux-gnu-gcc ARM(64位) Linux GNU,aarch64=AArch64 ABI+hf
mipsel-linux-gnu-gcc MIPS(小端格式) Linux GNU
x86_64-linux-gnu-gcc x86-64(64位) Linux GNU

Arm构架与编译器名字

Armv7:编译器通常是arm-*—linux-gnueabihf
Armv8:编译器有两种:①兼容v7构架的arm-*-linux-gnueabihf;②64位的aarch64-*-linux-gnu
64位的Windows可以运行32位程序,应为他包含了32位的*.dll与*.lib
同样基于Armv8的一个64位系统也可以支持32位程序,查看到底是否支持要用到dpkg -l | grep libc6:i386 或者dpkg –print-foreign-architectures这个命令,如果支持那么一个本来在NXP能运行的程序也可以运行在Contex-A53上

赞(0) 打赏
未经允许不得转载:Mr.Zhang » Arm构架

评论 抢沙发

你的打赏是我的动力

登录

找回密码

注册