2.嵌入式处理器

一、嵌入式处理器内核基础

1. 处理器内核的定义

处理器内核是处理器的内部核心设计 ,不是实体芯片,设计核心追求高速度、低功耗、易集成,是嵌入式处理器的"核心运算单元"。

2. 指令集核心:RISC

现代嵌入式处理器内核全部采用RISC(精简指令集),区别于计算机的CISC(复杂指令集),RISC的特点是指令简单、单周期执行、功耗低,适配嵌入式设备的资源受限场景。

3. 四大嵌入式处理器内核流派

嵌入式领域主流内核有4类,ARM是最核心、应用最广的流派,各流派特点对比:

流派 核心特点 典型应用场景
MIPS 架构开放、性价比高 路由器、机顶盒、工业控制
PowerPC 高性能、多核心 服务器、工业设备、游戏机
68K/COLDFIRE 摩托罗拉出品,兼容性好 传统工业嵌入式设备
ARM 低功耗、高代码密度、性价比最高 手机、单片机、物联网、智能硬件(嵌入式主流)

二、ARM体系结构核心

ARM体系结构是整个章节的核心基础,包含技术特征、版本演变两大重点,是理解ARM工作机制的前提。

1. ARM体系结构的核心技术特征

  1. RISC架构+单周期操作:指令简单,一条指令在一个时钟周期内完成,执行效率高;
  2. 加载/存储指令结构:只有专门的LDR(加载)/STR(存储)指令能访问内存/外设,其他指令仅操作寄存器,降低功耗;
  3. 固定长度指令(Cortex-A70前):32位ARM状态下指令均为32位,指令格式统一,译码速度快;
  4. 三地址指令格式 :如ADD R1,R2,R3(R1=R2+R3),操作数和结果分开存放,指令逻辑清晰;
  5. 32位地址空间(ARM7开始) :最大寻址空间4GB(2³²字节),满足嵌入式设备的存储需求;
  6. 指令流水线+存储架构 :不同ARM内核流水线级数不同,存储架构分两种:
    • 冯·诺依曼 :程序/数据存储器统一编址(如ARM7,3级流水线);
    • 哈佛 :程序/数据存储器分开编址(如ARM9,5级流水线),数据读取和指令取指可并行,速度更快。

2. ARM体系结构版本与内核的对应关系

ARM自诞生以来定义了8种版本(ARMv1~ARMv8),不同内核适配不同版本,重点记主流内核的版本归属(考试高频):

架构版本 对应核心ARM内核 应用特点
ARMv4T ARM7TDMI、ARM9TDMI 经典入门级,低速嵌入式设备
ARMv5TE ARM10TDMI、XScale 性能提升,支持DSP指令
ARMv6-M Cortex-M0/M0+/M1 超低成本、超低功耗,物联网微控制器
ARMv7 分3个子版本(重点!) Cortex系列核心划分
ARMv7-M Cortex-M3/M4 中低功耗,工业/消费类单片机
ARMv7-R Cortex-R4/R5/R7 实时性强,车载/工业实时控制
ARMv7-A Cortex-A5/A7/A8/A9/A15 高性能,手机/平板/嵌入式开发板
ARMv8-A Cortex-A53/A57/A70/A73 64位架构,高端嵌入式设备

核心结论 :Cortex是ARM现代内核的核心系列,按应用场景分为M/R/A三大子系列,是后续学习的重点。

三、ARM处理器的工作状态与工作模式

ARM处理器的工作状态 决定指令执行格式,工作模式决定权限和寄存器访问范围,是ARM的核心工作机制。

1. 工作状态(4种,核心记前3种)

状态由处理器硬件/指令控制切换,核心区别是指令位数和编码密度,适配不同功耗/性能需求:

工作状态 指令位数 核心特点 适用内核
ARM状态 32位 指令功能完整,执行速度快 所有经典ARM(ARM7/9)、Cortex-A/R
Thumb状态 16位 指令短小,代码密度高、功耗低 支持ARMv4T及以上内核
Thumb-2状态 16/32位 兼顾16位低功耗和32位高性能,自动选择指令位数 Cortex-M系列(主流)
调试状态 - 处理器停机调试时进入 所有内核

状态切换 :通过BX指令 实现,将操作数寄存器最低位设为1 进入Thumb状态,设为0 进入ARM状态;
特殊考点Cortex-M3只有Thumb-2和调试状态,无纯ARM/Thumb状态,是嵌入式单片机的核心特点。

2. 工作模式(分两类:经典ARM模式/Cortex-M模式)

