嵌入式 - ARM(1):ARM体系结构

文围绕计算机系统基础架构、存储器体系、处理器分类、ARM 架构及关键扩展问题展开,对核心概念进行系统化梳理与补充,兼顾理论定义与实际应用场景,适合嵌入式开发入门及计算机硬件基础学习。

一、计算机系统基础

计算机系统由硬件 (物理载体)和软件(逻辑功能层)组成,二者协同实现数据处理与指令执行。

(一)软件组成

软件按功能分为系统软件和应用软件,前者为基础运行环境,后者满足特定业务需求:

  • 系统软件 :支撑计算机硬件运行的底层软件,负责资源调度与硬件管理,是应用软件的运行基础。
    • 核心类型:操作系统(Windows 11、Linux Ubuntu、macOS)、驱动程序(显卡驱动、声卡驱动)、编译器(GCC、Clang)、数据库管理系统(MySQL、SQLite)。
  • 应用软件 :面向用户特定需求开发的软件,依赖系统软件运行。
    • 常见类型:办公软件(Microsoft Office、WPS)、设计软件(Photoshop、AutoCAD)、娱乐软件(游戏《原神》、视频播放器 PotPlayer)、行业软件(医疗影像系统、工业控制软件)。

(二)硬件组成

硬件遵循冯・诺依曼体系核心框架("存储程序" 原理:程序与数据一同存储,按指令顺序执行),由五大核心部件构成,各部件通过总线协同工作:

核心部件 英文缩写 核心功能 关键特点与示例
运算器 ALU 执行算术运算 (加 / 减 / 乘 / 除 / 模)和逻辑运算(与 / 或 / 非 / 异或 / 比较) CPU 的核心运算单元,运算速度决定计算机 "计算能力";如 Intel Core i9 的 ALU 支持 128 位向量运算
控制器 CU 协调各部件同步工作,控制指令执行流程(指令预取→译码→执行→写回) 计算机 "大脑中枢",通过时钟信号、读写信号指挥硬件;如 CPU 的控制单元调度 Cache 与内存的数据交互
存储器 Memory 存储程序代码与数据,按 "速度 - 容量 - 成本" 权衡分为多级存储体系 详见 "第二章 存储器分类",如 RAM 存运行中的程序,ROM 存操作系统镜像
输入设备 Input 将外部信息(用户操作、物理信号)转换为计算机可识别的电信号 键盘(输入文字)、鼠标(定位操作)、传感器(温度传感器 DS18B20 采集环境温度)、摄像头(采集图像)
输出设备 Output 将计算机处理后的电信号转换为人类可感知的信息(视觉 / 听觉)或物理动作 显示器(显示图像)、打印机(打印文档)、音箱(播放声音)、电机(机器人运动驱动)

二、存储器分类

存储器按 "速度由快到慢、容量由小到大、成本由高到低" 分为四级,形成多级存储体系,平衡速度与成本(CPU 优先访问高速存储,减少对低速存储的依赖):

