当前位置: 首页 > news >正文

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. 硬件五大部件

  1. 运算器 —— 执行算术与逻辑运算
  2. 控制器 —— 协调各部件工作
  3. 存储器 —— 存储程序与数据
  4. 输入设备 —— 如键盘、传感器
  5. 输出设备 —— 如屏幕、电机

教师提示:小学“微机课”死记硬背,大学《微机原理》深入理解,后续课程将通过画图强化记忆。


四、处理器类型详解与辨析

类型全称特点与类比应用场景
CPUCentral Processing Unit通用处理器,“CEO”角色,全能但专项效率低PC、服务器等通用计算
GPUGraphics Processing Unit专精图形与并行浮点运算,“高效流水线工人”游戏、AI、渲染
MCU/单片机Micro Controller Unit集成运算器、控制器、存储器、外设(GPIO、PWM等),高集成度,控制导向工业控制、家电、51系列等
DSPDigital Signal Processor专为高强度数学运算设计,硬件加速,响应快航空航天、汽车电子、通信
MPUMicro Processor Unit性能强大的通用处理器,简化版CPU手机、嵌入式设备中的ARM芯片
SoCSystem 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:精简指令集计算机

类型全称代表架构特点
CISCComplex Instruction Set ComputerX86指令丰富复杂,硬件庞大,功耗高;符合“二八定律”,多数指令使用频率低
RISCReduced Instruction Set ComputerARM/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. 程序状态寄存器

寄存器全称功能
CPSRCurrent Program Status Register保存当前CPU运行状态(如溢出、中断使能等),32位
SPSRSaved Program Status Register备份CPSR状态,用于模式切换时恢复

示例:unsigned int i = 0xFFFFFFFF; i + 1; → 产生溢出,CPSR中对应标志位被置位。


八、内存空间布局(32位系统)

从低地址 → 高地址:

  1. 代码段

    • 存储编译后的机器指令(每条4字节)
    • 只读属性,不可修改
    • 函数按块存储(如main、func1各有独立指令块)
  2. 全局区

    • 初始化全局变量
    • 未初始化全局变量(BSS段)
    • 静态变量
  3. 堆区

    • 动态内存分配(malloc/free)
    • 向上生长,空间较大
  4. 栈区

    • 向下生长(背靠内核区),避免覆盖内核
    • 存储函数局部变量、参数
    • 每次函数调用生成“栈帧”
  5. 内核区

    • 操作系统核心代码与数据
    • 最高优先级,被覆盖将导致系统崩溃

九、内存管理单元(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)
  • 流程
    1. BL func 执行前 → LR = PC + 4
    2. 函数执行完 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-AApplication高端应用手机、平板、Linux设备性能强,支持复杂OS
Cortex-RReal-time实时控制汽车电子、工控、航天低延迟,高可靠性
Cortex-MMicrocontroller微控制器家电、STM32、穿戴设备低功耗,小体积,高集成度

补充

  • ARM公司仅设计内核,不生产芯片;
  • 半导体厂商(三星、NXP等)购买授权,集成外设后生产SoC。

十二、SoC与多总线结构

1. SoC(System on Chip)

  • 集成内核、存储器、外设于单芯片
  • 支持多核(如四核SoC = 4个独立内核,各含R0-R15寄存器组)

2. 多总线结构(提升效率)

总线类型全称连接对象特点
AHBAdvanced High-performance BusRAM、Cache、高速外设高带宽、低延迟
APBAdvanced Peripheral BusGPIO、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(链接器)

十四、核心外设接口简注

接口全称/功能
GPIOGeneral Purpose I/O,通用输入输出引脚
UARTUniversal Asynchronous Receiver/Transmitter,串行通信
PWMPulse 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分类详解

类型全称特点
SRAMStatic RAM晶体管锁存,无需刷新,速度快成本高,容量小(如单片机内部RAM)
DRAMDynamic RAM电容存储,需刷新电路,密度大成本低
SDRAMSynchronous DRAM同步时钟,提高DRAM速度
DDR RAMDouble Data Rate SDRAM利用时钟上升沿+下降沿传输,目前至DDR5
IRAMInternal RAM通常为SRAM,位于SoC内部,访问更快

二十、ROM分类与发展

