1. 嵌入式系统概述

1.1 嵌入式系统定义

嵌入式系统(Embedded System)是以应用为中心、以计算机技术为基础,软硬件可裁剪,适用于对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。与通用PC不同,嵌入式系统通常作为更大系统的一部分,执行预定义的专用任务。

核心特征:
  • 专用性:面向特定应用场景,非通用计算平台
  • 资源受限:CPU主频、内存、存储空间通常远小于PC
  • 实时性要求:多数嵌入式系统需在确定时间内响应外部事件
  • 低功耗设计:电池供电场景下功耗是关键约束
  • 高可靠性:无人值守运行,需具备长时间稳定工作能力
  • 软硬件协同:Bootloader、内核、驱动、应用与硬件紧密耦合
嵌入式系统典型组成框图 应用软件层(Application) 中间件 / 协议栈 / 文件系统 操作系统内核(Linux / RTOS / 裸机) Bootloader(引导加载程序) 硬件平台(ARM SoC / 外设 / 存储器)

1.2 ARM处理器家族

ARM(Advanced RISC Machines)是全球最广泛使用的嵌入式处理器架构,采用精简指令集(RISC)设计。ARM处理器按应用场景分为三大系列:Cortex-A、Cortex-R 和 Cortex-M,分别面向高性能应用、实时控制和微控制器领域。

系列 全称 架构位数 典型应用 操作系统
Cortex-A Application 32/64位 智能手机、平板、服务器、树莓派 Linux、Android、Windows
Cortex-R Real-time 32位 汽车制动、硬盘控制器、工业PLC RTOS、裸机
Cortex-M Microcontroller 32位 IoT终端、传感器、电机控制 FreeRTOS、裸机
课程聚焦:本课程主要面向 Cortex-A 系列处理器(如 Cortex-A7/A8/A9/A53/A72),因为只有 Cortex-A 系列才能完整运行 Linux 内核,并涉及复杂的 Bootloader(U-Boot)启动流程和设备树移植。

1.3 Cortex-M / A / R 系列深度对比

三大系列在指令集、内存管理、中断响应、功耗和生态上存在显著差异,直接决定了它们在嵌入式系统中的角色分工。

对比维度 Cortex-M Cortex-R Cortex-A
指令集 ARMv6-M / ARMv7-M / ARMv8-M ARMv7-R / ARMv8-R ARMv7-A / ARMv8-A
MMU 无 可选(MPU) 必备(MMU)
Cache 无或极简 有(L1) 有(L1/L2/L3)
中断延迟 极低(6~12周期) 低(<20周期) 较高(>50周期)
功耗 极低(mW级) 低 较高(W级)
典型主频 16~400 MHz 200~800 MHz 500 MHz ~ 3 GHz
运行Linux 不支持 有限支持 完全支持
代表芯片 STM32F4, nRF52 TI TMS570, NXP S32 i.MX6, RK3399, Exynos
ARM Cortex 系列定位三角图 Cortex-A 高性能 Cortex-R 实时性 Cortex-M 低功耗 本课程核心关注区域 性能 ▲ 功耗 ▲ 实时性 ▼

1.4 典型嵌入式系统组成

一个完整的嵌入式系统(以ARM Cortex-A + Linux为例)由以下层次构成,每一层都承担着不可替代的职责:

  1. 硬件平台层:ARM SoC(含CPU核心、GPU、内存控制器、外设控制器)、DDR内存、NAND/eMMC/SPI Flash存储、以太网/USB/UART/I2C/SPI等外设接口。
  2. Bootloader层:上电后最先执行的固件,负责初始化硬件、加载操作系统内核到内存并传递启动参数。典型代表:U-Boot、ATF、SPL。
  3. 操作系统内核层:Linux内核提供进程调度、内存管理、文件系统、网络协议栈和硬件抽象。内核通过设备树(Device Tree)感知硬件拓扑。
  4. 设备驱动层:位于内核中,直接操作硬件寄存器,为上层提供统一接口。驱动与设备树中的节点绑定。
  5. 中间件层:包括C库(glibc/musl)、网络协议栈(lwIP)、文件系统(YAFFS/UBIFS)、图形栈(Qt/GTK)等。
  6. 应用层:用户业务逻辑,如数据采集、通信控制、人机交互界面。
ARM Cortex-A 嵌入式系统完整软件栈 应用层:用户程序、业务逻辑、GUI 中间件层:C库 / 协议栈 / 文件系统 / 图形框架 系统调用接口(System Call Interface) Linux 内核 进程调度 | 内存管理 | 网络栈 | VFS | 设备驱动 设备树(Device Tree)— 硬件描述 Bootloader(U-Boot / ATF / SPL) ARM Cortex-A SoC + DDR + Flash + 外设
工程要点:在嵌入式Linux开发中,Bootloader 和 设备树 是连接硬件与内核的关键桥梁。Bootloader负责初始化DDR、时钟、存储控制器,并将设备树二进制(DTB)传递给内核。设备树描述了CPU数量、内存地址、外设寄存器基址、中断号、时钟频率等硬件信息,内核不再硬编码这些参数。本课程后续章节将深入拆解这两个核心环节的移植与调试方法。