引言:为什么是ARM?

在开始之前,我们先要理解为什么ARM架构会主导今天的嵌入式世界。

arm 嵌入式处理器结构与应用基础
(图片来源网络,侵删)
  • 低功耗:ARM采用RISC(精简指令集)架构,指令简单、执行周期短,并且拥有先进的电源管理技术,使其非常适合电池供电的移动设备和物联网设备。
  • 高性能:通过高效的流水线、多级缓存和乱序执行等技术,ARM处理器在每瓦特性能上极具优势。
  • 高性价比:ARM公司本身不生产芯片,而是将其IP核(如Cortex-A, Cortex-R, Cortex-M系列)授权给其他公司(如高通、苹果、三星、NXP、ST等),这种模式极大地降低了芯片设计的门槛和成本,催生了庞大的生态系统。
  • 生态系统完善:从芯片设计、工具链(编译器、调试器)、操作系统(Linux, Android, FreeRTOS等)到海量应用,ARM拥有全球最成熟的软硬件生态系统。

第一部分:ARM嵌入式处理器核心结构

ARM处理器的结构可以看作一个精心设计的系统,包含多个关键部分。

RISC vs CISC:设计哲学

  • CISC (Complex Instruction Set Computer):复杂指令集,如x86架构,指令长短不一,功能强大,一条指令可以完成复杂操作(如MOV AX, [BX+SI]),优点是代码密度高,但硬件设计复杂,功耗高。
  • RISC (Reduced Instruction Set Computer):精简指令集,如ARM架构,指令长度固定(通常是32位),功能简单(如LDR R0, [R1]),大部分指令在单个时钟周期内完成,优点是硬件设计简单、速度快、功耗低。

核心思想:将复杂性从硬件转移到软件(编译器)上,让硬件专注于高效执行简单的指令。

ARM处理器的基本组成(以Cortex-M为例)

一个典型的ARM内核(以最常用的Cortex-M系列为例)主要由以下部分组成:

  • 核心寄存器

    arm 嵌入式处理器结构与应用基础
    (图片来源网络,侵删)
    • 通用寄存器R0 ~ R15,共16个。
      • R0 - R12:通用寄存器,用于存放数据、地址等。
      • R13 (SP)堆栈指针,指向当前栈顶,用于函数调用、局部变量存储、中断处理等。
      • R14 (LR)链接寄存器,用于保存函数返回地址,当调用一个函数时,BL指令会将下一条指令的地址存入LR
      • R15 (PC)程序计数器,指向下一条要执行的指令地址。
    • 程序状态寄存器xPSR (APSR, IPSR, EPSR的组合),包含处理器的状态信息,如:
      • N (Negative):结果为负。
      • Z (Zero):结果为零。
      • C (Carry):产生进位/借位。
      • V (oVerflow):结果溢出。
      • T (Thumb):标志位,指示当前执行的是Thumb指令(0)还是Thumb-2指令(1),Cortex-M默认只支持Thumb-2,所以此位恒为1。
  • 总线接口

    • AHB (Advanced High-performance Bus):用于连接高性能部件,如CPU核心、DMA、高速内存。
    • APB (Advanced Peripheral Bus):用于连接低速外设,如UART, I2C, SPI, GPIO等,它通过桥接器连接到AHB总线。
  • 总线矩阵

    一个片上网络,负责管理AHB总线主控(如CPU、DMA)和从设备(如Flash、SRAM、外设)之间的数据传输,避免冲突,提高并行效率。

  • 中断控制器

    arm 嵌入式处理器结构与应用基础
    (图片来源网络,侵删)
    • NVIC (Nested Vectored Interrupt Controller):这是Cortex-M系列的核心特性之一。
      • 嵌套:可以响应更高优先级的中断,打断正在执行的低优先级中断。
      • 向量:中断发生时,CPU会自动跳转到对应的中断服务程序入口,无需软件查询。
      • 优先级:支持可编程的中断优先级。
      • 低延迟:硬件中断响应非常快,适合实时应用。
  • 存储器保护单元

    在Cortex-M3/M4/M7/M33等中提供,用于定义内存区域的访问权限(如只读、读写)和缓存属性,防止程序错误地访问关键内存区域,提高系统稳定性。

  • 调试单元

    支持实时调试,可以设置断点、单步执行、查看寄存器和内存,是开发过程中不可或缺的部分。


第二部分:ARM处理器家族与应用领域

ARM根据应用场景,将处理器分为几个系列,每个系列都有其独特的定位。

系列 核心特点 典型应用 例子
Cortex-A 应用处理器
运行完整操作系统(Linux, Android)
高性能、多核、MMU/MPU
智能手机、平板电脑、数字电视、路由器 高通骁龙、苹果A系列芯片
Cortex-R 实时处理器
高确定性、快速中断响应
通常用于硬实时系统
汽车电子(ABS, ESP)、硬盘控制器、工业控制 NXP S32系列、部分TI DSP
Cortex-M 微控制器
低成本、低功耗、易于使用
专为嵌入式控制设计
无MMU,但有MPU
物联网设备、可穿戴设备、传感器、电机控制、消费电子 STM32 (意法半导体)、NXP Kinetis、TI Tiva C

重点:Cortex-M系列详解

  • Cortex-M0 / M0+

    • 定位:入门级、超低功耗。
    • 特点:最简单的内核,性能最低,但成本和功耗也最低,没有MPU和除法指令。
    • 应用:简单开关控制、小型传感器节点、价格敏感的消费电子产品。
  • Cortex-M3

    • 定位:主流实时控制。
    • 特点:在M0基础上增加了MPU、硬件除法指令,并改进了中断处理(NVIC),性能和功能达到很好的平衡。
    • 应用:工业控制、电机驱动、USB设备、医疗设备。
  • Cortex-M4 / M7

    • 定位:高性能数字信号控制。
    • 特点:在M3/M7的基础上,集成了单精度浮点运算单元SIMD(单指令多数据)技术,大大提升了数学运算能力。
    • M7:更进一步的性能提升,支持更大缓存、更宽总线,适合更复杂的信号处理。
    • 应用:电机控制(FOC算法)、音频处理、无人机、雷达信号处理。
  • Cortex-M23 / M33

    • 定位:安全与低功耗。
    • 特点:支持TrustZone®安全技术,将系统划分为安全世界和非安全世界,用于保护关键代码和数据,同时集成了CRC单元,支持ARMv8-M架构。
    • 应用:物联网网关、安全支付设备、汽车网关。

第三部分:ARM嵌入式应用基础

开发环境

  • 硬件
    • 开发板:选择一块合适的开发板是第一步,如STM32F4 Discovery, NXP FRDM-K64F等。
    • 调试器/编程器:ST-Link, J-Link, U-Link等,用于下载程序和调试。
  • 软件
    • 集成开发环境
      • Keil MDK:ARM官方推荐的IDE,非常成熟稳定,有免费版(代码量限制)。
      • IAR Embedded Workbench:功能强大的商业IDE,编译效率高。
      • STM32CubeIDE:ST官方推出的免费IDE,基于Eclipse,集成了STM32CubeMX图形化配置工具。
    • 编译器:将C/C++代码翻译成ARM汇编语言,最终生成机器码,常用的是ARM Compiler (如arm-none-eabi-gcc)。
    • 调试器:与IDE和调试器配合,用于设置断点、查看变量、单步执行等。
    • 烧录工具:将编译好的二进制文件(.hex, .bin)写入芯片的Flash中。

软件架构

一个典型的嵌入式应用程序结构如下: