ARM 架构(Cortex-A 系列)
ARM 是嵌入式 Linux 主流 CPU 架构之一(Cortex-A 应用处理器系列)。
深入理解 ARM 才能看懂数据手册和启动代码。
一、ARM 公司与 ARM 架构
- ARM Holdings 公司只卖 IP,自己不生产芯片
- 主流 IP 厂商:Cortex-M(微控制器)、Cortex-R(实时)、Cortex-A(应用)
- 指令集版本:ARMv7(32位)、ARMv8(64位,引入 AArch64)
二、Cortex-A 关键概念
1. 运行模式(Processor Modes)
| 模式 | 用途 |
|---|---|
| User (USR) | 普通应用 |
| FIQ / IRQ | 快速/普通中断 |
| Supervisor (SVC) | 内核态,系统调用 |
| Monitor (MON) | 安全监控(TrustZone) |
| Abort / Undefined | 异常处理 |
| System | 特权级 OS 内核线程 |
2. 寄存器组
- R0-R12:通用寄存器
- R13 (SP):栈指针
- R14 (LR):链接寄存器(函数返回地址)
- R15 (PC):程序计数器
- CPSR / SPSR:当前/保存程序状态寄存器(含 M[4:0] 模式位)
- Banked 寄存器:每种异常模式独立 R8-R14
3. 异常向量表
地址 异常类型 进入模式
0x00 Reset SVC
0x04 Undefined UND
0x08 SWI SVC ← 系统调用入口
0x0C Prefetch Abort ABT
0x10 Data Abort ABT
0x14 Reserved
0x18 IRQ IRQ
0x1C FIQ FIQ
4. MMU(内存管理单元)
- 虚拟地址 → 物理地址转换
- 页表(一级/二级/三级)
- 权限控制(AP 位:只读、读写、特权)
- 内存属性(Device / Normal / Strongly-ordered)
5. Cache
- I-Cache(指令)、D-Cache(数据)
- 一致性问题:
__flush_dcache_area、__invalidate_icache - Cache Coherent interconnect(CCI)
6. SMP(多核)
- SCU(Snoop Control Unit)
- GIC(Generic Interrupt Controller):SGI/PPI/SPI
- Spinlock、atomic 指令(LDREX/STREX)
三、AArch64 差异(ARMv8)
- 通用寄存器扩展到 X0-X30(64 位)
- EL0/EL1/EL2/EL3 异常级别(替代特权模式)
- PSTATE 替代 CPSR
- 引入 NEON 高级 SIMD
四、推荐阅读
- 《ARM Cortex-A Series Programmer's Guide》
- 《ARM Architecture Reference Manual》(官方,厚但权威)
- 处理器对应 Technical Reference Manual (TRM)