1. 课程导入与学习路线
各位同学,咱们今天正式开讲ARMv7。说实话,ARMv7这个架构在我职业生涯里占了很大比重。从早期的手机芯片到后来的工业控制板,我经手的项目少说也有十几个是基于这个架构的。它不像x86那么复杂,也不像一些微控制器那么简陋,属于那种「刚刚好」的设计。
你想想看,一个架构能活这么多年,从手机到服务器都有它的身影,肯定有它的道理。今天我们就来拆解一下,ARMv7到底牛在哪里。
1.1 Cortex-A系列处理器:不止是「大核」
ARM的Cortex系列分三个方向:A系列(Application)、R系列(Real-time)、M系列(Microcontroller)。咱们搞裸机开发和性能调优,主要跟A系列打交道。
Cortex-A系列是应用处理器,跑操作系统的那种。但我要强调一点——很多人以为Cortex-A只能跑Linux,其实裸机开发在A系列上同样大有可为。我之前做过一个高速数据采集项目,就是用Cortex-A7裸机跑的,延迟比Linux方案低了两个数量级。
常见的Cortex-A处理器包括:
| 型号 | 架构版本 | 典型应用 | 我的评价 |
|---|---|---|---|
| Cortex-A5 | ARMv7-A | 低功耗嵌入式 | 省电,但性能一般 |
| Cortex-A7 | ARMv7-A | 入门级手机、工控 | 能效比之王,我用的最多 |
| Cortex-A8 | ARMv7-A | 早期智能手机 | 单核,现在基本淘汰了 |
| Cortex-A9 | ARMv7-A | 高性能嵌入式 | 经典双核/四核设计 |
| Cortex-A15 | ARMv7-A | 平板、服务器 | 性能猛,功耗也猛 |
1.2 ARMv7-A架构特性:到底多了什么?
ARMv7-A相比之前的ARMv6,多了不少硬核特性。说白了,ARMv7-A才是真正意义上的「现代应用处理器架构」。
核心特性包括:
- Thumb-2指令集:混合16位和32位指令,代码密度和性能兼顾。我早期做的一个Bootloader,用Thumb-2编译后体积小了30%,性能只降了5%。
- NEON SIMD扩展:单指令多数据,适合音视频、信号处理。做图像处理时,NEON能比普通指令快4倍以上。
- VFPv3/v4浮点单元:硬件浮点运算,支持单精度和双精度。没有VFP的ARM做浮点运算,那叫一个慢。
- 大型物理地址扩展(LPAE):支持超过4GB内存。虽然裸机很少用到,但跑系统时很有用。
- 虚拟化扩展:硬件支持虚拟化,Cortex-A15和A7都支持。
1.3 寄存器模型:ARM的「家底」
ARMv7-A的寄存器模型,说白了就是CPU的「工作台」。所有操作都在这些寄存器上完成。
通用寄存器有16个:R0-R15。其中:
- R0-R12:通用寄存器,随便用。但要注意,有些函数调用约定会指定用途。
- R13(SP):栈指针。每个模式都有自己的SP,这点很重要。
- R14(LR):链接寄存器。保存函数返回地址。
- R15(PC):程序计数器。指向当前指令地址+8(流水线原因)。
还有一个特殊的寄存器——CPSR(当前程序状态寄存器)。它记录了CPU的运行状态:
| 位域 | 名称 | 作用 |
|---|---|---|
| [31:28] | 条件标志 | N(负)、Z(零)、C(进位)、V(溢出) |
| [27:25] | 保留/IT块 | Thumb-2的IT指令使用 |
| [24] | J位 | Java加速(基本不用) |
| [9:6] | 掩码位 | 控制中断使能(I、F、A) |
| [4:0] | 模式位 | 当前工作模式 |
1.4 工作模式:ARM的「多重人格」
ARMv7-A有7种工作模式。每种模式都有自己的寄存器组,尤其是SP和LR是独立的。为什么要这样设计?说白了,就是为了快速切换上下文。
7种模式如下:
- 用户模式(USR):普通程序运行的模式,权限最低。
- 系统模式(SYS):特权模式,共享用户模式的寄存器组。
- 快速中断模式(FIQ):处理高优先级中断,有独立的R8-R12。
- 普通中断模式(IRQ):处理普通中断。
- 管理模式(SVC):操作系统内核模式,由SWI指令触发。
- 中止模式(ABT):处理数据/指令访问异常。
- 未定义模式(UND):处理未定义指令异常。
每种模式切换时,CPU会自动保存返回地址到LR,并切换到对应的SP。这就是为什么中断处理可以很快——不需要手动保存太多东西。
1.5 知识结构图:ARMv7-A核心概念一览
下面这张图把ARMv7-A的核心知识点串起来了。你可以把它当作本章的「地图」:
1.6 小结:这一章你该带走什么?
嗯,内容不少。我帮你理一下重点:
- Cortex-A系列是应用处理器,适合裸机和系统开发。选型时注意NEON和VFP是否支持。
- ARMv7-A架构带来了Thumb-2、NEON、VFP等硬核特性,性能比ARMv6提升明显。
- 寄存器模型以R0-R15和CPSR为核心。SP、LR、PC各有分工,CPSR控制模式和状态。
- 7种工作模式各有独立寄存器,切换由硬件自动完成。理解模式切换是裸机开发的基础。