1. 嵌入式系统概述

1.1 嵌入式系统定义

嵌入式系统(Embedded System)是一种以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。与通用计算机(如PC、服务器)不同,嵌入式系统被“嵌入”到宿主设备中,完成特定任务,用户通常不直接感知计算机的存在。

核心定义三要素:
  • 专用性:面向特定应用场景,非通用计算平台。
  • 可裁剪:软硬件按需配置,去除冗余。
  • 约束性:受功耗、成本、实时性、体积等严格限制。
嵌入式系统定义层次结构 嵌入式系统 以应用为中心 计算机技术为基础 软硬件可裁剪 功耗约束 成本约束 实时性约束 体积约束 可靠性

1.2 嵌入式系统组成

一个典型的嵌入式系统由硬件平台和软件系统两大部分组成,二者紧密耦合、协同工作。

层次 组成部件 典型代表 说明
硬件层 嵌入式处理器 ARM Cortex-A/M/R, RISC-V, x86 系统核心,决定运算能力与功耗
存储器 Flash, SRAM, SDRAM, EEPROM 代码存储与运行空间
外设接口 UART, SPI, I2C, GPIO, USB, Ethernet 与外部设备通信
电源管理 PMIC, LDO, DC-DC 功耗控制与电压调节
软件层 Bootloader U-Boot, Barebox, ATF 硬件初始化与系统引导
操作系统 Linux, FreeRTOS, RT-Thread 任务调度与资源管理
驱动程序 BSP, 设备驱动 硬件抽象与操作
应用程序 用户业务逻辑 实现具体功能
嵌入式系统软硬件组成架构 软件层 应用程序 操作系统内核 设备驱动程序 Bootloader 硬件层 嵌入式处理器 存储器系统 外设接口 电源

1.3 嵌入式系统特点

嵌入式系统与通用计算机系统相比,具有以下显著特点:

特点 描述 对Bootloader的影响
实时性 必须在规定时间内响应外部事件 Bootloader需快速完成初始化,减少启动延迟
资源受限 CPU主频低、内存小、存储空间有限 Bootloader代码需精简高效,占用极小空间
低功耗 电池供电设备对功耗极其敏感 Bootloader需支持时钟门控、休眠唤醒
高可靠性 无人值守运行,故障容忍度低 Bootloader需具备看门狗、校验、恢复机制
专用性强 软硬件针对特定应用定制 Bootloader需适配特定板级硬件配置
软硬件协同 软硬件紧密耦合,不可分割 Bootloader需深度操作寄存器与硬件时序
💡 学习提示:嵌入式系统的资源受限特性是理解Bootloader设计的关键出发点。U-Boot之所以采用“SPL(Secondary Program Loader)+ U-Boot proper”的两阶段启动方式,正是为了在有限的片上SRAM中完成初始加载。

1.4 嵌入式系统应用领域

嵌入式系统已渗透到国民经济和日常生活的各个领域,以下是主要应用场景:

  • 消费电子:智能手机、智能手表、机顶盒、游戏机、数码相机。
  • 工业控制:PLC、工业机器人、数控机床、数据采集系统。
  • 汽车电子:发动机控制单元(ECU)、ADAS、车载信息娱乐系统、T-Box。
  • 医疗设备:心脏起搏器、CT机、便携式监护仪、血糖仪。
  • 航空航天:飞行控制系统、卫星通信、导航设备。
  • 物联网:智能家居网关、传感器节点、边缘计算设备。
  • 网络通信:路由器、交换机、基站、光模块。
嵌入式系统主要应用领域 嵌入式系统 消费电子 工业控制 汽车电子 医疗设备 航空航天 物联网 网络通信 智能家居

1.5 嵌入式系统发展趋势

当前嵌入式系统正朝着以下方向快速发展,这些趋势直接影响Bootloader的设计与移植策略:

趋势 具体表现 对Bootloader的挑战
多核异构 ARM big.LITTLE、Cortex-A + Cortex-M + DSP组合 需支持多核启动、核间通信、电源域管理
AI边缘计算 NPU集成、端侧推理、模型部署 Bootloader需初始化NPU时钟与内存
功能安全 ISO 26262(汽车)、IEC 61508(工业) 需支持安全启动、固件校验、双备份恢复
虚拟化 Hypervisor、多OS共存、容器化 Bootloader需加载EL2/EL3固件
RISC-V生态 开源指令集架构快速崛起 Bootloader需新增RISC-V平台支持
OTA升级 远程固件更新、A/B分区切换 Bootloader需支持AB系统、回滚机制
⚠️ 重要提醒:多核异构架构已成为高端嵌入式SoC的主流方案。以ARM Cortex-A72(应用核)+ Cortex-M4(控制核)的组合为例,Bootloader需要分别初始化两个核的异常向量表、MMU和时钟域,并确保主核启动时从核处于复位等待状态。这是U-Boot移植中最容易出错的环节之一。
嵌入式系统发展趋势与Bootloader演进 多核异构 AI边缘计算 功能安全 RISC-V生态 多核启动 + PSCI NPU时钟/内存初始化 安全启动 + 固件校验 新增RISC-V平台支持

1.6 嵌入式系统与Bootloader的关系

Bootloader是嵌入式系统启动流程中的第一个软件组件,承担着从硬件复位到操作系统启动之间的桥梁作用。理解嵌入式系统的整体架构,是掌握Bootloader设计与移植的前提。

Bootloader在嵌入式系统中的核心职责:
  1. 硬件初始化:设置时钟、配置DDR、初始化串口等外设。
  2. 内存布局:建立页表、使能MMU(可选)、规划内存空间。
  3. 镜像加载:从Flash/网络/存储设备读取OS内核到内存。
  4. 启动参数传递:向内核传递设备树(DTB)、命令行参数。
  5. 安全校验:验证镜像签名,防止篡改。
  6. 恢复机制:启动失败时进入恢复模式或备用系统。