类型全称特点
ROMRead Only Memory出厂固化,不可改
PROMProgrammable ROM用户可一次性写入
EPROMErasable PROM紫外光擦除,芯片有窗口
EEPROMElectrically Erasable PROM电擦除,可多次改写
Flash闪存新一代非易失存储器
NOR Flash可直接寻址,速度快,用于程序存储
NAND Flash块设备,按扇区读写,容量大,如SD卡/eMMC
eMMCEmbedded MultiMediaCard本质是NAND Flash,芯片形式集成

二十一、存储器层级结构(金字塔模型)

从上到下(速度↓,容量↑,成本↓):

  1. 寄存器(REG)
  2. Cache(高速缓存)
  3. 主存(RAM)
  4. 磁盘缓存(Disk Cache)
  5. 磁盘(Magnetic Disk)
  6. 磁带(Magnetic Tape)
  7. 光盘(Optical Disk)

二级存储系统 = Cache + 主存
三级存储系统 = Cache + 主存 + 辅存


二十二、运算器与控制器详解

1. 运算器

  • 核心:ALU(算术逻辑单元)
  • 功能:执行算术(+ - × ÷ %)与逻辑运算(& | ! ^)
  • 辅助:累加寄存器、暂存寄存器等

2. 控制器

  • 组成
    • 程序计数器(PC)
    • 指令寄存器(IR)
    • 指令译码器(ID)
    • 操作控制器
  • 三级流水线
    1. 预取(Fetch)
    2. 译码(Decode)
    3. 执行(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非特权正常任务执行
FIQFast IRQ特权高优先级中断
IRQIRQ特权普通中断
SupervisorSVC特权复位或软中断(管理员模式)
Abort特权存取异常(数据/指令)
UndefinedUndef特权执行未定义指令
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. 异常向量表(固定偏移)

偏移量异常类型
0x00Reset
0x04Undefined Instruction
0x08Software Interrupt
0x0CPrefetch Abort
0x10Data Abort
0x14Reserved
0x18IRQ
0x1CFIQ

向量表可置于0xFFFF0000(ARM720T及ARM9/10系列)

3. 异常处理流程

  1. 备份现场
    • - CPSR → SPSR_<mode>
      - 返回地址 → LR_<mode>
      
  2. 设置新模式
    • 修改CPSR模式位
    • 设置中断屏蔽位(I/F)
    • 切换至ARM状态
  3. 跳转执行:PC = 异常向量地址
  4. 恢复现场(仅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 — 通过寄存器操作
http://www.dtcms.com/a/390909.html

相关文章:

  • 【MySQL】从视图到用户和权限管理
  • 栈与队列:核心差异与应用场景
  • 【Hadoop】ZooKeeper:分布式系统的协调核心与一致性保障
  • AWS 全球机房延迟对比 区域选型经验分享
  • 免费插件分享 |Scene Switcher Pro
  • Vue前端开发工具有哪些?常用Vue开发工具推荐、Vue前端开发工具对比与最佳实践分享
  • 信道管理模块实现
  • Java 网络原理(一)--- 自定义协议,UDP协议和TCP协议
  • 键盘失灵 键盘不好使问题解决(更新到 Windows 11后 )
  • 远程控制操作中,如何开启游戏键盘及3D鼠标?移动端设置教程分享
  • C 语言宏函数进阶:逗号表达式与 GNU 拓展的妙用
  • 币安加密货币API接口文档
  • Ubuntu20.04仿真 | iris无人机添加mid360激光雷达可直接使用文件
  • 17.ImGui-Hook消息循环
  • 《Skinned Mesh Renderer与LOD系统蒙皮变形异常全解析》
  • 免费插件分享 |Pro Scene Manager
  • Elasticsearch 的 ES|QL 编辑器体验 vs. OpenSearch 的 PPL 事件分析器
  • Unity核心概念⑪:光
  • C 语言运算符优先级(超详细)
  • Ingress使用示例
  • HarmonyOS开源项目分享:识笺——高效学习的卡片应用
  • 揭秘提示词攻击:AI时代的安全新战场
  • vscode安装go插件问题
  • 创作一个简单的编程语言3 加上VLLM后端
  • C语言入门指南:内存操作函数详解
  • React 列表渲染 列表排序 条件渲染 数据渲染 响应式处理
  • 从安卓手机切换到iPhone:好处、缺点及4种方法
  • C++ 篇 类和对象(1)万能工具怎么用?
  • Ansible-copy模块
  • SAPO去中心化训练:多节点协作让LLM训练效率提升94%