工作模式决定处理器的特权级别寄存器访问范围 ,模式切换由异常/中断/硬件复位触发,无法由用户程序直接切换。

(1)经典ARM工作模式(7种,经典ARM7/9内核)

7种模式分为用户模式(非特权)6种特权模式,特权模式用于处理异常/中断/系统保护,核心参数如下(考试必考):

工作模式 英文缩写 核心功能 关键特征 CPSR[M4:M0]编码
用户模式 User 程序正常执行(非特权) 无SPSR,不能访问特权寄存器 10000
快速中断 FIQ 高速数据传输/通道处理 独有R8_fiq~R14_fiq,中断优先级高 10001
外部中断 IRQ 普通外部中断处理 独有R13_irq~R14_irq 10010
管理模式 SVC 系统保护,处理软中断SWI 复位/软中断默认进入,最常用特权模式 10011
中止模式 ABT 处理存储器故障(虚拟存储) 处理地址访问错误 10111
未定义指令 UND 处理未定义指令,仿真协处理器 适配硬件协处理器扩展 11011
系统模式 SYS 运行特权级系统任务 与User模式寄存器相同,特权访问 11111

核心考点

  • 只有User模式是非特权模式,其余均为特权模式,防止用户程序非法操作硬件;
  • SVC模式是复位默认模式,系统启动后首先进入该模式;
  • FIQ模式独有最多寄存器(R8~R14),无需保存通用寄存器,中断响应速度最快。

(2)Cortex-M工作模式(2种,现代Cortex-M3/M4内核)

经典7种模式简化为线程模式处理模式,更适配单片机的简单应用场景:

工作模式 核心功能 切换触发条件
线程模式 执行普通用户/系统代码 复位自动进入,异常返回后进入
处理模式 处理异常/中断(特权) 外部中断/系统异常触发

特权级划分 :线程模式又分特权级用户级 ,由CONTROL寄存器修改,用户级线程模式无硬件访问权限,提升系统安全性。

四、ARM处理器的寄存器组织

ARM处理器的寄存器是指令操作的唯一载体 (除加载/存储外),寄存器组织与工作状态/工作模式 强绑定,分为经典ARM(ARM状态)寄存器Cortex-M寄存器 两类,核心记37个寄存器(经典ARM)Cortex-M的特殊寄存器

1. 经典ARM(ARM状态)的寄存器组织

37个32位寄存器31个通用寄存器(含PC) + 6个状态寄存器 ,寄存器按分组共享设计,不同模式共享基础寄存器,独有专用寄存器,避免数据冲突。

(1)31个通用寄存器(分3组)

  1. 不分组寄存器(R0~R7):所有模式共享,任何模式下访问的都是同一个寄存器,中断/模式切换时需手动保存,否则数据会被覆盖;
  2. **分组寄存器(R8R14)**:部分模式独有,其中FIQ模式独有R8_fiqR14_fiq,其余特权模式仅独有R13~R14;
    • R13(SP):堆栈指针,不同模式独有自己的SP,避免不同模式的堆栈数据冲突;
    • R14(LR):链接寄存器,保存子程序/中断的返回地址,不同模式独有;
  3. 程序计数器(R15,PC):所有模式共享,保存当前执行指令的下一条指令地址(流水线偏移)。

(2)6个状态寄存器

  1. 当前程序状态寄存器(CPSR) :所有模式共享,保存当前处理器的状态标志、中断屏蔽、工作模式,是ARM的"状态控制核心";
  2. 备份程序状态寄存器(SPSR) :共5个(SPSR_fiq/irq/svc/abt/und),特权模式独有,用于保存CPSR的副本(中断/异常时),中断返回后恢复CPSR,User/SYS模式无SPSR。

CPSR核心位解析(32位,重点记低16位):

位段 核心功能 关键标志
[31:28] 条件码标志(N/Z/C/V) 反映运算结果(如Z=1表示结果为0)
[27] Q标志 DSP指令饱和/溢出标志
[19:8] DNM/RAZ 预留位,不可修改/读为0
[7] I标志 I=1关闭普通中断(IRQ)
[6] F标志 F=1关闭快速中断(FIQ)
[5] T标志 T=1为Thumb状态,T=0为ARM状态
[4:0] M4~M0 工作模式编码(如10000=User)

2. Cortex-M系列的寄存器组织

