1. 嵌入式Linux系统概述

大家好,我是你们的讲师。做了十几年BSP,经手的板子从ARM9到Cortex-A76,从单片机到多核应用处理器,踩过的坑确实不少。今天咱们先聊聊基础——嵌入式系统到底是什么?Linux凭什么能在这个领域站稳脚跟?各种处理器架构又该怎么选?

嗯,这些概念听起来有点枯燥,但它们是后续所有移植工作的地基。地基没打好,后面盖楼会歪的。

1.1 嵌入式系统的定义

嵌入式系统,说白了就是“专用于特定任务的计算机系统”。它不像你的PC或手机那样通用,而是被“嵌入”到某个设备里,只干一件事或一类事。

举个例子:你家的智能电饭煲、路由器、汽车里的ECU、工厂里的PLC,甚至你手里的遥控器——里面都藏着一个嵌入式系统。

嵌入式系统的核心特征:

  • 任务专用:软硬件针对特定功能裁剪,不干多余的事
  • 资源受限:CPU主频低、内存小、存储空间有限
  • 实时性要求:很多场景需要在规定时间内响应(比如安全气囊)
  • 低功耗:电池供电的设备尤其看重功耗
  • 高可靠性:一旦部署,可能几年不重启

我在项目中遇到过最典型的例子:一个工业数据采集器,要求7×24小时不间断运行,内存只有64MB,CPU主频400MHz。这种环境下,你不可能跑一个完整的Ubuntu桌面——必须裁剪、优化、定制。

1.2 Linux在嵌入式领域的优势

为什么选Linux?我刚开始做嵌入式那会儿,主流还是VxWorks和uC/OS。后来Linux慢慢渗透进来,现在几乎成了中高端嵌入式平台的事实标准。

我个人习惯把Linux的优势归纳为四点:

优势 说明 我的体会
开源免费 GPL协议,无授权费,代码可见 曾经帮客户省下几十万的VxWorks授权费
生态丰富 驱动、文件系统、网络协议栈、中间件一应俱全 大部分驱动不用从头写,改改就能用
可裁剪性 从几百KB的微内核到完整发行版都能做 我做过最小2MB的根文件系统,跑Web服务器没问题
社区支持 遇到问题,邮件列表、论坛、GitHub上基本能找到答案 瑞芯微的BSP很多问题就是靠社区解决的

避坑指南: 我曾经在一个项目里盲目追求“最新内核”,结果某个关键驱动在5.10上跑不稳定,回退到4.19才解决问题。我的建议是:选稳定版LTS内核,不要追新。瑞芯微官方BSP通常基于某个固定内核版本,跟着走最省心。

你想想看,如果产品需要网络功能、文件系统、多线程、进程管理——这些Linux都原生支持。换作裸机或RTOS,你得自己实现或移植第三方库,工作量完全不是一个量级。

1.3 主流嵌入式处理器架构对比

做嵌入式Linux移植,选架构是第一关。目前主流的有ARM、RISC-V、MIPS、x86。我重点讲前两个,因为瑞芯微平台用的是ARM。

为什么会这样?因为ARM在移动端和嵌入式领域积累了近20年的生态优势。瑞芯微、全志、联发科、海思——这些主流SoC厂商几乎清一色ARM。

架构 特点 典型应用 我的评价
ARM 低功耗、高性能、生态最成熟 手机、平板、IoT、工业控制 嵌入式Linux首选,资料最多
RISC-V 开源指令集、灵活、新兴 IoT、AI加速器、定制芯片 未来可期,但生态还在建设中
MIPS 经典架构、授权费低 路由器、网关、老式设备 逐渐边缘化,不建议新项目选
x86 高性能、功耗高 工业PC、边缘服务器 适合需要兼容PC软件的场景

注意: 选架构不只是看性能参数。更要看BSP支持度和社区活跃度。我曾经接手一个MIPS平台的项目,光是找网卡驱动就花了两周——因为用的人太少,资料几乎为零。ARM平台同样的工作,半天搞定。

瑞芯微的RK3568、RK3588系列都是ARM Cortex-A架构。Cortex-A系列分A53、A55、A72、A76等,核心区别是性能和功耗的取舍。A53主打低功耗,A76追求高性能。瑞芯微经常用“大核+小核”的big.LITTLE架构,比如RK3588就是4个A76+4个A55。

我个人习惯在选型时先看三点:

  1. 官方BSP是否支持——瑞芯微的SDK做得不错,但不同芯片的完善度有差异
  2. 内存和存储接口——DDR3还是DDR4?eMMC还是NAND?这直接影响系统性能
  3. 外设接口——你需要几个UART?有没有CAN?USB3.0够不够?

嗯,这里要注意:不要只看芯片的“理论性能”。实际项目中,BSP的成熟度往往比芯片本身的性能更重要。一个驱动不全的芯片,性能再强也白搭。

1.4 嵌入式Linux系统架构全景

为了让你对整个系统有个直观认识,我画了一张架构图。这张图会贯穿我们整个课程。

嵌入式Linux系统架构全景 应用层 (Application Layer) 用户程序 · Qt/GTK · Web服务器 · 业务逻辑 系统库层 (System Libraries) glibc/musl · OpenSSL · libpthread · ALSA · libusb Linux内核层 (Kernel) 进程调度 · 内存管理 · 文件系统 · 网络协议栈 · 设备驱动 Bootloader层 (U-Boot / ATF) 硬件层 (SoC · DDR · eMMC · 外设) 课程覆盖范围 ✅ Bootloader移植 ✅ 内核配置与编译 ✅ 设备树编写 ✅ 根文件系统构建

这张图展示了嵌入式Linux系统的分层结构。从上到下依次是:应用层、系统库层、内核层、Bootloader层、硬件层。我们这门课主要聚焦在Bootloader移植、内核配置与编译、设备树编写、根文件系统构建这四个核心环节。

说白了,就是让你学会怎么把Linux“塞”进一块瑞芯微的板子里,让它能正常启动、跑应用。

1.5 本章小结

这一章我们聊了三个核心问题:

  • 嵌入式系统是什么——专用、受限、可靠、低功耗
  • Linux为什么适合嵌入式——开源、生态好、可裁剪、社区强
  • 主流架构怎么选——ARM是当前最优解,RISC-V是未来方向

我记得刚入行时,带我的老工程师说过一句话:“做嵌入式Linux,其实就是跟硬件和内核谈恋爱——你得了解它的脾气,才能让它听你的话。” 嗯,接下来的29章,咱们就一起把这场“恋爱”谈好。