ARM --- 基础知识汇总

目录

1、指令集架构基础

2、发展

[3、ARM 通用寄存器(ARM32 位内核)](#3、ARM 通用寄存器(ARM32 位内核))

4、核心硬件单元

5、总线架构

6、交叉编译

[7、ARM 最小系统 & 存储芯片](#7、ARM 最小系统 & 存储芯片)

[8、ARM 7 种工作模式(ARM32)](#8、ARM 7 种工作模式(ARM32))

[9、异常向量表 & 异常处理](#9、异常向量表 & 异常处理)

[10、ARM 异常类型(完整答案)](#10、ARM 异常类型(完整答案))

[11、移位操作(ARM 指令)](#11、移位操作(ARM 指令))


1、指令集架构基础

(1)CISC:复杂指令集计算机

代表架构:X86(电脑、服务器 CPU)

核心特点:

  • 指令数量多、指令长度不固定、功能复杂
  • 芯片面积大、加工成本高、体积大、功耗高
  • 2/8 效应:20% 的常用指令完成 80% 的工作,剩余 80% 复杂指令利用率极低

(2)RISC:精简指令集计算机

代表架构:ARM、MIPS、RISC-V

核心特点:

  • 指令数量少、指令长度固定、格式统一
  • 芯片面积小、加工成本低、功耗极低、体积小(便携式设备首选)
  • 精简指令集架构 CPU

(3)基础概念

  • 指令(instruction):CPU 能直接识别执行的最小操作命令
  • 指令集:CPU 支持的所有指令的集合(硬件核心规范)

2、发展

ARM1 → ARM7 → ARM9 → ARM11→ Cortex 系列(主流)

  1. Cortex-A:Application 应用级场景:手机、平板、智能设备、应用电子领域、Linux 嵌入式开发(如 IMX6ULL)
  2. Cortex-R:Real-time 实时级场景:汽车电子、航空航天、工业控制(强实时性)
  3. Cortex-M:Micro 微控制器场景:MCU 单片机、物联网传感器、低功耗小设备

3、ARM 通用寄存器(ARM32 位内核)

(1)核心寄存器功能

  • R0-R12:通用寄存器

用途:存放运算数据,与 ALU(算数逻辑单元)配合完成计算

  • R13 (SP):栈指针寄存器

用途:管理栈空间,永远指向当前栈顶

  • R14 (LR):链接寄存器

用途:保存子程序 / 函数调用的返回地址,函数执行完后自动跳转回原位置

  • R15 (PC) :程序计数器
    • 本质:指令地址指针
    • ARM 三级流水线:PC取指 → 译码器译码 → kernal执行
    • PC 指向正在取指的指令,而非正在执行的指令
    • 指向当前代码正在执行的指令的下一条待取指的指令

(2)状态寄存器

  • CPSR:当前程序状态寄存器

用途:保存当前 CPU的运行状态(标志位、工作模式、中断使能等)

  • SPSR :保存 **/**备份程序状态寄存器

用途:异常 / 中断发生时,备份触发前的 CPSR,便于异常/中断处理结束后异常结束后,恢复原状态,每种异常模式都有独立的 SPSR(SPSR_svc/SPSR_irq 等)

(3)具体分布

  • R0~R7:所有模式共享

  • R8---R12:FIQ 模式有专用 banked(FIQ 下有 R8_fiq---R12_fiq);其他模式(用户、IRQ、SVC、ABT、UND):都用同一组 R8~R12(5个),没有各自的 banked。

  • R13和R14 :每个寄存器对应6个不同的物理寄存器。一个用于用户模式和系统模式 ,另外5个分别用于5种异常模式(fiq、irq、svc、abt、und)。

  • R15(PC):所有模式共享

  • SPSR:除用户模式、系统模式没有外,每种模式有自己的 SPSR

  • CPSR(Current Program Status Register):所有模式共享(1个)

4、核心硬件单元

(1) MMU:内存管理单元

  • 全称:Memory Management Unit
  • 功能:实现虚拟地址 ↔ 物理地址映射、内存权限管理、提高内存利用率
  • 裸机开发必须关闭 MMU(无操作系统,不需要虚拟内存)

(2) Cache:高速缓存

  • 作用:解决 CPU 与内存速度不匹配问题,CPU 优先访问 Cache,提高CPU访问数据的效率
  • 分类:
    • iCache:指令缓存(存放 CPU 要执行的指令)
    • DCache:数据缓存(存放 CPU 运算的数据)
  • 裸机开发配置:打开 iCache,关闭 DCache

(3) 架构分类

  • 冯・诺依曼架构:指令和数据共用同一片内存、同一套总线
  • 哈佛架构 :指令存储和数据存储完全独立(双总线),速度更快
  • ARM Cortex-M/A 大多采用改进型哈佛架构

5、总线架构

(1)单总线(Single Bus)

定义 :所有外设(CPU、RAM、GPIO、UART 等)共用同一组总线(地址线 + 数据线 + 控制线)。

特点

  • 同一时间只能和一个外设通信
  • 和某个外设通信时,其他外设必须断开、不能占用总线
  • 结构简单、成本低,但效率低、速度慢

(2)双总线 / ARM 分层总线

  • AHB 总线(Advanced High-performance Bus)

    • 全称:先进高性能总线
    • 用途:连接高速设备
    • 挂载设备:RAM、网卡、USB、LCD、NAND Flash 控制器
  • APB 总线(Advanced Peripheral Bus)

    • 全称:先进外设总线
    • 用途:连接低速、低带宽外设
    • 挂载设备:GPIO、UART、I2C、SPI、定时器
  • 桥接(Bridge)

    • AHB 和 APB 之间有一个 APB 桥
    • 作用:高速总线 ↔ 低速总线 数据转换、速率匹配

6、交叉编译

(1)定义

在一个平台编写编译程序,能够在另外一个平台运行程序(在X86 平台 上编写、编译代码,生成能在ARM 平台运行的程序)

(2)编译器区分

  • gcc:X86 架构本地编译器(编译电脑程序)
  • arm-linux-gnueabihf-gcc:ARM 架构交叉编译器(编译嵌入式程序)

(3)查看系统架构命令

uname -a 显示系统的详细信息(Linux 系统查看 CPU 架构、内核版本等)

(4)编译器编译流程

7**、ARM 最小系统 & 存储芯片**

(1)最小系统

定义: 让 CPU 正常启动、运行的最少硬件电路

**核心组成:**电源、时钟、复位、RAM(运行内存)、Flash(程序存储)、下载 / 调试电路(JTAG/SWD/ 串口)、CPU

(2)存储芯片

  1. NOR Flash
    • 支持字节寻址,可直接在芯片内运行代码(XIP)eXecute In Place,代码直接在 Flash 中执行
    • 有独立地址总线 + 数据总线
  2. NAND Flash
    • 不支持字节寻址(无法被寻址),按 数据块(512Byte / 块)读写
    • 容量大、成本低,不能直接运行代码,需加载到内存执行

(3)常用芯片对应架构

  • imx6ull → Cortex-A7 → armv7-a 指令集
  • s3c2440 → ARM920T → armv4 指令集

8、ARM 7 种工作模式(ARM32)

  • 用户模式(User Mode,USR):

    • 普通应用程序运行模式,权限最低

    • 只能访问受限资源,不能直接操作硬件或系统关键寄存器。

    • 不能执行特权指令。

  • 快速中断模式(FIQ):

    • 用于处理高优先级、快速响应的中断。

    • 有专用寄存器,切换速度快,适合实时控制。

  • 普通中断模式(IRQ):

    • 用于处理一般中断请求。

    • 比 FIQ 优先级低,寄存器资源有限。

  • 管理模式(Supervisor Mode,SVC):

    • 系统上电默认模式、系统调用、保护模式

    • 操作系统或内核代码运行的模式,权限高。

    • 可以访问所有资源,处理系统调用。

    • 复位或软中断指令执行时将会进入该模式

  • 中止模式(Abort Mode,ABT):

    • 地址访问异常(内存错误)触发
    • 进入该模式后可进行异常处理
  • 未定义指令模式(Undefined Mode,UND):

    • 执行 CPU 不识别(未定义)的指令触发
    • 进入该模式后可进行异常处理。
  • 系统模式(System Mode,SYS):

    • 权限最高,和用户模式共用寄存器,用于操作系统内核
    • 可访问所有资源

除用户模式外,其余 6 种均为特权模式,可自由切换模式、操作硬件

9、异常向量表 & 异常处理

(1)异常向量表

  • 本质:一段固定地址的数组 / 代码段
  • 功能:存放跳转到对应异常处理函数的指令
  • 地址固定:CPU 触发异常后,自动跳转到对应向量地址

(2)异常触发时(CPU 自动执行)

  1. 拷贝 CPSR → SPSR_<异常模式>
  2. 修改 CPSR:切换为 ARM 态、切换到对应异常模式、 设置中断禁止位禁止相应中断 (可选)
  3. 保存返回地址 → LR_<异常模式>
  4. 设置 PC = 异常向量地址(跳转到处理函数)

(3)异常返回时(手动执行)

  1. 从 SPSR_<模式> 恢复 CPSR
  2. 从 LR_<模式> 恢复 PC
  3. 以上操作只能在 ARM 状态执行,Thumb 状态不支持

10ARM 异常类型(完整答案)

  1. 复位异常(Reset):CPU 上电 / 复位触发(最高优先级)
  2. 未定义指令异常(Undefined Instruction)
  3. 软件中断异常(SWI):用户态调用内核功能
  4. 指令预取中止异常:取指令失败
  5. 数据访问中止异常:读写数据地址错误
  6. 普通中断请求(IRQ)
  7. 快速中断请求(FIQ)

11、移位操作(ARM 指令)

  1. 算术移位(有符号数用)

    • ASL 算术左移 高位丢弃,低位补 0(和 LSL 完全一样)
    • ASR 算术右移 低位丢弃,高位补符号位(正 0、负 1)
  2. 逻辑移位(无符号数用)

    • LSL 逻辑左移 高位丢弃,低位补 0
    • LSR 逻辑右移 低位丢弃,高位补 0
  3. 循环移位(循环绕回)

    • ROL 循环左移 移出的最高位 ,补到最低位
  • ROR 循环右移 移出的最低位 ,补到最高位
相关推荐
IMPYLH2 小时前
Linux 的 du 命令
linux·运维·服务器
!chen2 小时前
[Linux][虚拟串口]0x03一个特殊的字节
linux·运维·服务器
林姜泽樾3 小时前
Linux入门第十七章,systemctl软件启动和软连接
linux·运维·服务器·centos
指尖动听知识库3 小时前
致所有嵌入式学习者:一些比代码更重要的东西
嵌入式·生活·学习方法·个人成长·求职就业·大学生找工作
济6173 小时前
ARM Linux 驱动开发篇--- Linux 并发与竞争实验(自旋锁实现 LED 设备互斥访问)--- Ubuntu20.04自旋锁实验
linux·嵌入式·嵌入式linux驱动开发
艾莉丝努力练剑3 小时前
alarm系统调用的一次性原理揭秘
linux·运维·服务器·开发语言·网络·人工智能·学习
zly35003 小时前
只能同网段ping通,route add命令添加默认路由
linux·运维·服务器
isyangli_blog3 小时前
制作Linux Centos8 模板
linux·运维·服务器
A.A呐4 小时前
【Linux第十八章】线程
linux