经典ARM寄存器的简化版,更适配单片机的简单操作,核心特点:

  1. 通用寄存器 :R0R15,其中R8R12为高位寄存器(16位指令不可用,Thumb-2可用);
  2. 特殊堆栈指针(R13) :分MSP(主堆栈指针)PSP(进程堆栈指针),MSP用于处理模式/特权线程模式,PSP用于用户级线程模式;
  3. 状态寄存器 :合并为xPSR ,分3个子寄存器:
    • APSR:应用程序状态寄存器,保存条件码标志(N/Z/C/V/Q);
    • IPSR:中断程序状态寄存器,保存当前异常编号;
    • EPSR:执行程序状态寄存器,保存指令执行状态。

五、ARM处理器的异常中断

异常中断是嵌入式处理器响应外部事件/内部故障 的核心机制,分为经典ARM异常中断Cortex-M异常中断 ,核心记异常类型、优先级、响应/返回过程(嵌入式开发的核心考点,如中断服务程序编写)。

1. 异常中断的基本概念

  • 异常:内部/外部事件触发的处理器请求,使程序跳转到异常处理程序执行,处理完成后返回原程序;
  • 正常执行:ARM指令PC+4,Thumb指令PC+2,按顺序执行;
  • 异常向量地址:不同异常的固定入口地址,处理器触发异常后直接跳转到该地址执行处理程序。

2. 经典ARM处理器的异常中断(7种)

(1)7种异常类型+优先级(从高到低,必考)

  1. 复位(RESET):最高优先级,复位引脚有效时触发,进入SVC模式;
  2. 数据访问中止(DABT):数据地址访问错误/无权限时触发;
  3. 快速中断(FIQ):高速外部中断触发;
  4. 外部中断(IRQ):普通外部中断触发;
  5. 指令预取中止(PABT):指令地址访问错误/无权限时触发;
  6. 软件中断(SWI)/未定义指令(UND):最低优先级,SWI用于用户模式调用特权操作,UND用于仿真协处理器。

(2)异常向量地址(高低端,核心记低端0x00000000开始)

异常类型 低端地址(常用) 高端地址 对应工作模式
复位 0x00000000 0xFFFF0000 SVC
未定义指令 0x00000004 0xFFFF0004 UND
软件中断 0x00000008 0xFFFF0008 SVC
预取中止 0x0000000C 0xFFFF000C ABT
数据中止 0x00000010 0xFFFF0010 ABT
IRQ 0x00000018 0xFFFF0018 IRQ
FIQ 0x0000001C 0xFFFF001C FIQ

(3)经典ARM异常响应过程(4步,硬件自动完成)

  1. 保护状态:CPSR → SPSR(将当前状态保存到对应模式的SPSR);
  2. 设置状态:修改CPSR的M4~M0进入对应模式,设置I=1关闭IRQ(防止嵌套中断);
  3. 保存断点:将返回地址保存到对应模式的R14(LR)
  4. 跳转执行:PC赋值为异常向量地址,执行处理程序。

(4)经典ARM异常返回过程(4步,硬件自动完成)

  1. 恢复寄存器:恢复中断前的通用寄存器(手动/编译器完成);
  2. 恢复状态:SPSR → CPSR(将备份的状态恢复到CPSR);
  3. 恢复断点:将LR的值赋值给PC,回到原程序执行;
  4. 开中断:清除CPSR的I/F标志,重新开放IRQ/FIQ。

3. Cortex-M处理器的异常中断(现代主流,重点记)

经典ARM异常的扩展和简化 ,适配单片机的多中断需求,核心特点是最多支持256个异常 ,分为内部异常(015)**和**外部中断(16255),是STM32等单片机的中断基础。

(1)核心异常类型(10种基础,其余为外部中断)

  1. 系统复位(RESET,最高优先级);
  2. 不可屏蔽中断(NMI);
  3. 硬件故障(Hart Fault);
  4. 存储器管理故障(MemMang);
  5. 总线故障(Bus Fault);
  6. 使用故障(Usage Fault);
  7. 软中断(SVC Call);
  8. 可挂起系统服务(PendSV);
  9. 系统定时中断(SysTick,单片机核心定时器);
  10. 外部中断(IRQ0~IRQ239,共240个)。