类型 英文全称 核心特性 应用场景与示例
寄存器(Register) CPU Internal Register 1. 位于 CPU 内部,速度最快(纳秒级,<1ns ); 2. 容量极小(几十~几百字节); 3. 临时存储指令执行中的数据 / 地址; 4. 按功能分通用寄存器(R0-R12)、特殊功能寄存器 CPU 内部数据缓存,如 PC(程序计数器,存下一条指令地址)、SP(栈指针,管理函数栈空间)、CPSR(程序状态寄存器)
高速缓存(Cache) High-Speed Cache Memory 1. 位于 CPU 与主存之间,速度次之(纳秒级,~10ns ); 2. 容量较小(KB~MB 级,如 L1 Cache 64KB、L2 Cache 256KB); 3. 缓存 CPU 频繁访问的指令 / 数据; 4. 分 I-Cache(指令缓存)、D-Cache(数据缓存) 减少 CPU 访问主存的延迟,如 Intel Core i7 的 L3 Cache 为 16MB,供多核共享;游戏运行时,常用纹理数据存于 Cache
随机存取存储器(RAM) Random Access Memory 1. 即 "主存 / 内存",速度中等(纳秒级,~100ns ); 2. 容量较大(MB~GB 级,如 4GB、16GB、64GB); 3. 可读写,掉电后数据丢失 (易失性); 4. 可被 CPU 直接寻址(按字节寻址); 5. 分 DRAM(动态 RAM,如 DDR5)、SRAM(静态 RAM,速度快但成本高) 存储运行中的程序与临时数据,如 Windows 系统加载到 RAM 中运行;游戏进程的临时数据(角色位置、血量)存于 RAM
只读存储器(ROM) Read-Only Memory 1. 即 "外存 / 辅存",速度较慢(微秒级,~100μs ); 2. 容量大(GB~TB 级,如 512GB SSD、2TB HDD); 3. 非易失性(掉电数据不丢失); 4. 现多为可擦写(如 Flash ROM、EEPROM); 5. 不可被 CPU 直接寻址(需通过块设备驱动访问) 长期存储静态数据,如 SSD 存操作系统镜像(Windows 镜像)、U 存存用户文档、嵌入式设备的 Flash 存固件(路由器固件)

补充:Cache 按层级分 L1(CPU 内核独占)、L2(CPU 内核独占或共享)、L3(多核共享),层级越低(L1)速度越快、容量越小。

三、处理器体系

处理器是计算机的 "运算与控制核心",按应用领域分为通用计算机处理器 (面向 PC、服务器)和嵌入式处理器(面向家电、工业控制)两大类。

(一)通用计算机处理器

面向高算力、通用场景,强调多任务处理与复杂计算能力:

处理器类型 英文全称 定位与核心功能 代表产品与应用场景
中央处理器(CPU) Center Processing Unit 通用计算核心,类比 "公司 CEO";负责指令执行、数据运算、系统资源(内存、外设)调度;支持多任务并发(如同时运行浏览器、微信、游戏) Intel Core i7-14700K(PC 端)、AMD Ryzen 9 7950X(PC 端)、Intel Xeon Platinum 8480(服务器端,用于云计算)
图形处理器(GPU) Graphics Processing Unit 专用图形与并行计算核心,类比 "公司体力劳动者";核心数量多(上千个),擅长大规模并行数据处理(如像素渲染、矩阵运算) NVIDIA GeForce RTX 4090(PC 端游戏 / 图形设计)、AMD Radeon RX 7900 XT(PC 端)、NVIDIA A100(数据中心端,用于 AI 模型训练)
浮点运算单元(FPU) Floating-Point Unit CPU/GPU 内部的专用模块;负责浮点型数据(带小数点,如 3.14、0.618)的运算;提升科学计算、工程模拟效率 集成于 CPU(如 Intel Core 系列的 FPU 支持 AVX-512 指令集)、GPU(如 NVIDIA GPU 的 Tensor Core 支持浮点运算);应用于气象模拟、3D 建模

(二)嵌入式领域处理器

面向低功耗、高集成度、特定场景,强调 "按需定制"(无需通用算力,仅满足专属功能):

处理器类型 英文全称 核心特性 应用场景 代表产品
微处理器(MPU) Micro Processing Unit 1. 偏向 "数据处理",通用计算能力强; 2. 需外接内存(RAM)、存储(ROM)、外设; 3. 支持复杂操作系统(Linux、Android) 智能设备、工业控制主机(如智能家居网关、车载信息娱乐系统) NXP I.MX6ULL、Samsung S5PV210
微控制器(MCU) Micro Control Unit 1. 偏向 "控制",高集成度(片上集成 RAM、ROM、GPIO、UART 等外设); 2. "单芯片即可工作",无需外接大量元件; 3. 低功耗、低成本,支持 RTOS(实时操作系统)或裸机编程 小型嵌入式控制(如空调控制板、智能门锁、传感器节点) STM32F103(STM32 系列)、Atmel ATmega328P(Arduino Uno 核心)
数字信号处理器(DSP) Digital Signal Processing Unit 1. 专为 "高强度数字信号运算" 设计,支持快速乘法 - 累加(MAC) 操作; 2. 实时性强,适合时序信号处理(音频、视频、雷达信号); 3. 指令集优化并行运算 音频处理(降噪、均衡器)、视频编码、工业检测(振动分析)、医疗设备(心电图处理) Texas Instruments TMS320C6000、ADI ADSP-SHARC
片上系统(SoC) System on Chip 1. 集成 "处理器核心 + 外设 + 存储 + 专用模块" 的完整系统,类比 "城市蓝图"; 2. 可集成 MPU/MCU/DSP/GPU/Modem(调制解调器); 3. 高集成度、小体积,适合便携设备 智能手机、平板电脑、智能手表、物联网网关 Qualcomm Snapdragon 8 Gen3(手机 SoC)、Apple A17 Pro(iPhone SoC)、华为麒麟 9000S(手机 SoC)

