找回密码
 立即注册
首页 业界区 业界 2.嵌入式处理器

2.嵌入式处理器

赘暨逢 5 天前
一、嵌入式处理器内核基础

1. 处理器内核的定义

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

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

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

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


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

    • 冯·诺依曼:程序/数据存储器统一编址(如ARM7,3级流水线);
    • 哈佛:程序/数据存储器分开编址(如ARM9,5级流水线),数据读取和指令取指可并行,速度更快。

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

ARM自诞生以来定义了8种版本(ARMv1~ARMv8),不同内核适配不同版本,重点记主流内核的版本归属(考试高频):
架构版本对应核心ARM内核应用特点ARMv4TARM7TDMI、ARM9TDMI经典入门级,低速嵌入式设备ARMv5TEARM10TDMI、XScale性能提升,支持DSP指令ARMv6-MCortex-M0/M0+/M1超低成本、超低功耗,物联网微控制器ARMv7分3个子版本(重点!)Cortex系列核心划分ARMv7-MCortex-M3/M4中低功耗,工业/消费类单片机ARMv7-RCortex-R4/R5/R7实时性强,车载/工业实时控制ARMv7-ACortex-A5/A7/A8/A9/A15高性能,手机/平板/嵌入式开发板ARMv8-ACortex-A53/A57/A70/A7364位架构,高端嵌入式设备核心结论:Cortex是ARM现代内核的核心系列,按应用场景分为M/R/A三大子系列,是后续学习的重点。
三、ARM处理器的工作状态与工作模式

ARM处理器的工作状态决定指令执行格式,工作模式决定权限和寄存器访问范围,是ARM的核心工作机制。
1. 工作状态(4种,核心记前3种)

状态由处理器硬件/指令控制切换,核心区别是指令位数和编码密度,适配不同功耗/性能需求:
工作状态指令位数核心特点适用内核ARM状态32位指令功能完整,执行速度快所有经典ARM(ARM7/9)、Cortex-A/RThumb状态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_irq10010管理模式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组)


  • 不分组寄存器(R0~R7):所有模式共享,任何模式下访问的都是同一个寄存器,中断/模式切换时需手动保存,否则数据会被覆盖;
  • **分组寄存器(R8R14)**:部分模式独有,其中FIQ模式独有R8_fiqR14_fiq,其余特权模式仅独有R13~R14;

    • R13(SP):堆栈指针,不同模式独有自己的SP,避免不同模式的堆栈数据冲突;
    • R14(LR):链接寄存器,保存子程序/中断的返回地址,不同模式独有;

  • 程序计数器(R15,PC):所有模式共享,保存当前执行指令的下一条指令地址(流水线偏移)。
