Linux内核配置与嵌入式Linux系统构建 - 第1节

1.1 嵌入式系统定义

嵌入式系统是以应用为中心、以计算机技术为基础,软硬件可裁剪,适用于对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。与通用PC不同,嵌入式系统通常作为“智能核心”嵌入到更大的设备中,用户一般不会意识到其存在。

核心特征: 专用性、资源受限、实时性要求、高可靠性、低功耗、成本敏感。

1.1.1 嵌入式系统 vs 通用系统

对比维度 嵌入式系统 通用计算机系统
设计目标 面向特定应用,软硬件定制 面向通用计算,兼容各类软件
资源约束 CPU主频低、内存小、存储有限 高性能CPU、大内存、大容量硬盘
功耗要求 严格(电池供电场景常见) 相对宽松(市电供电为主)
实时性 硬实时或软实时要求 通常无硬实时要求
可靠性 极高(无人值守、长期运行) 较高(可人工干预重启)
成本 极度敏感(批量大) 相对不敏感
典型形态 MCU/MPU板级系统、SoC 台式机、笔记本、服务器

1.1.2 嵌入式系统的硬件组成

  • 嵌入式处理器: ARM Cortex-A/R/M系列、RISC-V、MIPS、x86(Atom)等。
  • 存储器: SRAM、DRAM(SDRAM/DDR)、Flash(NOR/NAND/eMMC)、SD卡。
  • 外设接口: GPIO、UART、I2C、SPI、USB、Ethernet、CAN、PCIe、MIPI等。
  • 专用模块: GPU、NPU、DSP、FPGA、加密引擎、视频编解码器。
嵌入式系统硬件典型架构 嵌入式处理器 (CPU/SoC) 程序存储器 (Flash) 数据存储器 (RAM) 外设接口 (UART/I2C/SPI) 网络接口 电源管理 (PMIC) 时钟/复位电路
提示: 嵌入式Linux系统通常运行在带有MMU(内存管理单元)的处理器上,如ARM Cortex-A系列。Cortex-M系列MCU一般运行RTOS(如FreeRTOS)或裸机程序,而非完整Linux。

1.2 嵌入式Linux的组成

一个完整的嵌入式Linux系统由三大核心软件组件构成:Bootloader(引导加载程序)、Linux内核(Kernel)和根文件系统(Root Filesystem)。三者缺一不可,协同工作才能让硬件“跑起来”。

1.2.1 三大组件概述

组件 功能 典型代表 存储位置
Bootloader 硬件初始化、加载内核到内存、传递启动参数 U-Boot、Barebox、GRUB Flash起始扇区(如SPL+U-Boot)
Linux内核 进程调度、内存管理、设备驱动、网络协议栈 Linux Kernel (v6.x) Flash分区(如boot分区)
根文件系统 提供用户空间运行环境(init、库、应用、配置) BusyBox、Buildroot、Yocto Flash分区(如rootfs分区)

1.2.2 系统启动流程

  1. 上电复位: CPU从复位向量地址(通常映射到ROM或Flash)开始执行。
  2. Bootloader第一阶段(SPL): 初始化时钟、DDR控制器,加载第二阶段Bootloader到RAM。
  3. Bootloader第二阶段(U-Boot): 初始化更多外设(串口、网络、存储),从Flash/网络加载内核和设备树。
  4. 内核解压与启动: 内核自解压,初始化子系统,挂载根文件系统。
  5. 用户空间初始化: 内核启动/sbin/init(PID=1),根据/etc/inittab或systemd启动服务。
嵌入式Linux系统启动流程 上电复位 ROM Boot / SPL Bootloader U-Boot 初始化 Linux内核 解压 + 初始化 用户空间 各阶段关键动作: 1. 上电复位 → CPU从固定地址取指,执行ROM代码,初始化时钟和DDR。 2. Bootloader → 加载设备树(dtb)和内核镜像(zImage/Image)到内存,设置启动参数。 3. Linux内核 → 自解压(若压缩),初始化调度器、内存管理、中断、驱动。 4. 挂载根文件系统 → 内核根据root=参数挂载rootfs(ext4/squashfs/NFS)。 5. 启动init进程 → 执行/sbin/init,读取/etc/inittab,启动shell或服务。 6. 用户空间就绪 → 应用程序开始运行,系统进入正常工作状态。

