ARM 学习笔记:从入门到理解嵌入式系统核心

一、嵌入式系统的基本概念

嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪的专用计算机系统。它的设计目标是满足特定场景下的功能、可靠性、成本、体积和功耗要求。

一个典型的嵌入式系统可以分为三层:

  • 应用层(APS):直接面向用户的业务逻辑,比如智能家居里的灯光控制 APP。
  • 操作系统(OS):管理硬件资源,提供任务调度、内存管理等核心功能。
  • 硬件层:由 SoC、存储器、外设等组成,是整个系统的物理基础。

我用的开发板是正点原子的iMX6ULL,它的核心是 ARM Cortex-A7 架构,属于典型的嵌入式开发平台。


二、核心硬件与处理器

1. 计算机硬件系统组成

任何计算机的硬件都可以拆解为五大基本单元:

  • 运算器:负责算术和逻辑运算
  • 控制器:指挥协调各个部件工作
  • 存储器:分为内存(RAM)和外存(Flash 等)
  • 输入设备:比如按键、触摸屏
  • 输出设备:比如显示屏、LED 灯

2. 常见处理器类型

  • CPU:通用型处理器,负责复杂的逻辑控制和计算。
  • GPU:图形处理器,专门处理图像渲染。
  • MPU:微处理器,偏向处理能力,常用于高性能嵌入式场景。
  • MCU:微控制器,集成度高,偏向控制,比如 STM32 系列。
  • DSP:数字信号处理器,专门用于高强度数学运算,比如音频处理。
  • SoC:片上系统,把 CPU、GPU、外设控制器等集成在一颗芯片上,是现代嵌入式设备的主流选择。

3. CISC vs RISC

  • CISC(复杂指令集):比如 x86 架构,指令集丰富,单条指令功能强大,但硬件复杂度高。
  • RISC(精简指令集):比如 ARM 架构,指令集精简,执行效率高,功耗更低,非常适合嵌入式场景。

三、ARM 架构核心知识

1. ARM 家族与指令集

ARM 处理器家族非常庞大,常见的有:

  • 经典 ARM:ARM1~ARM11
  • Cortex 系列 :
    • Cortex-A:面向高性能应用(如手机、开发板)
    • Cortex-R:面向实时控制场景(如汽车电子)
    • Cortex-M:面向微控制器(如 STM32)

指令集版本也从 V1 发展到了 V9,我学习的 Cortex-A7 使用的是 ARMv7 架构,是 32 位的,指令长度为 4 字节。

2. 寄存器与核心模块

  • 通用寄存器:R0~R15,其中 R13 是栈指针(SP),R14 是链接寄存器(LR),R15 是程序计数器(PC)。
  • 状态寄存器:CPSR(当前程序状态寄存器)和 SPSR(备份程序状态寄存器),用来记录 CPU 的运行状态。
  • MMU(内存管理单元):负责虚拟地址到物理地址的映射,是操作系统实现多任务和内存保护的基础。
  • Cache:高速缓存,用来缓解 CPU 和内存之间的速度差距,分为指令 Cache 和数据 Cache。

四、存储器与内存布局

1. RAM 与 ROM

  • RAM(随机访问存储器):易失性存储,断电后数据丢失,但读写速度快,作为系统运行时的内存。
  • ROM(只读存储器):非易失性存储,断电后数据不丢失,用来存放启动代码和固件。

2. 程序的内存布局

一个运行中的程序在内存中会被划分为多个区域:

  • 代码段(.text):存放编译后的机器指令。
  • 数据段(.data):存放已初始化的全局变量。
  • BSS 段(.bss):存放未初始化的全局变量,程序启动时会被清零。
  • 堆(Heap):动态内存分配区域,由程序员手动管理(malloc/free)。
  • 栈(Stack):存放函数的局部变量和调用上下文,由系统自动管理。

3. 栈的工作原理

栈是一种 "后进先出"(LIFO)的数据结构。当函数调用发生时,系统会为该函数创建一个栈帧,里面包含:

  • 函数的局部变量
  • 函数的返回地址
  • 保存的寄存器值

栈的增长方向是从高地址到低地址,栈顶由 SP 寄存器指向。


五、总线与外设

1. 总线结构

嵌入式系统通过总线连接 CPU、内存和外设,常见的总线有:

  • AHB(高级高性能总线):连接高性能设备,如 CPU、内存控制器。
  • APB(先进外设总线):连接低速外设,如 UART、GPIO、I2C 等。

2. 常见外设

  • GPIO(通用输入输出):最基础的外设,可以用来控制 LED、读取按键状态等。
  • UART(通用异步收发器):用于串口通信,比如调试信息输出。
  • PWM(脉冲宽度调制):可以用来控制电机转速、LED 亮度等。

六、流水线技术

为了提高 CPU 的执行效率,ARM 采用了流水线技术。简单来说,就是把一条指令的执行过程拆分成多个阶段(比如预取、译码、执行),让不同的指令在不同的阶段并行执行。

相关推荐
Rabitebla2 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
小lu飞3 小时前
2026小红书小工具怎么制作:纯前端 ZIP 打包、沙箱限制与笔记挂载流程
前端·笔记·ai·ai编程
无心水6 小时前
24、系统架构师论文写作专题 核心考点与学习笔记
笔记·学习·系统架构·架构师·安全架构·软考架构师·软考系统架构设计师
蒸蒸yyyyzwd7 小时前
邓明 Agent 系统面试-意图识别学习笔记
笔记·学习
Zhao-Jichao10 小时前
AI Prompting for Everyone 课程笔记 - P21 总结 Conclusion
人工智能·笔记
欢欢李10 小时前
【LTE L3 笔记 05】LTE同步信号
笔记·无线通信·物理层·lte·空口协议
La Pulga12 小时前
【FreeRTOS源码学习笔记】空闲任务与阻塞延时
笔记·mcu·学习·嵌入式·freertos·实时操作系统
蒸蒸yyyyzwd12 小时前
秋招学习笔记 day106
笔记·学习
小李不想当小白13 小时前
WDG看门狗(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
欢欢李13 小时前
【LTE L3 笔记 04】LTE帧结构
笔记·无线通信·物理层·lte·空口协议