四、ARM 架构与内核

ARM(Advanced RISC Machines)架构是嵌入式领域主流架构,基于 RISC(精简指令集)设计,核心优势是 "低功耗、高性能、小体积",广泛应用于智能手机、物联网设备、工业控制。

(一)ARM 核心系列与应用场景

ARM 内核按性能与场景分为三大系列,覆盖从低功耗 MCU 到高性能 SoC:

核心系列 定位与核心特点 应用场景 典型型号
Cortex-A 高性能、多核心;支持复杂操作系统(Linux、Android);侧重通用计算与多任务处理 智能手机、平板电脑、机顶盒、工业控制主机 Cortex-A7(入门级)、Cortex-A53(中低端手机)、Cortex-A78(高端手机,如骁龙 888 用 A78 核心)
Cortex-R 高实时性、高可靠性;支持硬实时任务(任务响应时间可预测);侧重安全与稳定 工业控制(如 PLC)、汽车电子(如发动机控制)、医疗设备(如呼吸机) Cortex-R5(工业控制)、Cortex-R8(汽车电子)
Cortex-M 低功耗、低成本、小体积;支持裸机编程或轻量级 RTOS;侧重简单控制任务 传感器节点、小型控制器(如智能灯、遥控器)、家电控制板 Cortex-M0(超低功耗)、Cortex-M4(支持浮点运算,用于电机控制)、Cortex-M7(高性能 MCU,用于工业检测)

(二)主流 ARM 芯片与开发板

开发板是学习 ARM 架构的核心工具,提供硬件平台与软件支持(驱动、SDK):

类别 代表厂商 / 产品 核心参数与特点 适用场景(学习 / 开发)
主流 SoC 芯片 NXP(恩智浦):I.MX6ULL Samsung(三星):S5PV210 ST(意法半导体):STM32MP157 I.MX6ULL(Cortex-A7,工业控制);S5PV210(Cortex-A8,早期学习);STM32MP157(Cortex-A7 + Cortex-M4,异构多核,兼顾控制与计算) 工业控制开发、嵌入式 Linux 学习、异构多核编程
常用开发板 正点原子:I.MX6ULL-Mini、STM32F4 探索者 友善之臂:Tiny4412 Arduino:Uno I.MX6ULL-Mini(Linux 嵌入式开发);STM32F4 探索者(Cortex-M4,MCU 开发);Tiny4412(ARM9 架构学习);Arduino Uno(入门级 MCU,适合新手) Linux 驱动开发、MCU 裸机编程、嵌入式入门学习

(三)处理器架构对比(CISC vs RISC vs RISC-V)

处理器架构核心是 "指令集设计",决定硬件复杂度与软件编译效率:

