嵌入式 - 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)可配置独立的向量表,进一步提升系统安全性与响应效率。
相关推荐
17(无规则自律)5 小时前
深入浅出 Linux 内核模块,写一个内核版的 Hello World
linux·arm开发·嵌入式硬件
梁洪飞17 小时前
内核的schedule和SMP多核处理器启动协议
linux·arm开发·嵌入式硬件·arm
代码游侠1 天前
学习笔记——Linux字符设备驱动
linux·运维·arm开发·嵌入式硬件·学习·架构
syseptember2 天前
Linux网络基础
linux·网络·arm开发
代码游侠2 天前
学习笔记——Linux字符设备驱动开发
linux·arm开发·驱动开发·单片机·嵌入式硬件·学习·算法
程序猿阿伟2 天前
《Apple Silicon与Windows on ARM:引擎原生构建与模拟层底层运作深度解析》
arm开发·windows
wkm9562 天前
在arm64 ubuntu系统安装Qt后编译时找不到Qt3DExtras头文件
开发语言·arm开发·qt
unicrom_深圳市由你创科技2 天前
基于ARM+DSP+FPGA异构计算架构的高速ADC采集卡定制方案
arm开发·fpga开发
松涛和鸣2 天前
DAY69 Practical Guide to Linux Character Device Drivers
linux·服务器·arm开发·数据库·单片机·嵌入式硬件
松涛和鸣2 天前
69、Linux字符设备驱动实战
linux·服务器·网络·arm开发·数据库·驱动开发