一、RISC 和 CISC(指令集架构)
1. CISC 复杂指令集计算机
Complex Instruction Set Computer,传统 PC x86 架构采用
- 特点:性能强、芯片复杂、成本高、体积高 、功耗大
2. RISC 精简指令集计算机
Reduced Instruction Set Computer,ARM、MIPS、RISC-V 均为 RISC 架构
- 特点:芯片简单、成本低 、体积小、功耗小
二、Cortex-A7 通用寄存器数量
ARMv7-A(Cortex-A7 属于 v7A 架构)共有30 个 32 位通用寄存器 (r0~r14 分组,r15=PC),加上专用状态寄存器,总计 37 个基础寄存器;Cortex-A 系列额外增加 Monitor 模式寄存共 40 个。 通用寄存器分组说明:
- r0~r7:所有模式共用低 8 通用寄存器;
- r8~r14:FIQ、IRQ、SVC、ABORT、UNDEF 模式拥有分组备份寄存器(banked register);
- r15:程序计数器 PC,全局共用; 通用寄存器总数:30 个(r0-r15 物理寄存器分组后合计 30 个通用)。
从ARM架构层面看,它为软件提供了16个(R0-R15)32位的通用寄存器。
三、PC、LR、SP、CPSR、SPSR 寄存器功能
1. PC(r15,程序计数器)
- ARM 状态:PC = 当前指令地址 + 8,32 位字对齐,bit 1:0 无效;
- Thumb 状态:PC = 当前指令地址 +4,16 位半字对齐,bit 0 无效;
- 作用:保存下一条预取指令地址,CPU 根据 PC 取指;跳转 / 异常时修改 PC 实现程序切换。
2. LR(r14,链接寄存器)
- 普通子程序调用 (BL):保存返回地址,函数结束
MOV pc,lr返回; - 异常模式:保存异常发生时的 PC 偏移地址,异常返回恢复程序;
- 每种异常模式有独立备份 LR。
3. SP(r13,堆栈指针)
- 指向栈顶地址,用于栈存储局部变量、现场保护;
- 每种处理器模式拥有独立 SP,中断 / 异常自动切换专属栈,避免栈冲突。
4. CPSR(当前程序状态寄存器,全局唯一)
32 位状态寄存器,保存 CPU 实时运行状态:
- 条件标志位 (N/Z/C/V/Q):ALU 运算结果状态,用于条件指令判断;
- 控制位:
- T:0=ARM32 位指令,1=Thumb16 位指令;
- I/F:IRQ/FIQ 中断屏蔽位,置 1 关闭对应中断;
- E:大小端模式控制;
- Mode 位 (M 4:0):标识当前 CPU 工作模式(User/SVC/IRQ 等 7 种基础模式)。
5. SPSR(备份程序状态寄存器,特权模式独有)
- 仅 SVC/IRQ/FIQ/ABORT/UNDEF/Monitor 特权模式存在;
- 触发异常时,自动把 CPSR 拷贝到当前模式 SPSR;
- 异常返回时,用 SPSR 恢复 CPSR,还原中断前 CPU 状态(指令集、中断开关、工作模式)。
四、MMU、Cache 作用
1. Cache 高速缓存
分为 I-Cache(指令缓存)、D-Cache(数据缓存),位于 CPU 内核与主存之间:
- 原理:局部性原理(时间 / 空间局部性),缓存 CPU 高频访问指令、数据;
- 优势:Cache 速度远高于 SDRAM 主存,减少低速内存访问次数,大幅提升 CPU 运行效率;
- 配套写缓冲:暂存写内存数据,CPU 无需等待内存写入完成即可执行下一条指令。
2. MMU 内存管理单元
ARM720T/ARM9/ Cortex-A 系列标配,M 系列无 MMU:
- 虚拟地址→物理地址映射:操作系统实现进程独立虚拟地址空间,进程间地址隔离;
- 内存访问权限保护:设置页面只读 / 读写 / 不可执行,防止非法内存读写;
- 内存分页、虚拟内存:硬盘 swap 拓展可用内存;
- 大小端、访问异常检测:非法地址、非对齐访问触发 Data Abort 异常。
五、NOR Flash 和 NAND Flash 区别
|------|---------------------|--------------------|
| | NOR Flash | NAND Flash |
| 存储结构 | 并行地址总线,每单元独立寻址 | 串行块式存储,按页 / 块读写 |
| 读取速度 | 随机读极快,可直接片上执行 (XIP) | 顺序读快,随机读慢,不能直接运行程序 |
| 擦写速度 | 擦除慢(按块擦) | 擦写速度远高于 NOR |
| 容量成本 | 单位容量价格高,适合小容量 | 低成本,大容量 |
NOR 为独立地址线 (AM29LV160),NAND 为 IO 复用总线 (K9F2G08)。
六、ARM 7 种基础工作模式
- User (用户模式,0b10000):非特权模式,应用程序运行,无法直接访问底层寄存器、硬件;
- FIQ (快速中断,0b10001):高优先级硬件中断,拥有独立 r8~r14 寄存器,中断响应最快;
- IRQ (普通中断,0b10010):常规外设中断(串口、定时器、GPIO);
- Supervisor (SVC 管理模式,0b10011):复位、软中断 SWI 进入,操作系统内核默认模式,管理硬件;
- Abort (数据预取异常,0b10111):MMU 访问非法内存、内存对齐错误触发;
- Undef (未定义指令,0b11011):CPU 识别不了非法指令时进入;
- System (系统模式,0b11111):特权模式,寄存器组和 User 完全一致,供操作系统管理用户进程。
七、ARM 标准异常处理流程
触发任意异常时,硬件自动完成以下步骤(硬件自动执行,无需软件干预):
- 保存现场状态:将当前 CPSR 复制到对应异常模式的 SPSR_<mode>;
- 保存返回地址:把异常断点 PC 存入当前模式 LR_<mode>;
- 切换 CPU 状态 :
- 切为 ARM32 位指令集 (T=0);
- 切换至对应异常工作模式;
- 置位 I/F 屏蔽位,屏蔽同级 / 低级中断;
- 跳转异常向量:PC 强制赋值为异常向量表固定偏移地址,进入异常服务函数;
异常返回(软件手动完成,仅 ARM 状态执行)
- 从 SPSR 恢复 CPSR,还原中断前指令集、中断屏蔽、工作模式;
- 用 LR 修正后的值恢复 PC,回到异常打断的程序继续执行;
FIQ/IRQ 返回需要 LR-4 修正地址,Abort/Undef 直接使用 LR。
八、异常向量 & 异常向量表
1. 异常向量
每种异常固定分配一个内存偏移地址,CPU 触发异常后强制跳转到该地址,这个偏移量叫异常向量。
2. 异常向量表
一段连续内存,按固定偏移存放各异常入口跳转指令,ARM 默认基地址 0x00000000,高端配置可映射至 0xFFFF0000。
向量偏移表
| 偏移地址 | 异常类型 | 优先级 |
|---|---|---|
| 0x00 | Reset 复位 | 最高 |
| 0x04 | Undefined Instruction 未定义指令 | 低 |
| 0x08 | SWI 软中断 | 低 |
| 0x0C | Prefetch Abort 取指异常 | 中 |
| 0x10 | Data Abort 数据访问异常 | 中 |
| 0x14 | 保留 | - |
| 0x18 | IRQ 普通中断 | 低 |
| 0x1C | FIQ 快速中断 | 次高 |
特点:FIQ 放在向量表末尾,可直接在 0x1C 写完整服务程序,无需跳转,减少延迟。
九、AHB 与 APB AMBA 总线(ARM 标准片上总线)
AMBA 是 ARM 定义的片上互联总线标准,SoC 内部双层架构:
1. AHB 高级高性能总线
- 用途:高速主设备互联,ARM 内核、DMA、外部 SDRAM/NOR FLASH 控制器、LCD;
- 特性:流水线传输、突发读写、多主机仲裁、高带宽,适配高速大数据传输;
- 组成:AHB 主设备(CPU/DMA)、AHB 从设备、AHB 桥(连接 APB)。
2. APB 高级外设总线
- 用途:低速外设,GPIO、UART 串口、定时器、I2C、SPI;
- 特性:无流水线、单次读写、结构简单、低功耗;
- 连接:通过 AHB-APB 桥挂在 AHB 总线上,桥完成时钟、协议转换;
核心分工
高速存储 / 内核走 AHB,低速外设统一挂载 APB,隔离高低速设备,优化功耗与总线效率。
十、i.MX6ULL 内核版本
- CPU 内核:Cortex-A7(ARMv7-A 架构),单核,最高 900MHz;
- 配套协处理器:无独立 Cortex-M,集成 NEON 多媒体指令集、VFPv3 浮点单元;
- 架构特性:支持 TrustZone 安全架构、MMU 内存管理、Thumb-2 指令集;
- 配套总线:AMBA3 AHB/APB,标准 ARMv7 中断控制器 GICv2。