架构类型 英文全称 指令集特点 优势 劣势 典型代表
复杂指令集(CISC) Complex Instruction Set Computer 1. 指令数量多(数百条),功能复杂(一条指令完成多步操作,如 "复制内存块"); 2. 指令长度不固定(1-15 字节); 3. 寻址方式多样 1. 程序代码短(少指令完成复杂操作); 2. 编译器设计简单 1. 硬件控制电路复杂(难流水线化); 2. 指令执行效率低(部分指令需多个时钟周期); 3. 功耗高 Intel x86、AMD x86 系列(PC / 服务器)
精简指令集(RISC) Reduced Instruction Set Computer 1. 指令数量少(几十~上百条),功能精简(一条指令仅完成一个基本操作,如 "加法""取数"); 2. 指令长度固定(如 32 位); 3. 寻址方式简单; 4. 单时钟周期完成大部分指令 1. 硬件简单(易实现流水线); 2. 执行效率高(并行性强); 3. 低功耗、小体积 1. 程序代码长(复杂操作需多条指令组合); 2. 编译器设计复杂(需优化指令组合) ARM 系列(嵌入式 / 手机)、MIPS(路由器)
开源精简指令集(RISC-V) RISC-V Instruction Set Architecture 1. 基于 RISC 设计,指令集开源 (无专利费); 2. 模块化设计(按需扩展,如浮点、向量模块); 3. 支持 32/64/128 位地址空间 1. 开源免费(降低芯片设计成本); 2. 灵活可扩展(适配从 MCU 到服务器); 3. 社区活跃(生态快速发展) 1. 生态成熟度低于 ARM/x86(部分外设驱动缺失); 2. 高端芯片产品较少 平头哥玄铁 910、SiFive U74、兆易创新 GD32V 系列

(四)ARM 内核核心组件与流水线

ARM 内核是 ARM 处理器的 "运算核心",包含五大关键模块,通过流水线技术提升指令执行效率:

1. 核心组件
  • 算术逻辑单元(ALU):执行算术 / 逻辑运算,如加法、异或,是内核的 "运算引擎"。
  • 寄存器组(Register Bank):存储临时数据与地址,分两类:
    • 特殊功能寄存器(SFR):PC(程序计数器,存下一条指令地址)、SP(栈指针,管理栈空间)、LR(链接寄存器,存函数返回地址)、CPSR(当前程序状态寄存器,存进位 / 溢出标志、中断屏蔽位)、SPSR(异常时备份 CPSR)。
    • 通用寄存器(GPR):R0-R12,临时存储数据与地址(如 R0 存函数返回值)。
  • 指令译码器:将机器码指令(二进制)翻译成控制信号(如 "R1 与 R2 相加""从地址 0x1234 取数据")。
  • 控制器(CU):根据译码后的控制信号,协调 ALU、寄存器、总线同步工作,控制指令执行时序。
  • 流水线(Pipeline):将指令执行拆分为多阶段并行处理,减少指令等待时间(类似工厂流水线)。
2. 典型流水线结构
  • 三级流水线(ARM7TDMI) :适用于低功耗、入门级内核,分为三阶段:
    1. 指令预取(Fetch):从 I-Cache / 内存读取下一条指令,存入流水线寄存器。
    2. 指令译码(Decode):译码器将指令翻译成控制信号。
    3. 指令执行(Execute):驱动 ALU 运算、寄存器读写,输出结果。
  • 五级流水线(ARM926EJ-S) :适用于中高端内核,拆分 "执行" 阶段,提升并行性:
    1. 指令预取(Fetch)→ 2. 指令译码(Decode)→ 3. 指令执行(Execute,仅 ALU 运算 / 地址计算)→ 4. 内存访问(Memory,读写内存数据)→ 5. 写回(Writeback,将结果写入通用寄存器)。

五、关键扩展问题解析

1. 冯・诺依曼架构 vs 哈佛架构?ARM 内核属于哪一种?

两种架构的核心区别是 "程序与数据的存储方式",直接影响指令执行效率:

对比维度 冯・诺依曼架构 哈佛架构
存储结构 程序指令与数据共享同一存储空间、同一条总线 程序指令与数据分开存储(独立空间)、独立总线(指令总线 + 数据总线)
工作特点 指令与数据访问存在 "时序冲突"(需先取指令、再取数据),总线带宽是性能瓶颈 可同时取指令与取数据,数据吞吐率高,适合实时性场景
典型应用 早期 PC(如 Intel x86 架构)、ARM7 内核 DSP、ARM9 及以后内核(如 ARM926EJ-S)、FPGA