1.2.3 根文件系统内容

根文件系统是Linux用户空间的基石,包含以下关键目录和文件:

  • /bin, /sbin: 基本用户命令和系统管理命令(由BusyBox提供)。
  • /etc: 系统配置文件(inittab、fstab、init.d/脚本)。
  • /lib: 共享库(glibc/musl/uclibc)和内核模块。
  • /dev: 设备节点(静态或由devtmpfs/mdev/udev动态管理)。
  • /proc, /sys: 虚拟文件系统,提供内核和硬件信息接口。
  • /tmp, /var: 临时文件和运行时数据(通常挂载为tmpfs)。
注意: 嵌入式根文件系统必须精简。一个最小可运行的BusyBox根文件系统可以小到2MB以内(含glibc库)。使用musl libc或uclibc可以进一步缩小体积。

1.3 典型应用场景

嵌入式Linux凭借其开源、稳定、驱动丰富、网络协议栈完善等优势,已广泛应用于以下三大领域。

1.3.1 物联网 (IoT)

子领域 典型设备 硬件平台 关键需求
智能家居 智能音箱、网关、摄像头 ARM Cortex-A7/A35 低功耗、WiFi/BLE、音视频处理
工业物联网 数据采集终端、边缘网关 ARM Cortex-A8/A9、RISC-V 实时性、Modbus/CAN、4G/5G
智慧城市 智能路灯、环境监测站 ARM Cortex-A5、ESP32-S3 远程升级(OTA)、低功耗、传感器接口

1.3.2 工业控制 (工控)

  • PLC/DCS控制器: 运行PREEMPT_RT实时内核,控制周期可达微秒级。
  • 人机界面(HMI): 基于Qt/GTK的触摸屏界面,运行在ARM或x86嵌入式主板上。
  • 运动控制/机器人: 结合EtherCAT、PROFINET等实时以太网协议。
  • 数据采集与监控(SCADA): 支持多协议转换(Modbus TCP/RTU、OPC UA)。

1.3.3 消费电子

产品类别 代表产品 处理器 软件栈特点
智能电视/机顶盒 Android TV、IPTV盒子 ARM Cortex-A53/A55 Android/Linux + DRM + 视频解码
车载信息娱乐 IVI系统、数字仪表盘 ARM Cortex-A72 + GPU AGL (Automotive Grade Linux)、Wayland
网络设备 路由器、NAS、WiFi AP MIPS/ARM/Realtek OpenWrt、LEDE、内核网络优化
智能穿戴 智能手表、AR眼镜 ARM Cortex-A5/M4 Zephyr/Linux + 低功耗蓝牙
嵌入式Linux典型应用场景 物联网 (IoT) 智能家居 · 工业IoT 智慧城市 · 边缘计算 工业控制 PLC · HMI · 机器人 SCADA · 实时以太网 消费电子 智能电视 · 车载IVI 路由器 · 智能穿戴 共同基础:嵌入式Linux + 内核配置 + 驱动开发 Bootloader · 内核裁剪 · 根文件系统 · 设备树 · 交叉编译
趋势: 随着RISC-V架构的兴起和AIoT(人工智能物联网)的发展,嵌入式Linux正在向更小、更实时、更智能的方向演进。Yocto/Buildroot等构建工具使得定制化Linux系统更加高效。

本章小结

  • 嵌入式系统是专用、资源受限、高可靠的计算机系统,与通用PC有本质区别。
  • 嵌入式Linux由Bootloader + 内核 + 根文件系统三大部分组成,启动流程清晰固定。
  • 典型应用覆盖IoT、工控、消费电子三大领域,每个领域对内核配置和系统构建有不同侧重点。
  • 后续章节将深入讲解内核配置选项、设备树编写、驱动开发、系统构建工具等核心技能。