ARM基础知识

一、ARM基本知识

  • 嵌入式:以应用为中心,以计算机技术为基础,软硬件可裁剪的专用计算机系统。
  • 计算机系统组成:硬件系统,软件系统(应用软件、系统软件)。
  • 计算机硬件组成:运算器、控制器、存储器、输入设备、输出设备。
  • CPU :中央处理器,数据运算、指令处理。
  • GPU:图像处理单元,图形数据处理、图像渲染。
  • FPU:浮点数单元,浮点数运算与处理。
  • MPU:微处理器,仅含 CPU 模块,需外接存储、外设等功能模块。
  • MCU:微控制器,集成 CPU、RAM、ROM、IO、UART、定时器、中断系统,实现简单控制。
  • SOC:片上系统,整合多个功能芯片(如 CPU、GPU、NPU、存储控制器等)到单一芯片。
  • DSP:数字信号处理器,是为了高强度数学运算而设计的一种专门芯片。

二、ARM内核

1.ARM发展与分类

早期经典内核ARM1 ~ ARM11,对应指令集版本 ARMv1 ~ ARMv4。

现代 Cortex 系列内核:分为三大产品线

  • Cortex-A:面向高性能应用(如手机、平板),带内存保护单元(MPU),支持复杂操作系统。
  • Cortex-R:面向实时控制场景(如汽车电子、工业控制),强调高可靠性和低延迟。
  • Cortex-M:面向微控制器(MCU),主打低功耗、低成本,是物联网和嵌入式设备的主流选择。

2.指令集

CISC(Complex Instruction Set Computer):复杂指令集

RISC(Reduced Instruction Set Computer): 精简指令集

处理器指令集架构:x86(CISC),ARM(RISC),MIPS(RISC),RISC-V(RISC)

3.核心器件

器件名称 作用说明
通用寄存器组(R0~R15) 存储临时计算数据和指令执行上下文,是 CPU 高速读写的 "临时仓库"。 - R13(SP)是栈指针,管理函数调用的栈空间;R14(LR)是链接寄存器,保存函数返回地址;R15(PC)是程序计数器,指向当前执行的指令地址。
状态寄存器(CPSR/SPSR) - CPSR(当前程序状态寄存器)记录 CPU 当前的运行状态(如中断屏蔽标志、运算结果标志)。 - SPSR(保存程序状态寄存器)用于在异常发生时保存 CPSR 的值,异常退出后恢复现场。
算术逻辑单元(ALU) 执行算术运算(加减乘除)和逻辑运算(与、或、非、移位),是 CPU 的 "计算引擎"。
Cache(i-Cache / d-Cache) - i-Cache(指令缓存)存储近期频繁执行的指令,减少从内存取指令的延迟。 - d-Cache(数据缓存)存储频繁访问的数据,提升数据读写速度。
内存管理单元(MMU) 仅在 Cortex-A 等高端内核中存在,负责虚拟地址到物理地址的映射,支持内存分页和权限管理,是多任务操作系统的基础。

三、ARM处理器工作模式

模式名称 类型 触发条件 核心作用
User(用户模式) 非特权模式 正常程序执行时 大部分应用程序的运行模式,权限受限,防止错误代码破坏系统。
FIQ(快速中断模式) 特权模式 高优先级中断请求 处理紧急事件(如高速数据传输),拥有更多私有寄存器,中断延迟最低。
IRQ(普通中断模式) 特权模式 普通中断请求 处理常规外设中断(如键盘、定时器),是最常用的中断处理模式。
Supervisor(管理模式) 特权模式 系统复位或执行软中断指令 操作系统内核的运行模式,负责系统初始化、内存管理和任务调度。
Abort(终止模式) 特权模式 内存访问异常(如地址错误、权限不足) 处理内存故障,保护系统避免非法内存操作导致崩溃。
Undef(未定义模式) 特权模式 执行未定义指令或协处理器指令 处理指令错误,可用于软件仿真协处理器功能。
System(系统模式) 特权模式 由操作系统切换进入 使用与用户模式完全相同的寄存器集,但拥有特权权限,用于执行需要高权限的系统任务。
Monitor(监控模式) Cortex-A 特有特权模式 安全相关事件触发 实现安全监控和隔离(如 TrustZone 技术),负责在安全与非安全世界之间切换。

四、ARM寄存器
ARM 有37个32-Bits长的寄存器

程序状态寄存器

条件位:

  • N = Negative result from ALU
  • Z = Zero result from ALU
  • C = ALU operation Carried out or borrow
  • V = ALU operation oVerflowed

E位:大小端控制位
A位:A=1 禁止不精确的数据异常

中断禁止位:

  • I = 1: 禁止 IRQ.
  • F = 1: 禁止 FIQ

Mode位:

处理器模式位

  • 10000 User mode;
  • 10001 FIQ mode; 10011 SVC mode;
  • 10111 Abort mode; 11011 Undfined mode; 11111 System;
  • 10110 Monitor mode; 10010 IRQ

五、异常处理

当异常产生时, ARM core:

  • 当前程序状态寄存器 CPSR 的内容,复制到对应异常模式的保存状态寄存器 SPSR_<mode>
  • 设置适当的 CPSR 位:
  • 改变处理器状态进入 ARM 态
  • 改变处理器模式进入相应的异常模式
  • 设置中断禁止位屏蔽同级或更低优先级的中断 (如果需要)
  • 保存返回地址到 LR_<mode>
  • 设置 PC 为相应的异常向量

返回时, 异常处理需要:

  • 从 SPSR_<mode>恢复CPSR,将处理器状态、中断使能位等恢复到异常发生前的状态。
  • 从LR_<mode>恢复PC的值,跳转到异常发生前的代码继续执行。
相关推荐
代码游侠4 天前
STM32开发——基础外设
linux·运维·arm开发·stm32·单片机·嵌入式硬件·学习
代码游侠4 天前
Linux驱动复习——驱动
linux·运维·arm开发·笔记·学习
古译汉书5 天前
【IoT死磕系列】Day 6:工业控制底层大动脉—CAN总线
linux·网络·arm开发·单片机·物联网·tcp/ip
姜太公钓鲸2335 天前
STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器。上述文字中的内核是什么意思?作用是什么?
arm开发·stm32·嵌入式硬件
日更嵌入式的打工仔5 天前
FIQ 与 IRQ
arm开发·笔记
The️6 天前
STM32-FreeRTOS操作系统-软件定时器
arm开发·stm32·单片机·嵌入式硬件·mcu·c#
szxinmai主板定制专家6 天前
RK3588 8个USB工控解决方案,适用于机器视觉,工业互联等
arm开发·人工智能·fpga开发
我在人间贩卖青春6 天前
ARM编程模型
arm开发·arm工作模式
安全二次方security²6 天前
【CVE-2025-0647】ARM CPU漏洞安全通告
arm开发·安全·cve-2025-0647·tlbi·cpp rctx 指令·c1-ultra·虚拟化漏洞
道亦无名7 天前
armBitRevIndexTable1024
arm开发