ARM 内核的选择:ARM 内核灵活适配两种架构 ------ 早期 ARM7TDMI 采用冯・诺依曼架构(低功耗、简单场景);ARM9、Cortex-A/R/M 系列(如 Cortex-A78、Cortex-M4)多采用哈佛架构(通过独立指令 / 数据总线提升并行性)。

2. ARM 有几种工作模式?

ARM 内核通过 "工作模式" 实现权限管理与异常处理,共7 种基本模式,Cortex-A 系列额外扩展 2 种模式:

模式类型 模式名称 核心用途与触发场景 权限等级(特权 / 非特权)
基本模式 User(用户模式) 普通任务执行(如 APP 运行);无硬件访问权限,防止误操作硬件 非特权
基本模式 FIQ(快速中断模式) 高优先级中断处理(如紧急信号、硬件故障);响应速度最快,独占部分寄存器以减少上下文切换时间 特权
基本模式 IRQ(普通中断模式) 低优先级中断处理(如键盘输入、串口数据接收);最常用的中断模式 特权
基本模式 Supervisor(管理模式) 系统初始化(复位后进入)、软中断(SWI 指令)触发;操作系统内核运行在此模式 特权
基本模式 Abort(中止模式) 内存访问异常(如访问无效地址、权限不足)时进入;用于异常处理(如页错误) 特权
基本模式 Undef(未定义模式) 执行未定义指令(如不支持的指令)时进入;用于指令扩展(如模拟协处理器指令) 特权
基本模式 System(系统模式) 操作系统内核的高权限任务(如进程调度);使用与 User 模式相同的寄存器集,便于切换 特权
Cortex-A 扩展模式 Monitor(监控模式) 安全相关任务(如 TrustZone 技术,隔离安全世界与普通世界);执行安全监控代码 特权
Cortex-A 扩展模式 Hyp(虚拟化模式) 虚拟化任务(如运行多个操作系统);支持硬件虚拟化,提升虚拟机性能 特权

3. 什么是异常向量表?

异常向量表是 ARM 内核中固定地址的内存区域,存储各类 "异常处理程序的入口地址",是内核响应异常的 "导航表"。

核心特性:
  • 工作原理:当异常触发(如中断、复位、未定义指令)时,CPU 自动切换到对应工作模式,并将 PC(程序计数器)指向向量表中 "与异常类型绑定的固定地址",从该地址执行跳转指令,进入异常处理程序。
  • ARM 中的位置:传统 ARM 内核(如 ARM9)默认位于 0x00000000(或高地址 0xFFFF0000,可通过协处理器配置);Cortex-M 系列支持向量表重定位(可移至 RAM/Flash 其他地址)。
  • 典型异常向量表结构(32 位 ARM,每个条目 4 字节,存跳转指令):
地址(默认) 异常类型 触发场景 进入的工作模式
0x00000000 复位(Reset) 上电、复位按钮按下 Supervisor
0x00000004 未定义指令(Undefined) 执行不支持的机器码指令 Undef
0x00000008 软件中断(SWI/SVC) 执行 SWI 指令(用户态→内核态切换) Supervisor
0x0000000C 指令预取中止(Prefetch Abort) 取指令时地址无效 / 权限不足 Abort
0x00000010 数据访问中止(Data Abort) 读写数据时地址无效 / 权限不足 Abort
0x00000014 保留(Reserved) 未使用(预留扩展) -
0x00000018 IRQ(普通中断) 外部中断请求(如键盘输入) IRQ
0x0000001C FIQ(快速中断) 高优先级中断请求(如硬件故障) FIQ

4. 计算机的总线结构

总线是连接计算机各硬件部件的 "公共信息通道",负责传输数据、地址、控制信号,按 "连接部件数量" 分为单总线结构多总线结构

(1)单总线结构
  • 结构 :CPU、内存、外设(输入 / 输出设备)通过一条总线连接,所有部件共享总线带宽。
  • 优点:结构简单、成本低、易于设计(适合早期微型机)。
  • 缺点:总线带宽成为瓶颈(同一时间仅能传输一组数据,CPU 与内存通信时,外设需等待);性能低。
  • 应用:早期 8 位微型机(如 Intel 8080)、简单嵌入式设备(如计算器)。