(2)6个状态寄存器


  • 当前程序状态寄存器(CPSR):所有模式共享,保存当前处理器的状态标志、中断屏蔽、工作模式,是ARM的“状态控制核心”;
  • 备份程序状态寄存器(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寄存器的简化版,更适配单片机的简单操作,核心特点:

  • 通用寄存器:R0R15,其中R8R12为高位寄存器(16位指令不可用,Thumb-2可用);
  • 特殊堆栈指针(R13):分MSP(主堆栈指针)PSP(进程堆栈指针),MSP用于处理模式/特权线程模式,PSP用于用户级线程模式;
  • 状态寄存器:合并为xPSR,分3个子寄存器:

    • APSR:应用程序状态寄存器,保存条件码标志(N/Z/C/V/Q);
    • IPSR:中断程序状态寄存器,保存当前异常编号;
    • EPSR:执行程序状态寄存器,保存指令执行状态。

  • 为什么 Cortex-M 系列摒弃纯 ARM 状态?


  • 纯 ARM 状态(32 位指令)虽然执行效率高,但代码密度低(相同功能需要更多指令字节),而嵌入式单片机的闪存 / 内存资源通常有限(几 KB~ 几 MB),Thumb-2 的 16/32 位混合指令既能用 16 位指令节省空间,又能用 32 位指令实现复杂操作,完美平衡 “代码密度” 和 “执行效率”,这是 Cortex-M 适配单片机场景的核心设计。
  • “调试状态” 的特殊性
  • 所有 Cortex-M 内核的调试状态都是非执行状态(处理器停机调试时进入),仅用于调试器访问寄存器、修改内存,并非指令执行状态,因此Thumb/Thumb-2 是 Cortex-M 唯一的指令执行状态。
  • 容易混淆的点:ARM 状态≠32 位指令
  • 很多新手会把 “32 位指令” 等同于 “ARM 状态”,但 Cortex-M 的 Thumb-2 包含 32 位指令,只是这些 32 位指令属于 Thumb 指令集的扩展,而非传统 ARM 状态的 32 位指令 —— 两者的指令编码格式、执行规则完全不同,这也是 Cortex-M 与经典 ARM(如 ARM7/9)的核心区别。
五、ARM处理器的异常中断

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


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

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


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

异常类型低端地址(常用)高端地址对应工作模式复位0x000000000xFFFF0000SVC未定义指令0x000000040xFFFF0004UND软件中断0x000000080xFFFF0008SVC预取中止0x0000000C0xFFFF000CABT数据中止0x000000100xFFFF0010ABTIRQ0x000000180xFFFF0018IRQFIQ0x0000001C0xFFFF001CFIQ(3)经典ARM异常响应过程(4步,硬件自动完成)


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


  • 恢复寄存器:恢复中断前的通用寄存器(手动/编译器完成);
  • 恢复状态:SPSR → CPSR(将备份的状态恢复到CPSR);
  • 恢复断点:将LR的值赋值给PC,回到原程序执行;
  • 开中断:清除CPSR的I/F标志,重新开放IRQ/FIQ。
3. Cortex-M处理器的异常中断(现代主流,重点记)

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


  • 系统复位(RESET,最高优先级);
  • 不可屏蔽中断(NMI);
  • 硬件故障(Hart Fault);
  • 存储器管理故障(MemMang);
  • 总线故障(Bus Fault);
  • 使用故障(Usage Fault);
  • 软中断(SVC Call);
  • 可挂起系统服务(PendSV);
  • 系统定时中断(SysTick,单片机核心定时器);
  • 外部中断(IRQ0~IRQ239,共240个)。
(2)中断编号与向量地址计算(嵌入式开发必考,核心公式

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

  • 中断号与类型号转换:IRQn = ID - 16 或 ID = IRQn + 16(内部异常ID015,IRQn为负数;外部中断ID16255,IRQn0~239);
  • 异常向量地址:Iadd0 = ID × 4(通用公式);
  • 外部中断向量地址: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异常触发时硬件自动完成寄存器入栈,无需手动保存,是单片机开发的便捷性体现:

  • 响应过程

    • 入栈保护:自动将xPSR、PC、LR、R12、R3、R2、R1、R0压入堆栈(共8个寄存器,0x1C字节);
    • 取入口地址:根据ID计算向量地址;
    • 更新寄存器:SP指向栈顶,IPSR保存异常ID,PC指向向量地址,LR赋值为EXC_RETURN(特殊返回值)

  • 返回过程

    • 出栈恢复:自动将栈中寄存器弹出到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开始的空间:
地址大端模式小端模式(主流)0x300010000x120x780x300010010x340x560x300010020x560x340x300010030x780x123. 支持的数据类型及对齐要求

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内核流水线级数存储架构核心特点ARM73级冯·诺依曼入门级,低速低功耗ARM95级哈佛性能提升,指令并行性增强ARM106级哈佛新增发射/存储阶段ARM118级哈佛预取+多级累加,支持CacheCortex-A813级哈佛高性能,支持双流水线Cortex-A913级哈佛多核支持,嵌入式高端设备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/ACEARM内核、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. 核心考点(考试/面试高频)


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

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册