Day46 ARM硬件体系 从计算机架构、处理器类型、指令集到内核寄存器与SoC总线结构
day46 ARM硬件体系 从计算机架构、处理器类型、指令集到内核寄存器与SoC总线结构
一、学习方法与课程定位
1. 学习策略建议
- 架构先行,逐步关联:先搭建整体知识框架,局部难点可先“背诵记忆”,待框架稳固后再回溯理解。
- 课堂氛围:首次课鼓励轻松“聊天式”学习,重在建立认知体系,无需拘谨。
- 学习者类型适配:
- 空间型:擅长逻辑推演、刨根问底;
- 记忆型:倾向重复强化、背诵记忆;
- 课程统一采用“架构→细节→关联”路径,兼顾不同学习风格。
2. 课程体系衔接定位
课程名称 | 核心作用与定位 |
---|---|
C语言 | 基础语法工具,实现人机交互 |
Linux环境高级编程 | 掌握系统API,“搭积木”式构建功能 |
汇编(高阶) | 贴近硬件操作,目标为“完成功能” |
数据结构 | 优化算法与数据组织,提升程序时间/空间效率 |
单片机(51为主) | 硬件入门,结构极简(1核,128B RAM),为ARM过渡铺垫 |
ARM课程 | 承上启下,从单片机过渡到复杂ARM架构;提前心理建设,降低学习预期落差 |
二、嵌入式系统与计算机三层结构
1. 嵌入式系统定义
以应用为中心、以计算机技术为基础、软硬件可剪裁的专用计算机系统。
所有课程(C语言、Linux、数据结构、单片机、裸机、驱动等)均围绕此核心展开。
2. 计算机系统三层结构
层级 | 说明 |
---|---|
应用层(APP) | 用户程序层,实现具体功能(如C语言、数据结构、高级编程) |
操作系统层 | 提供API与标准库,管理内存、进程、设备等,连接应用与硬件 |
硬件层 | 系统底层支撑,操作系统功能依赖硬件实现 |
三、计算机系统基本组成(冯·诺依曼结构)
计算机系统 = 硬件系统 + 软件系统
1. 软件系统
- 应用软件:直接满足用户需求(如APP)
- 系统软件:操作系统、驱动、数据库等,支撑应用运行
2. 硬件五大部件
- 运算器 —— 执行算术与逻辑运算
- 控制器 —— 协调各部件工作
- 存储器 —— 存储程序与数据
- 输入设备 —— 如键盘、传感器
- 输出设备 —— 如屏幕、电机
教师提示:小学“微机课”死记硬背,大学《微机原理》深入理解,后续课程将通过画图强化记忆。
四、处理器类型详解与辨析
类型 | 全称 | 特点与类比 | 应用场景 |
---|---|---|---|
CPU | Central Processing Unit | 通用处理器,“CEO”角色,全能但专项效率低 | PC、服务器等通用计算 |
GPU | Graphics Processing Unit | 专精图形与并行浮点运算,“高效流水线工人” | 游戏、AI、渲染 |
MCU/单片机 | Micro Controller Unit | 集成运算器、控制器、存储器、外设(GPIO、PWM等),高集成度,控制导向 | 工业控制、家电、51系列等 |
DSP | Digital Signal Processor | 专为高强度数学运算设计,硬件加速,响应快 | 航空航天、汽车电子、通信 |
MPU | Micro Processor Unit | 性能强大的通用处理器,简化版CPU | 手机、嵌入式设备中的ARM芯片 |
SoC | System on Chip | 非处理器类型,而是集成设计理念:将MPU、GPU、DSP、NPU、调制解调器等集成于单一芯片 | 智能手机、高端嵌入式设备 |
SoC比喻:如同将“市政府(MPU)、警察局(MCU)、研究所(DSP)、机场(调制解调器)”建在同一片土地(芯片)上,形成功能完善的城市。
五、主流处理器架构与指令集体系
1. 主流架构对比
架构 | 特点与应用领域 | 指令集类型 |
---|---|---|
X86 | 英特尔研发,PC市场主导,复杂指令集(CISC),功耗高 | CISC |
ARM | 嵌入式/移动领域主导,精简指令集(RISC),低功耗、高能效 | RISC |
MIPS | 精简指令集,曾用于嵌入式与网络设备 | RISC |
RISC-V | 开源精简指令集,模块化、可定制,发展迅速 | RISC |
2. 指令集分类详解
CISC:复杂指令集计算机
RISC:精简指令集计算机
类型 | 全称 | 代表架构 | 特点 |
---|---|---|---|
CISC | Complex Instruction Set Computer | X86 | 指令丰富复杂,硬件庞大,功耗高;符合“二八定律”,多数指令使用频率低 |
RISC | Reduced Instruction Set Computer | ARM/MIPS/RISC-V | 指令精简高效,硬件小巧,功耗低;契合嵌入式需求;现代RISC逐步吸收部分CISC特性 |
补充说明:
- X86与ARM均为收费闭源架构,设备厂商需支付专利费;
- 华为受制裁后仍使用ARM V7架构并支付费用,推动国产架构研发,但进展缓慢,需长期积累。
六、存储器系统详解
1. RAM vs ROM 对比表
特性 | RAM(随机访问存储器) | ROM(只读存储器) |
---|---|---|
核心定义 | 可随机访问任意字节地址的存储器 | 早期为只读,现多可读写,名称源于历史设计 |
CPU寻址能力 | 可被CPU直接寻址(挂载在地址总线上) | 不可直接寻址(需通过磁盘控制器等中间组件) |
访问速度 | 速度极快 | 速度远慢于RAM |
价格 | 价格昂贵 | 价格低廉 |
数据持久性 | 掉电丢失数据(易失性存储器) | 掉电不丢失数据(非易失性存储器) |
典型应用 | 电脑/手机内存 | 硬盘、固态硬盘、Flash |
注:Flash虽属ROM类别,但在嵌入式中可被CPU直接寻址,常用于存储程序代码。
2. 总线系统与编址能力
-
三大总线:
- 地址总线:决定CPU可寻址空间(32位 → 0~4GB)
- 数据总线:决定单次传输数据宽度(32位 → 4字节)
- 控制总线:传输读写、时钟等控制信号
-
编址示例:
- 32位地址总线 → 2³² = 4GB地址空间
- 外设寄存器(如UART、GPIO)被分配特定地址段(如0x0000~0x1000给UART),通过地址访问实现控制
-
字长关联:
- 处理器字长(如32位)决定数据总线、地址总线、寄存器位宽,确保并行效率
七、CPU内核核心组件详解
1. 通用寄存器组(R0-R15)
- 数量:16个(R0~R15),32位宽度
- 特殊寄存器:
- R13(SP):Stack Pointer,栈指针寄存器,始终指向栈顶
- R14(LR):Link Register,链接寄存器,备份函数返回地址
- R15(PC):Program Counter,程序计数器,指向当前执行指令地址
2. ALU(算术逻辑单元)
- 负责所有算术(+、-、×、÷、%)与逻辑运算(&、|、!、^)
- 依赖通用寄存器提供操作数与暂存结果
3. Cache(高速缓存)
- 缓解CPU与RAM/外设速度差异
- I-Cache:指令缓存,提升指令读取速度
- D-Cache:数据缓存,提升数据访问速度
- 多级缓存(L1/L2/L3)直接影响系统流畅度(如游戏体验)
4. 程序状态寄存器
寄存器 | 全称 | 功能 |
---|---|---|
CPSR | Current Program Status Register | 保存当前CPU运行状态(如溢出、中断使能等),32位 |
SPSR | Saved Program Status Register | 备份CPSR状态,用于模式切换时恢复 |
示例:
unsigned int i = 0xFFFFFFFF; i + 1;
→ 产生溢出,CPSR中对应标志位被置位。
八、内存空间布局(32位系统)
从低地址 → 高地址:
-
代码段:
- 存储编译后的机器指令(每条4字节)
- 只读属性,不可修改
- 函数按块存储(如main、func1各有独立指令块)
-
全局区:
- 初始化全局变量
- 未初始化全局变量(BSS段)
- 静态变量
-
堆区:
- 动态内存分配(malloc/free)
- 向上生长,空间较大
-
栈区:
- 向下生长(背靠内核区),避免覆盖内核
- 存储函数局部变量、参数
- 每次函数调用生成“栈帧”
-
内核区:
- 操作系统核心代码与数据
- 最高优先级,被覆盖将导致系统崩溃
九、内存管理单元(MMU)详解
1. 名称与功能
- MMU:Memory Management Unit(内存管理单元)
- 核心作用:建立虚拟地址 → 物理地址映射关系
2. 虚拟内存机制
- 操作系统为每个进程分配独立虚拟地址空间(如0~4GB)
- 实际物理内存可能小于虚拟空间(如16GB物理内存)
- MMU动态映射:进程访问虚拟地址时,MMU将其转换为真实物理地址
比喻:操作系统像父母,给每个孩子“开4GB空头支票”,实际花钱(用内存)时才从家庭金库(物理内存)拨款。
3. 裸机开发中的MMU
- 必须关闭:无操作系统时,开启MMU会导致地址映射混乱,无法精准操作硬件寄存器(如GPIO)
- 默认状态:ARM内核MMU默认关闭,开发中需确保保持关闭
十、程序执行机制与寄存器协作
1. 程序计数器(PC)
- 本质:指针变量(4字节),指向当前执行指令地址
- 自增:每执行一条指令,PC自动+4(32位系统指令长度)
- 跳转:函数调用(BL指令)时,PC直接跳转到目标函数入口地址
2. 链接寄存器(LR)
- 功能:备份函数调用后的返回地址(PC+4)
- 流程:
BL func
执行前 → LR = PC + 4- 函数执行完
return
→ PC = LR,返回主调函数下一条指令
3. 栈指针寄存器(SP)
- 功能:始终指向栈顶
- 栈帧管理:
- 函数调用 → 分配栈帧(局部变量、参数)
- 函数返回 → 释放栈帧,SP回退
示例:
main() {int a = 100, b = 200;func1(a, b); // 调用时:LR=下条地址,SP分配func1栈帧
}
func1(int x, int y) {return x - y; // return时:PC=LR,SP回退
}
十一、ARM内核系列分类(Cortex)
系列 | 全称 | 定位 | 典型应用 | 特点 |
---|---|---|---|---|
Cortex-A | Application | 高端应用 | 手机、平板、Linux设备 | 性能强,支持复杂OS |
Cortex-R | Real-time | 实时控制 | 汽车电子、工控、航天 | 低延迟,高可靠性 |
Cortex-M | Microcontroller | 微控制器 | 家电、STM32、穿戴设备 | 低功耗,小体积,高集成度 |
补充:
- ARM公司仅设计内核,不生产芯片;
- 半导体厂商(三星、NXP等)购买授权,集成外设后生产SoC。
十二、SoC与多总线结构
1. SoC(System on Chip)
- 集成内核、存储器、外设于单芯片
- 支持多核(如四核SoC = 4个独立内核,各含R0-R15寄存器组)
2. 多总线结构(提升效率)
总线类型 | 全称 | 连接对象 | 特点 |
---|---|---|---|
AHB | Advanced High-performance Bus | RAM、Cache、高速外设 | 高带宽、低延迟 |
APB | Advanced Peripheral Bus | GPIO、UART、PWM等低速外设 | 低功耗、简化控制 |
结构图示意:
[内核] ——AHB—— [RAM / Flash]|——APB—— [GPIO_reg(0x88)] [UART_reg] [...]
十三、指令集、编译流程与开发工具
1. 汇编语言与机器码
- 一条汇编指令 ↔ 4字节机器码(一一对应)
- C语言一条语句 ↔ 多条机器码(需编译器转换)
2. C语言编译四阶段
阶段 | 输入 | 输出 | 功能说明 |
---|---|---|---|
预处理 | .c(含宏) | .i(纯C代码) | 展开#include、#define等 |
编译 | .i | .s(汇编) | 转换为汇编指令 |
汇编 | .s | .o(目标文件) | 翻译为二进制机器码 |
链接 | .o + 库文件 | 可执行文件 | 合并目标文件,解析符号引用 |
3. 开发工具
- IDE:如Q4,集成编辑、编译、调试、下载(初学者建议先手动操作理解流程)
- 工具链:GCC(编译器)、as(汇编器)、ld(链接器)
十四、核心外设接口简注
接口 | 全称/功能 |
---|---|
GPIO | General Purpose I/O,通用输入输出引脚 |
UART | Universal Asynchronous Receiver/Transmitter,串行通信 |
PWM | Pulse Width Modulation,脉宽调制,用于电机/灯光控制 |
所有外设通过总线连接CPU,通过操作其专用寄存器实现功能(如写GPIO寄存器控制LED亮灭)。
十五、重点知识总结
1. 三大核心寄存器
- PC(R15):程序计数器,控制指令执行流
- LR(R14):链接寄存器,保存函数返回地址
- SP(R13):栈指针,管理函数调用栈帧
2. ARM内核三大系列
- A系列:高性能应用(手机、Linux)
- R系列:实时控制(汽车、工控)
- M系列:微控制器(家电、STM32)
3. 编译四流程
- 预处理 → 编译 → 汇编 → 链接
4. 存储器分类
- RAM:高速、易失、直接寻址
- ROM/Flash:低速、非易失、部分可直接寻址
5. SoC与总线
- SoC:高度集成的片上系统
- AHB/APB:高速/低速总线分流,提升系统效率
6. MMU机制
- 虚拟地址 ↔ 物理地址映射
- 裸机开发必须关闭MMU
十六、半导体器件基础补充
1. 二极管
- 结构:PN结两侧引出金属电极,P区为阳极,N区为阴极。
- 特性:单向导电性,正向导通,反向截止。
- 应用:电路保护、发光(LED)、限流。
2. 三极管
- 结构:
- NPN型:基极加高电平导通,电流从集电极流向发射极。
- PNP型:基极加低电平导通,电流从发射极流向集电极。
- 功能:开关(数字电路)、放大(模拟电路)。
十七、芯片封装方式
封装类型 | 特点 | 应用示例 |
---|---|---|
DIP(双面直插) | 左右两排引脚,可插装于底座,无需焊接 | 早期单片机(如89C52) |
BGA(球栅阵列) | 引脚为底部焊盘,高集成度 | 手机处理器 |
TSOP | 四边贴片引脚,扁平状 | 存储芯片 |
COB(板上芯片) | 芯片直接集成于电路板,胶封装 | 早期学习机卡带芯片 |
十八、逻辑门与锁存器
- 与门:全1出1,芯片如74LS8。
- 或门:任1出1。
- 非门:输入输出相反。
- 锁存器:由6个与非门构成,存储1bit数据,是基本存储单元。
十九、RAM分类详解
类型 | 全称 | 特点 |
---|---|---|
SRAM | Static RAM | 晶体管锁存,无需刷新,速度快成本高,容量小(如单片机内部RAM) |
DRAM | Dynamic RAM | 电容存储,需刷新电路,密度大成本低 |
SDRAM | Synchronous DRAM | 同步时钟,提高DRAM速度 |
DDR RAM | Double Data Rate SDRAM | 利用时钟上升沿+下降沿传输,目前至DDR5 |
IRAM | Internal RAM | 通常为SRAM,位于SoC内部,访问更快 |
二十、ROM分类与发展
类型 | 全称 | 特点 |
---|---|---|
ROM | Read Only Memory | 出厂固化,不可改 |
PROM | Programmable ROM | 用户可一次性写入 |
EPROM | Erasable PROM | 紫外光擦除,芯片有窗口 |
EEPROM | Electrically Erasable PROM | 电擦除,可多次改写 |
Flash | 闪存 | 新一代非易失存储器 |
NOR Flash | — | 可直接寻址,速度快,用于程序存储 |
NAND Flash | — | 块设备,按扇区读写,容量大,如SD卡/eMMC |
eMMC | Embedded MultiMediaCard | 本质是NAND Flash,芯片形式集成 |
二十一、存储器层级结构(金字塔模型)
从上到下(速度↓,容量↑,成本↓):
- 寄存器(REG)
- Cache(高速缓存)
- 主存(RAM)
- 磁盘缓存(Disk Cache)
- 磁盘(Magnetic Disk)
- 磁带(Magnetic Tape)
- 光盘(Optical Disk)
二级存储系统 = Cache + 主存
三级存储系统 = Cache + 主存 + 辅存
二十二、运算器与控制器详解
1. 运算器
- 核心:ALU(算术逻辑单元)
- 功能:执行算术(+ - × ÷ %)与逻辑运算(& | ! ^)
- 辅助:累加寄存器、暂存寄存器等
2. 控制器
- 组成:
- 程序计数器(PC)
- 指令寄存器(IR)
- 指令译码器(ID)
- 操作控制器
- 三级流水线:
- 预取(Fetch)
- 译码(Decode)
- 执行(Execute)
- PC实际作用:指向即将预取的指令地址
二十三、总线结构演进
- 单总线:CPU、内存、外设共享,效率低(“人车混行”)
- 多总线:
- AHB:高速设备(RAM、Cache)
- APB:低速外设(GPIO、UART)
- DMA总线:外设↔内存直传,无需CPU干预,硬件加速
二十四、ARM指令集版本演进
- V1–V3:研发阶段,未商用
- V4–V9:商用阶段
- 当前主流开发板多支持 V7
- V8(2014年发布)
- V9(2023年3月发布)
- 指令集作用:汇编基于指令集编写;C语言需经编译→汇编→机器码
二十五、ARM处理器工作模式(7种基本模式)
模式名 | 英文缩写 | 特权性 | 触发条件 |
---|---|---|---|
User | — | 非特权 | 正常任务执行 |
FIQ | Fast IRQ | 特权 | 高优先级中断 |
IRQ | IRQ | 特权 | 普通中断 |
Supervisor | SVC | 特权 | 复位或软中断(管理员模式) |
Abort | — | 特权 | 存取异常(数据/指令) |
Undefined | Undef | 特权 | 执行未定义指令 |
System | — | 特权 | 使用User寄存器集,系统级操作 |
Cortex-A特有:Monitor模式(安全监控)
二十六、寄存器组织概要
各模式寄存器分布(从左至右:User、FIQ、IRQ、SVC、Undef、Abort)
- User列:r0–r15 + cpsr
- FIQ列:
- 共享:r0–r7, r15, cpsr
- 独立:r8–r14 + spsr
- IRQ/SVC/Undef/Abort列:
- 共享:r0–r12, r15, cpsr
- 独立:r13(sp), r14(lr) + spsr
System模式:使用User模式寄存器集
Thumb state:分Low/High寄存器
二十七、程序状态寄存器(CPSR)详解
位域划分:
- 31–28(条件标志位):
- N:负数标志(结果最高位=1)
- Z:零标志(结果=0)
- C:进位/借位标志
- V:溢出标志(有符号数越界)
- 27–25:Q位(ARM v5TE-J,饱和状态)
- 24:J位(Jazelle状态)
- 23–20:DNM(Do Not Modify)
- 19–16:GE[3:0](SIMD指令有效)
- 15–10:IT[7:2](IF-THEN状态)
- 9:E位(大小端控制)
- 8:A位(禁止不精确数据异常)
- 7:T位(ARM/Thumb/ThumbEE状态)
- T=0,J=0 → ARM状态
- T=1,J=0 → Thumb状态
- T=1,J=1 → ThumbEE状态
- 6–5:保留
- 4–0(Mode位):
- 00000:User
- 10001:FIQ
- 10010:IRQ
- 10011:SVC
- 10111:Abort
- 11011:Undefined
- 11111:System
- 10110:Monitor
二十八、数据与指令对齐规则
状态 | 指令宽度 | 对齐要求 | PC有效位 |
---|---|---|---|
ARM状态 | 32位 | 字对齐(4字节) | bits[31:2]有效 |
Thumb状态 | 16位 | 半字对齐(2字节) | bits[31:1]有效 |
Jazelle状态 | 8位 | 字节对齐 | 一次取4条指令 |
二十九、异常处理机制
1. 异常类型
- 硬件异常:Reset、FIQ、IRQ、Data Abort、Prefetch Abort、Undefined Instruction
- 软件异常:Software Interrupt(SWI)
2. 异常向量表(固定偏移)
偏移量 | 异常类型 |
---|---|
0x00 | Reset |
0x04 | Undefined Instruction |
0x08 | Software Interrupt |
0x0C | Prefetch Abort |
0x10 | Data Abort |
0x14 | Reserved |
0x18 | IRQ |
0x1C | FIQ |
向量表可置于0xFFFF0000(ARM720T及ARM9/10系列)
3. 异常处理流程
- 备份现场:
-
- CPSR → SPSR_<mode> - 返回地址 → LR_<mode>
-
- 设置新模式:
- 修改CPSR模式位
- 设置中断屏蔽位(I/F)
- 切换至ARM状态
- 跳转执行:PC = 异常向量地址
- 恢复现场(仅ARM态允许):
- SPSR → CPSR
- LR → PC
三十、架构补充:冯·诺依曼 vs 哈佛
架构类型 | 数据/指令存储 | 总线结构 | 优点 | 缺点 |
---|---|---|---|---|
冯·诺依曼 | 共用 | 单总线 | 成本低 | 速度受限 |
哈佛 | 分离 | 独立数据/指令总线 | 速度快、无冲突 | 成本高 |
混合架构(主流ARM) | 高速部件哈佛,低速部件冯·诺依曼 | AHB/APB分离 | 平衡性能与成本 | — |
三十一、逻辑电平标准
- TTL:
- 高电平 ≥2.4V → 逻辑1
- 低电平 ≤0.4V → 逻辑0
- CMOS:
- 高电平 ≈ VDD(如3.3V)
- 低电平 ≈ 0V
IM Max开发板使用3.3V CMOS电平
三十二、核心知识点归纳
1. 嵌入式系统基础
- 以应用为中心,软硬件可裁剪
- 三层结构:应用层、OS层、硬件层
- 硬件五大件:运算器、控制器、存储器、输入、输出
2. 核心芯片类型
- CPU、GPU、MCU、MPU、DSP、FPGA、SoC
- SoC = 片上系统,集成多模块
3. 指令集架构
- CISC(X86) vs RISC(ARM/MIPS/RISC-V)
- ARM V4–V9商用,当前主流V7
4. 存储系统
- RAM(易失、高速) vs ROM(非易失、低速)
- Flash分类:NOR(直接寻址)、NAND(块设备)
- 存储金字塔:寄存器→Cache→主存→辅存
5. 总线结构
- 单总线 → 多总线(AHB高速 / APB低速 / DMA加速)
6. ARM内核组件
- 寄存器:R0–R15(SP/LR/PC特殊)
- ALU、Cache(I/D)、CPSR/SPSR
- MMU:虚拟地址映射(裸机需关闭)
7. ARM工作模式
- 7种基本模式 + Monitor(Cortex-A)
- User非特权,其余特权
- 寄存器分共享/独立(FIQ最独立)
8. 异常机制
- 向量表固定偏移
- 自动备份CPSR→SPSR、PC→LR
- 恢复需手动SPSR→CPSR、LR→PC
9. 编译流程
- 预处理 → 编译 → 汇编 → 链接
- 工具链:GCC/as/ld
10. 外设接口
- GPIO、UART、PWM — 通过寄存器操作