1. 嵌入式系统概述
1.1 嵌入式系统定义
嵌入式系统(Embedded System)是以应用为中心、以计算机技术为基础,软硬件可裁剪,适用于对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。与通用PC不同,嵌入式系统通常作为更大系统的一部分,执行预定义的专用任务。
核心特征:
- 专用性:面向特定应用场景,非通用计算平台
- 资源受限:CPU主频、内存、存储空间通常远小于PC
- 实时性要求:多数嵌入式系统需在确定时间内响应外部事件
- 低功耗设计:电池供电场景下功耗是关键约束
- 高可靠性:无人值守运行,需具备长时间稳定工作能力
- 软硬件协同:Bootloader、内核、驱动、应用与硬件紧密耦合
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 |
1.4 典型嵌入式系统组成
一个完整的嵌入式系统(以ARM Cortex-A + Linux为例)由以下层次构成,每一层都承担着不可替代的职责:
- 硬件平台层:ARM SoC(含CPU核心、GPU、内存控制器、外设控制器)、DDR内存、NAND/eMMC/SPI Flash存储、以太网/USB/UART/I2C/SPI等外设接口。
- Bootloader层:上电后最先执行的固件,负责初始化硬件、加载操作系统内核到内存并传递启动参数。典型代表:U-Boot、ATF、SPL。
- 操作系统内核层:Linux内核提供进程调度、内存管理、文件系统、网络协议栈和硬件抽象。内核通过设备树(Device Tree)感知硬件拓扑。
- 设备驱动层:位于内核中,直接操作硬件寄存器,为上层提供统一接口。驱动与设备树中的节点绑定。
- 中间件层:包括C库(glibc/musl)、网络协议栈(lwIP)、文件系统(YAFFS/UBIFS)、图形栈(Qt/GTK)等。
- 应用层:用户业务逻辑,如数据采集、通信控制、人机交互界面。
工程要点:在嵌入式Linux开发中,Bootloader 和 设备树 是连接硬件与内核的关键桥梁。Bootloader负责初始化DDR、时钟、存储控制器,并将设备树二进制(DTB)传递给内核。设备树描述了CPU数量、内存地址、外设寄存器基址、中断号、时钟频率等硬件信息,内核不再硬编码这些参数。本课程后续章节将深入拆解这两个核心环节的移植与调试方法。