锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

初识 Arm 处理器

时间:2024-01-02 06:37:00 m33连接器

英国ARM该公司是世界领先的半导体知识产权(IP)提供商。全球95%以上的智能手机和平板电脑使用ARM架构。ARM大量高性价比、低能耗的设计RISC处理器、相关技术和软件。2014年基于ARM全球技术出货量为120亿颗,从诞生到现在ARM600亿个技术芯片 [2] 。该技术具有性能高、成本低、能耗低的特点。在智能机、平板电脑、嵌入控制、多媒体数字等处理器领域占据主导地位。

目前的嵌入式开发大多是ARM处理器,从MCU级别的M0,M3,M4,M23,M33,到MPU级别的ARM9,ARM11,ARM-A5x,ARM-A7x。

?? 1991 年,ARM 公司成立于英国剑桥,主要出售芯片设计技术的授权。
ARM苹果,诺基亚,Acorn、VLSI、Technology等待公司的合资企业。

产品有A,R,M三个系列,和ARM名字重合,funny。

1. ARM 处理器的分类

1.1 按系列分类

  • Cortex-M系列(通用微处理器)

    包括Cortex-M0、M3、M4,新的M23,M以及早期ARM7TDMI,这种处理器通常不运行操作系统或只运行RTOS

  • Cortex-R系列(实时微处理器)

    这种处理器可以认为是Cortex-M在高安全、高实时场合的基础上,提高了实时性能。

  • Cortex-A系列(带MMU的处理器)

    包括Cortex-A5,A7,A9,到现在的A5x,A7x,以及早期的ARM9,ARM11.这种处理器通常运行Linux,具有内存管理功能的操作系统,如Android,利用其强大的功能实现复杂的应用。

1.2 按指令集分类

  • V4 指令集

    ARM7TDMI、ARM9TDMI、Intel StrongARM

  • V5 指令集

    ARM926EJ、Intel XScale

  • V6 指令集

    ARM11,M0

  • V7 指令集

    ARM-A系列中的32位,M3,M4,M7

  • V8 指令集

    ARM-A系列中的64位,M23,M33,M55,A系列32位用V8的比较少,但也有。

在这里插入图片描述

1.3 按硬件浮点分类

这种分类有些牵强,但与编译器有很大关系,几种不兼容,这里单独列出。

  • 无硬件浮点单元

    通过软件完成浮点操作,低端M0,M3,M23.没有部分A系列。相应的浮点编译选项是 soft

  • 有硬件浮点单元,但传输参数用普通寄存器传输

    后缀有编译器 el 相应的浮点编译选项为 softfp,这种形式的产品很少,稍后会详细说明。

  • 有硬件浮点单元,也有浮点单元的寄存器传输参数

    后缀有编译器 hf 相应的浮点编译选项为 hard

    32位CPU这是大多数具有硬件浮点操作功能的。

    64位CPU都有硬浮点,也是这样。

2. ARM 编译器的分类

交叉编译就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在PC平台(X86 CPU)在以上编译可以运行ARM为内核的CPU在平台上编译的程序X86 CPU平台不能运行,必须放在平台上ARM CPU只能在平台上运行,虽然两个平台都使用Linux系统。 交叉编译工具链是由编译器、连接器和解释器组成的综合开发环境binutils、gcc和glibc三部分组成。有时是为了减少 libc 考虑到库的大小,也可以使用其他方法 c 库来代替 glibc,例如 uClibc、dietlibc 和 newlib。

  • 目前有三大主流工具商提供免费版。GNU(提供源代码,自行编译制作) Codesourcery,第三是Linora。
  • 收费版有ARM原厂提供的armcc、IAR提供的编译器等,价格比较贵