(2)多总线结构
  • 结构 :按功能拆分多条总线,常见分层:
    1. 系统总线(CPU 总线):连接 CPU 与内存、高速 Cache,传输速度快。
    2. I/O 总线(外设总线):连接内存与低速外设(如键盘、打印机),如 PCI 总线、USB 总线。
    3. 存储总线:连接内存与高速外设(如 SSD),提升存储访问速度。
  • 优点:各总线独立工作,带宽高、性能强(适合现代 PC / 服务器)。
  • 缺点:结构复杂、成本高。
  • 应用:现代 PC(如 Intel 平台的 DMI 总线)、服务器(如 PCIe 5.0 总线)。

5. 编译器的作用与编译流程

编译器是 "将高级语言代码(如 C、C++)转换为机器码(CPU 可执行的二进制指令)" 的工具,核心作用是 "打通软件与硬件的交互通道"。

编译流程(以 GCC 编译器为例)

编译分为四个阶段,每个阶段输出特定文件,最终生成可执行文件:

  1. 预处理(Pre-Processing)

    • 功能:处理源代码中的 "预处理指令"(以#开头),如#include(导入头文件)、#define(宏替换)、#ifdef(条件编译)。
    • 输入文件:.c(C 语言源文件)、.h(头文件)。
    • 输出文件:.i(预处理后的源文件,纯 C 代码,无预处理指令)。
    • 示例命令:gcc -E test.c -o test.i
  2. 编译(Compiling)

    • 功能:将预处理后的.i文件转换为汇编语言代码 (人类可读的指令,如add r1, r2, r3),同时进行语法检查、代码优化(如删除无用代码、循环优化)。
    • 输入文件:.i文件。
    • 输出文件:.s(汇编语言文件)。
    • 示例命令:gcc -S test.i -o test.s
  3. 汇编(Assembling)

    • 功能:将汇编代码.s转换为机器码(二进制指令),生成 "目标文件"(仅包含当前源文件的机器码,未链接依赖库)。
    • 输入文件:.s文件。
    • 输出文件:.o(目标文件,Windows 为.obj)。
    • 示例命令:gcc -c test.s -o test.o
  4. 链接(Linking)

    • 功能:将多个目标文件(如test.ofunc.o)与 "系统库文件"(如libc.so,C 标准库)合并,解决符号引用(如函数调用、全局变量),生成可执行文件
    • 输入文件:.o文件、库文件(.so动态库、.a静态库)。
    • 输出文件:可执行文件(Windows 为.exe,Linux 为无后缀文件,如test)。
    • 示例命令:gcc test.o func.o -o test

1. 什么是 RISC、CISC?

  • RISC(精简指令集计算机)
    指令集精简(仅包含高频简单指令)、长度固定,大部分操作在寄存器内完成,仅取数 / 存数指令访问内存;采用流水线技术,单周期执行指令,硬件通过组合逻辑控制,无需微码;寄存器数量多,代码密度较低但执行效率高,能效比好,典型代表为 ARM、RISC - V、MIPS,适用于嵌入式系统和移动设备。
  • CISC(复杂指令集计算机)
    指令集复杂庞大(含 200~300 条指令)、长度不固定,支持内存直接操作;指令执行时间差异大(多周期完成),硬件通过微码控制;寄存器数量少,代码密度高但执行速度慢,能效比低,典型代表为 x86,适用于传统桌面计算机和服务器。

2. 冯・诺伊曼架构和哈佛架构有何区别?ARM 内核属于哪一种?

架构区别:
维度 冯・诺伊曼架构 哈佛架构
存储与总线 程序和数据共用一个存储器与总线,取指令和存取数据分时复用总线 程序和数据存储分离,有独立的存储器模块与总线,可同时访问指令和数据
执行效率 总线瓶颈导致执行速度受限 并行访存提升数据吞吐率
硬件复杂度 结构简单,成本低 设计复杂,成本高
ARM 内核的架构归属:
  • ARM7 系列 :采用冯・诺伊曼架构(程序和数据共用存储)。
  • ARM9~ARM11 系列、Cortex - M 系列 :采用哈佛架构(指令和数据存储分离)。
  • Cortex - A/R 系列 :采用改进型哈佛架构(通过指令 Cache 和数据 Cache 实现并行访存,仅用一套物理总线分时访问存储)。

3. ARM 内核中都有什么?

ARM 内核的核心组件包括:

  • CPU 核心:如 ARMTTDMI(支持 Thumb 指令集、调试功能的 32 位 RISC 处理器)。
  • 寄存器组:37 个 32 位寄存器(31 个通用寄存器 + 6 个状态寄存器),部分模式下有专用寄存器(如 FIQ 模式的 R8 - R14)。
  • 运算单元:32 位 ALU(算术逻辑单元)、32×32 位桶形移位寄存器、32×8 位高速乘法器(支持快速乘法运算)。
  • 存储管理:MMU(内存管理单元,用于虚拟地址转物理地址,部分内核含 TLB 加速地址转换)、Cache(指令 / 数据缓存,如 8KB 四路组相联 Cache)。
  • 调试与控制:JTAG(边界扫描链,用于调试)、EmbeddedICE Logic(断点观测逻辑)、写缓冲器(Write Buffer)等。
  • 总线接口:如 AMBA AHB 总线,用于连接内存和外设。

4. ARM 有几种工作模式?

ARM 处理器共有8 种工作模式(7 种基本模式 + Cortex - A 特有模式):

基本工作模式(7 种):
  • User(用户模式):非特权模式,普通任务执行。
  • FIQ(快速中断模式):高优先级中断触发时进入,支持高速数据传输。
  • IRQ(普通中断模式):低优先级中断触发时进入。
  • Supervisor(管理模式):复位或软中断(SWI)时进入,操作系统特权模式。
  • Abort(中止模式):内存存取异常(如缺页)时进入。
  • Undef(未定义模式):执行未定义指令时进入。
  • System(系统模式):特权模式,使用与 User 模式相同的寄存器集,供操作系统内核任务使用。
Cortex - A 特有模式:
  • Monitor(监控模式):为安全扩展的特权模式,用于执行安全监控代码(如处理虚拟化或信任区切换)。

5. 什么是异常向量表?

异常向量表(Exception Vector Table)是 ARM 架构中存储异常处理程序入口地址的数据结构,通常位于内存最低地址(如 0x00000000)。其核心作用是:

  • 快速定位异常处理程序:每种异常(如中断、未定义指令、数据 Abort 等)对应一个 "向量"(即处理程序的入口地址),处理器触发异常时,自动跳转到表中对应的向量位置执行 ISR(中断服务例程)。
  • 支持多异常优先级:不同异常的向量按优先级排列,确保高优先级异常(如 FIQ)优先处理。
  • 结构灵活:在 ARMv8 - A 等架构中,不同异常级别(EL0~EL3)可配置独立的向量表,进一步提升系统安全性与响应效率。
相关推荐
cui__OaO7 小时前
ARM -- 汇编语言
arm开发
sucool_lb13 小时前
GEM5学习(5): ARM 架构功耗仿真
arm开发·学习
Joshua-a2 天前
macOS下arm编译缺少stdint.h等问题
arm开发·macos
蚂蚁舞2 天前
在arm架构的Debian系统手动安装和卸载Mysql8的操作
arm开发·debian·安装mysql·mysql8·卸载mysql
m0_571372822 天前
嵌入式学习——ARM 体系架构1
arm开发·学习
生涯にわたる学び2 天前
自旋锁/互斥锁 设备树 iic驱动总线 day66 67 68
arm开发
李小白202002023 天前
windows 10系统安装arm虚拟机
arm开发
亿道电子Emdoor4 天前
【ARM】PACK包管理
arm开发
wypywyp5 天前
基于arm芯片的驱动开发——温湿度传感器dht11
arm开发·驱动开发