(2)中断编号与向量地址计算(嵌入式开发必考,核心公式

Cortex-M的异常通过编号 区分,分为中断类型号(ID)中断号(IRQn) ,向量地址为4字节对齐(每个异常占4字节),核心公式:

  1. 中断号与类型号转换:IRQn = ID - 16ID = IRQn + 16(内部异常ID015,IRQn为负数;外部中断ID16255,IRQn0~239);
  2. 异常向量地址:Iadd0 = ID × 4(通用公式);
  3. 外部中断向量地址:Iadd0 = (16 + IRQn) × 4(直接用IRQn计算,最常用)。

例题:Cortex-M3中IRQ18的中断类型号和向量地址?

  • 类型号:ID = 18 + 16 = 34
  • 向量地址:Iadd0 = 34 × 4 = 136 = 0x00000088(与课件中ADC1_2中断地址一致,验证正确)。

特殊考点 :复位异常的PC指向0x00000004(而非0x00000000),0x00000000存放复位向量,通常是一条无条件转移指令,跳转到系统初始化程序。

(3)Cortex-M异常响应/返回过程(硬件自动入栈/出栈,核心特点)

与经典ARM不同,Cortex-M异常触发时硬件自动完成寄存器入栈,无需手动保存,是单片机开发的便捷性体现:

  1. 响应过程
    • 入栈保护:自动将xPSR、PC、LR、R12、R3、R2、R1、R0压入堆栈(共8个寄存器,0x1C字节);
    • 取入口地址:根据ID计算向量地址;
    • 更新寄存器:SP指向栈顶,IPSR保存异常ID,PC指向向量地址,LR赋值为EXC_RETURN(特殊返回值)
  2. 返回过程
    • 出栈恢复:自动将栈中寄存器弹出到R0~R12、LR、PC、xPSR
    • 模式切换:根据EXC_RETURN的值切换模式/堆栈(如0xFFFFFFF9返回线程模式+MSP)。

六、ARM的存储器格式及数据类型

ARM处理器对存储器的编址和数据存储格式 有严格规定,是嵌入式开发中数据读写、硬件通信 的基础,核心记大小端模式数据对齐要求

1. 存储器编址基础

ARM将存储器看作从0x00000000开始的线性字节空间 ,32位处理器最大寻址4GB (2³²),所有内存/外设均按字节地址编址,字/半字数据由多个字节组成。

2. 大小端模式(数据存储的两种格式,必考)

大小端模式决定多字节数据的字节排列顺序 ,嵌入式设备中小端模式为默认/主流(与PC一致),部分硬件支持大端模式(如网络设备)。

  • 大端模式(Big-Endian)高字节存低地址,低字节存高地址(符合人类读写习惯,如0x12345678,0x12存低地址);
  • 小端模式(Little-Endian)低字节存低地址,高字节存高地址(符合处理器运算习惯,ARM默认,如0x12345678,0x78存低地址)。

举例:字数据0x12345678(字节1:0x78,字节2:0x56,字节3:0x34,字节4:0x12),存储在地址0x30001000开始的空间:

地址 大端模式 小端模式(主流)
0x30001000 0x12 0x78
0x30001001 0x34 0x56
0x30001002 0x56 0x34
0x30001003 0x78 0x12

3. 支持的数据类型及对齐要求

ARM支持3种基本数据类型 ,且有严格的地址对齐要求 ,未对齐的地址访问会触发数据中止异常

数据类型 位数 地址对齐要求 说明
字节(Byte) 8位 无要求(任意地址) 最基础类型,无对齐限制
半字(Halfword) 16位 2字节对齐(地址最低位为0) 如0x00001002,不可为0x00001001
字(Word) 32位 4字节对齐(地址低两位为0) 如0x00001004,不可为0x00001002

指令对齐要求 :ARM状态指令(32位)4字节对齐 ,Thumb状态指令(16位)2字节对齐

七、ARM指令流水线技术

流水线技术是提升处理器执行效率 的核心手段,通过指令的并行执行 (取指、译码、执行重叠),让处理器在一个时钟周期内完成多条指令的不同阶段,ARM所有内核均采用流水线设计,流水线级数越高,执行效率越高

1. 流水线的基本原理

将指令执行过程拆分为多个独立阶段 ,每个阶段由专门的硬件单元处理,多条指令的不同阶段可同时执行,例如3级流水线:取指→译码→执行,指令1执行时,指令2译码、指令3取指,大幅提升吞吐量。

2. 主流ARM内核的流水线级数(必考)

ARM内核 流水线级数 存储架构 核心特点
ARM7 3级 冯·诺依曼 入门级,低速低功耗
ARM9 5级 哈佛 性能提升,指令并行性增强
ARM10 6级 哈佛 新增发射/存储阶段
ARM11 8级 哈佛 预取+多级累加,支持Cache
Cortex-A8 13级 哈佛 高性能,支持双流水线
Cortex-A9 13级 哈佛 多核支持,嵌入式高端设备

3. 核心流水线解析(3级/5级,基础)

(1)ARM7的3级流水线(取指→译码→执行)

  • 取指:从内存取出指令,放入流水线;
  • 译码:解析指令含义,不占用数据通路;
  • 执行:执行指令(运算/移位/读写寄存器),占用数据通路。
    特点 :单周期完成一个阶段,3个时钟周期完成一条指令,但吞吐量为1条/时钟周期(重叠执行)。

(2)ARM9的5级流水线(取指→译码→执行→缓冲数据→回写)

哈佛架构支撑,指令取指和数据访问并行,新增缓冲数据回写阶段:

  • 缓冲数据:处理LDR/STR指令的内存访问,非内存指令仅缓冲1个时钟周期,保证所有指令流水线流程一致;
  • 回写:将运算结果/内存数据写回寄存器,分离执行和写回,提升并行性。

4. 流水线性能计算(考点,公式应用)

核心公式

  • 流水线启动时间:级数 × 单个阶段时间(完成第一条指令的时间);
  • 总执行时间:启动时间 + (指令数-1) × 单个阶段时间(后续指令每周期完成1条);
  • 最大吞吐量:1 / 单个阶段时间(稳定后每周期完成1条)。

例题:5级流水线,每级4ns,执行100亿条指令的最短时间?

  • 启动时间:5×4=20ns(完成5条指令);
  • 稳定后每4ns完成1条,100亿条总时间:20 + (100亿-5)×4 ≈ 400亿ns = 40s(与课件答案一致)。

八、基于AMBA总线的ARM芯片及典型处理器

ARM内核本身不能直接作为芯片使用,需搭配总线、外设、存储 等模块,AMBA总线是ARM官方定义的片上总线标准,所有ARM芯片均基于AMBA总线设计,最后介绍主流的ARM芯片厂商和系列,对接实际开发。

1. AMBA总线体系结构

AMBA(Advanced Microcontroller Bus Architecture)是ARM为嵌入式芯片设计的片上总线标准 ,核心是分总线设计 ,兼顾高性能低功耗 ,分为系统总线外围总线两层:

总线类型 核心特点 代表标准 连接设备
系统总线 高带宽、高速度、多主设备 AHB/AXI/ACE ARM内核、SRAM、DMA、存储控制器
外围总线 低速度、低功耗、单主设备 APB 通用外设(UART/I2C/SPI/GPIO)

总线桥接 :系统总线和外围总线通过桥接器连接,实现不同总线之间的协议转换和数据传输,保证芯片内部数据的有序流动。

2. 典型ARM嵌入式处理器芯片(主流厂商+系列,对接实际开发)

ARM内核由ARM公司设计,授权给各大芯片厂商二次开发,推出不同系列的芯片,主流厂商 为ST、NXP、TI、三星、新唐科技,其中ST的STM32系列 是嵌入式单片机的绝对主流(重点学习)。

(1)ST公司:STM32系列(Cortex-M内核,单片机主流)

基于Cortex-M0/M3/M4/M7内核,分多个子系列,适配不同场景:

  • STM32F1:Cortex-M3,入门级主流,工业/消费类设备;
  • STM32F4:Cortex-M4,带DSP/FPU,高性能;
  • STM32F0:Cortex-M0,超低成本;
  • STM32L系列:超低功耗,物联网设备。

STM32F10x命名规则 (必考,识别芯片参数):

STM32 F 107 VCT6

  • STM32:基于ARM的32位微控制器;
  • F:产品类型(通用型);
  • 107:子系列(互联型,带以太网/USB);
  • V:引脚数(100脚);
  • C:闪存容量(256KB);
  • T:封装(LQFP);
  • 6:温度范围(商业级,-40~85℃)。

(2)其他主流厂商

  • NXP:LPC系列(Cortex-M0/M3/M4),工业控制;
  • 三星:S3C/Exynos系列(Cortex-A),手机/开发板(如S3C2440);
  • TI:OMAP系列(Cortex-A/R),车载/工业实时控制;
  • 新唐科技:NUC系列(Cortex-M),国产低成本单片机。

九、本章核心考点与课后重点

1. 核心考点(考试/面试高频)

  1. 嵌入式四大内核流派,ARM的核心特点;
  2. ARMv7的三个子版本(M/R/A)及对应内核/应用;
  3. ARM的工作状态(Thumb-2)、经典7种工作模式(User/SVC/FIQ/IRQ);
  4. 经典ARM37个寄存器的组成,CPSR的核心位(I/F/T/M4~M0);
  5. 经典ARM7种异常的优先级,Cortex-M中断编号与向量地址计算;
  6. 大小端模式的定义,数据/指令的对齐要求;
  7. 流水线级数与性能计算,3级/5级流水线的阶段;
  8. STM32命名规则,AMBA总线的分层设计。