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、加密引擎、视频编解码器。
提示: 嵌入式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 系统启动流程
- 上电复位: CPU从复位向量地址(通常映射到ROM或Flash)开始执行。
- Bootloader第一阶段(SPL): 初始化时钟、DDR控制器,加载第二阶段Bootloader到RAM。
- Bootloader第二阶段(U-Boot): 初始化更多外设(串口、网络、存储),从Flash/网络加载内核和设备树。
- 内核解压与启动: 内核自解压,初始化子系统,挂载根文件系统。
- 用户空间初始化: 内核启动
/sbin/init(PID=1),根据/etc/inittab或systemd启动服务。
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 + 低功耗蓝牙 |
趋势: 随着RISC-V架构的兴起和AIoT(人工智能物联网)的发展,嵌入式Linux正在向更小、更实时、更智能的方向演进。Yocto/Buildroot等构建工具使得定制化Linux系统更加高效。
本章小结
- 嵌入式系统是专用、资源受限、高可靠的计算机系统,与通用PC有本质区别。
- 嵌入式Linux由Bootloader + 内核 + 根文件系统三大部分组成,启动流程清晰固定。
- 典型应用覆盖IoT、工控、消费电子三大领域,每个领域对内核配置和系统构建有不同侧重点。
- 后续章节将深入讲解内核配置选项、设备树编写、驱动开发、系统构建工具等核心技能。