交叉编译工具链的一般命名规则如下:arch [-vendor][-os] [-(gnu)eabi]

  • arch - 例如,系统架构ARM,MIPS

  • verdor -工具链供应商

  • os - 目标操作系统

  • eabi - 嵌入式应用二进制接口

    ABI:二进制应用程序接口(Application Binary Interface (ABI) for the ARM Architecture)。在计算机中,应用二进制接口描述了应用程序(或其他类型)和操作系统之间或其他应用程序的低级接口。

    EABI:嵌入式ABI。嵌入式应用二进制接口指定了嵌入式软件中文件格式、数据类型、寄存器使用、堆积组织优化和参数的标准协议。开发人员也可以使用自己的汇编语言 EABI 汇编语言的接口是由兼容的编译器生成的。

    两者的主要区别是,ABI在计算机上,EABI是嵌入式平台(如ARM,MIPS等)。

2.1 arm-none-eabi编译器

下面的网站可以下载:
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads

该编译器的名称不包含操作系统的信息,因此该编译器用于编译裸机或使用RTOS的程序,M0,M这种编译器用于3类单片机。
对应的64位为 aarch64-none-elf。

2.2 arm-none-linux-eabi编译器

如何区分以下网站下载:
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads

该编译器的名称包括linux,因此,这种编译器用于编译linux在程序中,32位编译器软件浮点。

对应的64位为aarch64-none-linux-eabi,默认情况下,64位编译器都是硬件浮点。

2.3 arm-linux-androideabi编译器

顾名思义,它是安卓编译器,64位aarch64-linux-eabi

3. ARM编译器和ARM与结构相关的编译选项

事实上,芯片制造商提供的编译器的主要功能是指定以下选项的默认值(当然,不仅仅是以下选项),使用户更容易使用,无需手动指定。

3.1 -mcpu和-march

  • -mcpu用于指定cpu例如类型cortex-a7,cortex-a9,cortex-a53,cortex-a73之类的。
  • -march用于指定cpu例如,指令集armv6,armv7。

一般直接指定-mcpu,正确推断编译器-march的值。

3.2 -mfloat-abi和-mfpu

-mfloat-abi用于指定软浮点或硬浮点

  • soft:软浮点
  • softfp:硬件浮点,但参数传输使用普通寄存器。当中断时,只需保存普通寄存器,中断负荷小,但性能差,参数需要转换为浮点。
  • hard:硬浮点和参数传输使用硬浮点寄存器,节省转换,性能最好,但中断负荷高。

一般armv5的CPU是soft,armv6以上的是hard,softfp的比较少

注意:不同mfloat-abi编译的库一般不兼容,所以整个库都不兼容linux系统中所有程序和库的mfloat-abi应保持一致。

  • mfpu用于指定硬浮点的类型,可以是vfp,vfpv3,neon-vfpv4。

一般32位CPU选择vfp或者vfpv3,64位CPU选择neon-vfpv4,或者直接不选择,让编译器根据CPU选择默认值即可。不同mfpu选项应该是能兼容的,这个没测试,印象中是可以的,只要CPU本身有相应的硬件支持就行。

3.3 通过-print-multi-lib选项,可以查看编译器支持的选项

3.4 通过readelf -a命令,查看程序和库对应的编译选项

4. 什么是Arm开发板

一般来说再采购Arm嵌入式板卡的时候会涉及 核心板开发板

  • 如何区分核心板:CPU + 内存 + FLASH + 电源 + IO接口 等等
  • 开发板:SD卡 + 网口 + HDMI + 串口 + USB 等等

开发板有时也被叫做 底板。购买商家提供的开发板会比较贵,一般前期测试会使用,后期只是购买核心板,然后自行开发底板(开发板)。

5. 其他

  1. 如何区分arm支持32位还是64位

    一般我们通过从指令集来区分,从ARMv3到ARMv7支持32位空间和32位算数运算。

    2011年发布的ARMv8-A架构添加了对64位空间和64位算术运算的支持。

    总结常见的:

    1. armv8是64位的,也可以叫 aarch64
    2. armv7是32位的
  2. armv7、armv7l和armv7hl有什么区别?

    armv7l中的 l 代表Little-Endian,与之对应的就是Big-Endian,含义是字节序

    • Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
    • Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。

    armv7hl中的 h 代表hard-float,指浮点运算直接由CPU(APU)完成,而不用通过软件库编译成定点算法实现,对应的是soft-float。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章